All Projects → brewlin → Swoft Im

brewlin / Swoft Im

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

Projects that are alternatives of or similar to Swoft Im

Swoft
🚀 PHP Microservice Full Coroutine Framework
Stars: ✭ 5,420 (+2767.72%)
Mutual labels:  rpc, swoole, websocket-server, aop
Swoft Framework
[READ ONLY] Swoft Framework, base of Swoft
Stars: ✭ 70 (-62.96%)
Mutual labels:  rpc, swoole, aop
server-framework
纯C的分布式服务器框架通用模板,跨平台,模块动态加载,tcp/可靠UDP,协程RPC,日志,集群建立
Stars: ✭ 24 (-87.3%)
Mutual labels:  tcp, coroutines, rpc
Pool
General Purpose Connection Pool for GRPC,RPC,TCP Sevice Cluster
Stars: ✭ 98 (-48.15%)
Mutual labels:  rpc, pool, tcp
Co
Art of C++. Flag, logging, unit-test, json, go-style coroutine and more.
Stars: ✭ 2,264 (+1097.88%)
Mutual labels:  rpc, tcp, coroutines
Laravel S
LaravelS is an out-of-the-box adapter between Swoole and Laravel/Lumen.
Stars: ✭ 3,479 (+1740.74%)
Mutual labels:  swoole, tcp, process
Groupco
PHP的服务化框架。适用于Api、Http Server、Rpc Server;帮助原生PHP项目转向微服务化。出色的性能与支持高并发的协程相结合
Stars: ✭ 473 (+150.26%)
Mutual labels:  pool, coroutines, swoole
Smproxy
Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 A MySQL database connection pool based on MySQL protocol and Swoole.
Stars: ✭ 1,665 (+780.95%)
Mutual labels:  pool, coroutines, swoole
Dora Rpc
DoraRPC is an RPC For the PHP MicroService by The Swoole
Stars: ✭ 475 (+151.32%)
Mutual labels:  rpc, swoole, tcp
Ti Rpc
基于swoole封装的一个简易的JSON协议的RPC框架,思路是借鉴的,代码是自己写的。小修小改的,目前服务于前公司(注意是前公司)生产环境,每日支撑大约8000万次调用。
Stars: ✭ 144 (-23.81%)
Mutual labels:  rpc, swoole, tcp
Beetlex
high performance dotnet core socket tcp communication components, support TLS, HTTP, HTTPS, WebSocket, RPC, Redis protocols, custom protocols and 1M connections problem solution
Stars: ✭ 802 (+324.34%)
Mutual labels:  tcp, websocket-server
Hasor
Hasor是一套基于 Java 语言的开发框架,区别于其它框架的是 Hasor 有着自己一套完整的体系,同时还可以和先有技术体系做到完美融合。它包含:IoC/Aop容器框架、Web框架、Jdbc框架、RSF分布式RPC框架、DataQL引擎,等几块。
Stars: ✭ 713 (+277.25%)
Mutual labels:  rpc, aop
Scalecube Services
v2.0 - ScaleCube Services provides a low latency Reactive Microservices library for serverless service registry and discovery based on gossip protocol and without single point-of-failure or bottlenecks.
Stars: ✭ 23 (-87.83%)
Mutual labels:  rpc, tcp
Goridge
High-performance PHP-to-Golang IPC bridge
Stars: ✭ 950 (+402.65%)
Mutual labels:  rpc, tcp
Grain
grain是一个极简的、组件式的RPC框架,灵活且适合渐进学习,可与任何框架整合。同时包含(系统通用多线程模型与消息通讯 || 多对多关系的分布式锁 || 基于Servlet的HTTP框架 || 基于系统通用多线程模型的Websocket框架 || 支持行级锁的多线程锁 )等组件,按需选择组件,不绑架开发者。
Stars: ✭ 577 (+205.29%)
Mutual labels:  rpc, tcp
Ycsocket
基于swoole的socket框架,支持协程版MySQL、Redis连接池,已用于大型RPG游戏服务端
Stars: ✭ 77 (-59.26%)
Mutual labels:  pool, swoole
Getty
a netty like asynchronous network I/O library based on tcp/udp/websocket; a bidirectional RPC framework based on JSON/Protobuf; a microservice framework based on zookeeper/etcd
Stars: ✭ 532 (+181.48%)
Mutual labels:  rpc, tcp
Netty Stroll
RPC基础通信框架
Stars: ✭ 77 (-59.26%)
Mutual labels:  rpc, tcp
Ws Tcp Relay
A simple relay between WebSocket clients and TCP servers
Stars: ✭ 186 (-1.59%)
Mutual labels:  tcp, websocket-server
Jstp
Fast RPC for browser and Node.js based on TCP, WebSocket, and MDSF
Stars: ✭ 132 (-30.16%)
Mutual labels:  rpc, tcp

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

预览

  • 消息处理中心,消息盒子
  • 发现中心,推荐好友群,搜索好友群,创建群
  • 单聊,群聊 聊天界面,聊天记录
  • 主面板
  • 右键功能(好友管理,分组管理,群管理)
  • 整体预览图
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].