Git Product home page Git Product logo

brewlin / swoft-im Goto Github PK

View Code? Open in Web Editor NEW
203.0 9.0 60.0 1.64 MB

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

Home Page: http://im.brewlin.com

PHP 97.61% Makefile 0.18% Dockerfile 1.86% Shell 0.35%
micro-service composer-package swoft swoole php7 rpc asynctask pool process coroutines

swoft-im's Introduction

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

预览

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

swoft-im's People

Contributors

brewlin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swoft-im's Issues

安装启动问题,求指教

您好,我按照您的步骤进行了安装 出现了一些问题:

  1. 对每个服务执行了composer install

  2. 然后对每个服务的配置文件进行了修改
    /home/www/serviceim/gateway-api/config/properties/db.php
    /home/www/serviceim/gateway-api/config/properties/cache.php
    253cc1145933ef7acf4dc58a4bf52b8
    QQ截图20190329172828

  3. 然后启动docker,我的docker 看了一下版本是1.8
    执行 docker-compose up 报错,不知道什么问题,查了百度 以为是版本问题,后来把docker-compose.yml中的版本号改成了1或者1.8 都不行!
    docer

  4. 然后启动单个服务的守护进程时 虽然都启动了 但是都有报错:
    gateway-api 启动后:
    1

然后其他服务的守护进程启动后的报错也都一样
2

另外还有个问题:
我这边 前端代码已经跑起来了,当登录的时候会访问下面这个接口进行登录,请问能否把服务端的nginx域名配置给出一份,让这边也能通过登录接口执行后端代码交互
QQ截图20190329174115

对于请求接口不能返回结果的问题如下,日志记录如下

微信截图_20210310163802

2021-03-10 16:46:43 [error] [swoft] [logid:60488773c13ee] [spanid:0] trace[ErrorHandler.php:36,Swoft\Core\ErrorHandler->handle]
{
"code": 4,
"msg": "两次密码输入不一致",
"data": [],
"statusCode": 2001,
"file": "/website/gateway-api/app/Controllers/Api/LoginController.php",
"line": 86
}

日志打印出来了,主机能telnet容器,但是容器不能telnet宿主机

以下是打印出来的日志,代码里面服务都是使用127.0.0.1连接的,这个不用修改吧,好几天了,确实是搞不懂了
2021-03-10 16:37:32 [error] [swoft] [logid:6048854ce1df0] [spanid:0] trace[ConnectionPool.php:234,Swoft\Pool\ConnectionPool->getConnectionByChannel] Service connect fail errorCode=115 host=127.0.0.1 port=8092

关于版本问题

swoole 是否支持4+?
swoft 版本看见是1.0,如果要升级,影响会有那些?

如果可以的话,可以深入沟通下,我打算升级下,涉及到的框架或是swoole使用了哪些函数,还不是很清楚。

关于gateway-api-cloud

我发现你把gateway-api-cloud里面的websocket模块删除了,我现在想帮你继续开发cloud的模块,当初为啥把ws删了呢。

我打算新建一个app_key表存储引用的ak和serect 然后token必须加密算法,init的时候做对称加密。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.