im-cloud 基於swoole 原生協程構建分佈式推送中間件

github: http://github.com/brewlin/im-...

1、概述

基於 swoole原生協程構建商業化即時推送im服務中間件,不進行業務處理,單獨做爲中間件使用,可彈性擴充節點增長性能處理.不依賴外部框架,核心代碼爲原生swoole構建的組件

借鑑goim(bilibili出品 通過生產驗證百萬消息秒級推送),使用純swoole 實現的高性能分佈式im中間件,提高高性能併發的推送,性能更優git

2、服務業務節點

cloud,job,logic 等節點均可以水平擴容
  • 例如在消費能力不足時能夠啓動n個job節點提升並消費能力
  • 啓動多個cloud節點做爲client客戶端負載均衡,將多個websockettcp client分佈到多個cloud節點中,提升cloud節點中心處理能力
  • logic 提供對外restapi 做爲主要業務節點
  • 高性能 協程化、水平擴容、分佈式服務架構、接入服務治理

@cloud

cloud 做爲中心服務節點 grpc-server 節點,對外接收TCP、Websocket客戶端進行長鏈接,能夠水平擴容至多個節點 並註冊到服務中心,例如consul。每一個cloud節點維護本身的客戶端github

@job

job 節點做爲消費節點 消費隊列數據 而後進行grpc 和cloud服務進行通信 進行 push push room broadcast,做爲節點中間件,消費kafakarockermq。。。之類,能夠擴展多個節點提升併發消費能力web

@logic

logic 節點 提供rest api接口,做爲生產節點 和 grpc客戶端,可寫入隊列做爲生產者,也能夠擴展本身的業務進行grpc直接調用cloud節點中心進行推送redis

3、組件依賴包 package

服務間配置獨立,使用composer進行依賴管理,進行composer組件化開發
  • core 爲核心基礎組件,底層設計借鑑 swoft源碼設計
  • grpc 定義grpc接口規範composer包,使用protobuf構建,封裝有鏈接池
  • discovery 服務發現註冊組件,註冊grpc-server,發現服務等封裝
  • process 進程管理模塊,能夠註冊啓動自定義進程,並交由swoole master進程管理聲明週期
  • queue 消息隊列管理模塊,提供消息隊列接口,底層實現了鏈接池接口,無需管理鏈接,根據類型能夠切換不一樣的消息隊列(done rabbitmq,soon kafak)
  • redis 封裝了鏈接池版本的redis client
  • task 異步任務組件,封裝投遞task進程任務的接口,目前僅支持投遞worker->task,不支持自定義進程投遞以及投遞到自定義進程

4、數據流程

im-cloud 鏈接流程圖

圖片描述

im-cloud 數據流程圖

圖片描述

im-cloud 業務流程

圖片描述

命令行工具

圖片描述

start
圖片描述segmentfault

process
圖片描述api

相關文章
相關標籤/搜索