PhpDev.App
brewlin/swoft-im

brewlin/swoft-im

Stars: 203

Forks: 61

Pull Requests: 0

Issues: 11

Watchers: 9

Last Updated: 2021-01-22 00:55:57

基于swoft-cloud的微服务架构,最小化拆分粒度,PHP7、多进程、协程、异步任务、mysql连接池、redi连接池、rpc连接池、服务治理、服务注册与发现、Aop切面、全注解

License:

Languages: PHP, Makefile, Dockerfile, Shell

http://im.brewlin.com

基于Swoft-cloud微服务架构-Im通讯平台

@概述

  • 对swoole-im进行服务拆分,进行微服务架构(https://www.github.com/brewlin/swoole-im.git)
  • 基于Swoft-cloud 进行服务化治理服务治理、熔断器、服务降级、Rpc调用、服务网关、 Cosul服务注册与发现、Mysql连接池、Redis连接池、异步任务、websocket推送
  • 底层采用Swoole通讯引擎,多进程、异步任务,开发模式:Aop,依赖注入,Bean容器,全注解
  • 服务间配置独立,使用composer进行依赖管理,进行composer组件化开发,公用的Rpc接口封 装为独立composer包。
    • 拆分有群组Rpc服务,聊天日志Rpc服务,用户基础Rpc服务,消息处理服务
    • Httpserver网关api服务,websocket服务
  • 请使用swoole扩展2.1.3+ 以及php 7.1!
  • 快速开始
    • 针对每个服务使用composer更新依赖make install
    • 开启所有服务 make start
    • 关闭所有服务 make stop
  • docker启动
    • docker-compose up
  • 演示地址

@gateway-api-cloud (soon)

  • 新增im-cloud版本,接入im-cloud分布式推送中间件作为推送中心。
  • 新网关中心可替代原有的网关服务,接入im-cloud分布式推送服务
  • im-cloud 基于swoole原生开发的分布式中间件
  • done soon..

@架构图

服务依赖

前端服务

服务处理

服务开发

Rpc 接口依赖

"repositories": {
    "0":{
        "type":"vcs",//git源
        "url":"http://www.github.com/brewlin/service-components" //公用composer包
    },
    "packagist": {
        "type": "composer",
        "url": "https://packagist.laravel-china.org"
    }
}

Gateway-Api && Websocket 中心网关服务

接受web端webocket长连接通讯、api请求.
处理基础数据,对外中心api网关.
服务调用方(Rpc 调用),调用群组服务、用户基础服务等`
  • 依赖: user-servicegroup-serviceservices-componentsredis-servicegroup-servicemsg-service

  • 配置: worker:2,task_worker:2,port:8090,熔断器服务降级,Rpc连接池useProvider:false,

  • 服务启动:

    cd gateway-api/

    composer install更新依赖

    php bin/swoft ws:start --d可选守护进程模式

Redis 缓存处理服务

处理用用户的业务缓存,使用swoft redis连接池
独立服务处理用户群组缓存、好友聊天缓存
  • 依赖:services-compoentsswoft-cloud*

  • 服务启动:

    cd/redis-service

    composer install更新依赖

    php bin/swoft rpc:start --d可选守护进程模式 配置: worker:2,task_worker:2,port:8091,SyncRedis连接池useProvider:false,

Group 群组数据处理服务

处理用群组基础信息,群组聊天等业务处理
  • 依赖:services-compoentsswoft-cloud*redis-service

  • 服务启动:

    cd/group-service

    composer install更新依赖

    php bin/swoft rpc:start --d可选守护进程模式 配置: worker:2,task_worker:2,port:8092,SyncRedis连接池useProvider:false,mysql连接池

Msg 消息处理服务

处理系统消息,收发请求消息存储
  • 依赖:services-compoentsswoft-cloud*

  • 服务启动:

    cd ./msg-service

    composer install更新依赖

    php bin/swoft rpc:start --d可选守护进程模式 配置: worker:2,task_worker:2,port:8093,useProvider:false,mysql连接池

User 用户中心服务

用户基础信息处理
用户好友聊天处理
用户业务功能封装
  • 依赖:services-compoentsswoft-cloud*redis-service,msg-service,group-service

  • 服务启动:

    cd ./user-service

    composer install更新依赖

    php bin/swoft rpc:start --d可选守护进程模式 配置: worker:2,task_worker:2,port:8094,useProvider:false,mysql连接池

启动和服务进程预览

开发进度 && 实现功能

  • 好友单聊
  • 添加好友
  • websocket token 机制
  • 好友右键菜单操作功能
    • 发送好友信息
    • 查看好友资料
    • 查看好友聊天记录
    • 好友备注功能
    • 移动好友分组
    • 删除好友功能
  • 发现中心
    • 搜索好友
    • 推荐好友 添加好友
    • 创建群
  • 消息中心
    • 好友离线上线通知,好友上线离线消息推送
    • 系统消息推送,好友申请处理操作

预览

  • 消息处理中心,消息盒子
  • 发现中心,推荐好友群,搜索好友群,创建群
  • 单聊,群聊 聊天界面,聊天记录
  • 主面板
  • 右键功能(好友管理,分组管理,群管理)
  • 整体预览图