im-cloud 分布式推送中间件



im-cloud

基于原生 swoole 全协程化构建 im-cloud中间件,多节点扩容 https://github.com/brewlin/im-cloud

概述

  • 基于swoole原生构建即时推送im分布式服务,不进行业务处理,单独作为中间件使用,可弹性扩充节点增加性能处理,业务demo:(todo)
  • 高性能 水平扩容 分布式服务架构 接入服务治理
  • cloud 作为中心服务节点 grpc-server 节点,对外可以进行tcp、websocket 客户端进行长连接注册,可水平扩容至多个节点 并注册到服务中心 例如consul,每个cloud节点维护自己的客户端
  • job 节点作为消费节点 消费队列数据 然后进行grpc 和cloud服务进行通讯 进行 push push room broadcast,作为节点中间件,消费kafakarabbitmq。。。之类,可以通过配置切换消息队列类型
  • logic 节点 提供rest api接口,作为生产节点 和 grpc客户端,可写入队列作为生产者,也可以扩展自己的业务进行rpc直接调用center中心进行推送,客户端数据缓存至redis中,多个logic节点访问redis数据同步
  • cloud,job,logic 等节点可水平扩容多个节点增加并发处理

appm & apps

  • appm多进程版本(multi process coroutine) 测试和单元测试中
    • test version
  • apps单进程全协程化server版本(single process coroutine)
    • 分支apps 待官方实现http2协议,暂取消合并到master
  • notice
  • api

流程图

im-cloud 连接流程图

im-cloud 数据流程图

im-cloud 业务流程

组件依赖

相关组件为纯swoole实现

@core (done) 核心架构

@grpc (done) grpc包依赖 grpc-client连接池

@discovery (done) 服务发现注册

@process(done) 自定义进程管理器

@redis(done) redis连接池

@queue(done amqp,soon kafak) 消息队列连接池

@memory(done)swoole 相关内存操作封装

@task(done) 异步任务投递组件

@cloud (test verion)

@job (test version)

@logic (test version)