Gru:一個單節點支持10W+的長連接集群解決方案

jopen 9年前發布 | 14K 次閱讀 Gru
 

Github

項目名稱為Gru,取自《卑鄙的我》

項目地址: https://github.com/sumory/gru

示例-web chat: https://github.com/sumory/gru-example

先上圖

  • 示例項目是一個IM應用,基于Node.js和socket.io(協議實現由 Gru 提供),截圖:

    • Gru:一個單節點支持10W+的長連接集群解決方案

    • Gru:一個單節點支持10W+的長連接集群解決方案

  • Gru集群提供狀態監控,該模塊使用Node.js實現

    • Gru:一個單節點支持10W+的長連接集群解決方案

    • Gru:一個單節點支持10W+的長連接集群解決方案

介紹

其實集群的主要實現是基于Java的,也用了大量的中間件,node.js實現了監控和示例項目,但稍微上點規模的項目都不是一個門語言能cover的,所以有興趣的同學還是可以看下這個項目的。詳情見Github,大致介紹如下:

Gru

Gru是一個長連接服務解決方案,可用于各種類型的實時交互應用。

  • 支持單點部署和集群模式部署

  • 采用 socket.io 協議

  • 各模塊均支持水平擴展

  • 單節點可服務10W+以上長連接,具體為在不斷發消息的情況下(1000條/秒),單長連接服務節點支持的穩定連接數量在10W+(8核16G)

  • 節點間通訊支持多種方式:進程內、redis、rocketmq

安裝:

Gru-example

gru-example基于Gru的示例項目,即時應用最典型的代表就是IM,這個示例是一個基于Gru的web聊天應用。

安裝:

  • 需首先配置好Gru集群

    • 集群配置詳見Gru文檔

    • 若不需要集群,Gru項目只需要部署一個模塊(spear)即可

  • 本示例是一個Node.js項目,需先安裝 Node.js

  • clone下本示例

    • npm install相關依賴

    • 配置文件在config目錄下,特別注意spearNode配置,此配置為一個可用的spear節點

    • 運行node app.js,默認會加載config/dev.js配置文件

其它

  • 這個項目的前身是我原來的一個開源項目,后來用于公司內部某系統,就關了Github。最近抽空剝離了一些業務代碼,內部實現改得更為通用后重新開放出來,支持點對點和廣播消息。

  • 由于Gru是按照集群設計的,所以架構上分了好幾個模塊,但若是對于十萬級別的長連接來說,單純一個長連接節點(Gru的長連接服務模塊叫spear,詳見代碼目錄下的spear目錄)即可支持。感興趣的同學可拿spear自行改造。

  • gru-example提供了一個如何使用gru構建實時應用的示例,若要二次開發,集成用戶系統進來,可在類似于gru-example的模塊中實現。

最后,歡迎star和fork.

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!