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

相关文章
相关标签/搜索