2011-12-13 50 views
0

我需要從Java應用程序發出一個node.js服務器(任何websocket服務器都會這樣做),該應用程序對每個MySQL操作進行實時運行(並且時間敏感)。從Java/MySQL向node.js發送信號的最有效方式是什麼?

我在尋找最好的選擇,到目前爲止想出了:

一)關於MySQL觸發
的MySQL會那麼,在它自己的,信號WebSocket的服務器推更新到客戶端。

B)的Java應用程序呼叫服務器
的Java將信號的node.js /不管推新數據到客戶端。

我會假設讓MySQL處理信號的工作量node.js對於Java應用程序(對時間敏感)會更有效。

還有第三種方法嗎?比下面描述的那些更好嗎?

回答

0

首先,您必須確定哪個實體/活動是邏輯生成的信號。它真的是MySQL上的插入操作還是Java應用程序執行的插入操作。是否有任何其他應用程序正在修改MySQL DB?如果沒有,我會親自將所有事件發佈到node.js服務器將要偵聽的隊列(另一個進程)。使用具有Java和Node.js客戶端的隊列在這裏會有所幫助。這樣,數據庫上的負載將被最小化,並且架構將獨立於DB /應用程序(假設您將所有使用MySQL的應用程序的更新發布到隊列中)。

一個這樣的隊列的例子是Beanstalkd

2

您應該使用類似RedisZeroMQ的東西來創建Java和Node之間的通信通道。 Java會通過該通道發送一條消息,Node會攔截它並推送給MySQL,當完成時它會迴應。

對我來說這似乎很好,因爲Java不會等待任何響應,並且因爲Node和MySQL之間的異步通信(帶有回調和觸發器)。

相關問題