項目名稱爲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是一個長鏈接服務解決方案,可用於各類類型的實時交互應用。redis
支持單點部署和集羣模式部署npm
採用socket.io協議架構
各模塊均支持水平擴展app
單節點可服務10W+以上長鏈接,具體爲在不斷髮消息的狀況下(1000條/秒),單長鏈接服務節點支持的穩定鏈接數量在10W+(8核16G)socket
節點間通信支持多種方式:進程內、redis、rocketmqsocket.io
安裝:
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.