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

Github

項目名稱爲Gru,取自《卑鄙的我》
項目地址: https://github.com/sumory/gru
示例-web chat:https://github.com/sumory/gru-examplenode


先上圖

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

    • 私聊

    • 羣聊

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

    • 客戶端模擬

    • 監控

介紹

其實集羣的主要實現是基於Java的,也用了大量的中間件,node.js實現了監控和示例項目,但稍微上點規模的項目都不是一個門語言能cover的,因此有興趣的同窗仍是能夠看下這個項目的。詳情見Github,大體介紹以下:web

Gru

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

  • 支持單點部署和集羣模式部署npm

  • 採用socket.io協議架構

  • 各模塊均支持水平擴展app

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

  • 節點間通信支持多種方式:進程內、redis、rocketmqsocket.io

安裝:

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.

相關文章
相關標籤/搜索