github: http://github.com/brewlin/im-...
im-cloud 基於swoole 原生協程構建分佈式推送中間件
基於
swoole
原生協程構建商業化即時推送im服務中間件,不進行業務處理,單獨做爲中間件使用,可彈性擴充節點增長性能處理.不依賴外部框架,核心代碼爲原生swoole構建的組件
借鑑goim(bilibili出品 通過生產驗證百萬消息秒級推送
),使用純swoole 實現的高性能分佈式im中間件,提高高性能併發的推送,性能更優git
cloud,job,logic
等節點均可以水平擴容
job
節點提升並消費能力websocket
,tcp
client分佈到多個cloud節點中,提升cloud節點中心處理能力logic
提供對外restapi 做爲主要業務節點高性能
協程化、水平擴容、分佈式服務架構、接入服務治理cloud
做爲中心服務節點 grpc-server
節點,對外接收TCP、Websocket客戶端進行長鏈接
,能夠水平擴容至多個節點 並註冊到服務中心,例如consul
。每一個cloud節點維護本身的客戶端github
job
節點做爲消費節點 消費隊列數據 而後進行grpc
和cloud服務進行通信 進行 push
push room
broadcast
,做爲節點中間件,消費kafaka
,rockermq。。。
之類,能夠擴展多個節點提升併發消費能力web
logic
節點 提供rest api接口,做爲生產節點 和 grpc客戶端,可寫入隊列做爲生產者,也能夠擴展本身的業務進行grpc直接調用cloud節點中心進行推送redis
package
服務間配置獨立,使用composer進行依賴管理,進行composer組件化開發
core
爲核心基礎組件,底層設計借鑑 swoft
源碼設計grpc
定義grpc接口規範composer包,使用protobuf
構建,封裝有鏈接池discovery
服務發現註冊組件,註冊grpc-server
,發現服務等封裝process
進程管理模塊,能夠註冊啓動自定義進程,並交由swoole master進程管理聲明週期queue
消息隊列管理模塊,提供消息隊列接口,底層實現了鏈接池
接口,無需管理鏈接,根據類型能夠切換不一樣的消息隊列(done rabbitmq
,soon kafak)redis
封裝了鏈接池版本的redis clienttask
異步任務組件,封裝投遞task進程任務的接口,目前僅支持投遞worker->task
,不支持自定義進程投遞以及投遞到自定義進程startsegmentfault
processapi