Skip to content
基于t-io的即时消息通讯系统,采用Dubbo,SpringBoot的分布式架构,可以衍生出推送,群组通讯的基础架构 ,支持docker,k8s快速部署。Android版本支持私聊,群聊,支持voip通话,支持语音,短视频,图片,位置发送
Java TSQL Other
Branch: master
Clone or download
comsince
comsince add github star
Latest commit a7a9a25 Sep 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assembly add maven assemble plugin Feb 18, 2019
attachment
demo/AndroidPushDemo 发送消息后,消息输入框自动设置为空 May 31, 2019
push-common 心跳响应加入messageId,pushsdk nio版本进行socket空指针校验 Jul 18, 2019
push-sdk Nioclient 本地单元测试修改 Jul 31, 2019
push-stub 增加403透传语音通话指令 Jul 16, 2019
spring-boot-dubbo-push-connector push-connector链接网关优化以支持kubenetes水平扩展 Aug 22, 2019
spring-boot-dubbo-push-subscribe [docker]修改dubbo版本,为持续集成做准备 Aug 7, 2019
spring-boot-web-push-api [docker]修改dubbo版本,为持续集成做准备 Aug 7, 2019
spring-boot-web-push-group [docker]modify test Aug 7, 2019
tio-core 修正客户端反复重连导致channelchanext与clientid关系丢失问题,日志类功能增强 Jun 20, 2019
.gitignore 修改登录服务 Jun 6, 2019
.travis.yml [docker]travis.yml修改以解决push-connector镜像构建问题 Aug 8, 2019
LICENSE modify license Mar 7, 2019
README-Linux.md 支持docker部署项目,zookeeper与mysql更改配置以支持docker容器间访问 Aug 7, 2019
README.md add github star Sep 23, 2019
docker-compose-dev.yml 支持docker部署项目,zookeeper与mysql更改配置以支持docker容器间访问 Aug 7, 2019
docker-compose.yml [docker-compose]kafka配置修改 Aug 22, 2019
pom.xml [docker]修改dubbo版本,为持续集成做准备 Aug 7, 2019
universe-kube-deployment.yml [k8s]push-connector支持水平扩展以适应海量链接 Aug 22, 2019

README.md

Build Status GitHub license Gitee stars GitHub stars

支持集群的分布式即时聊天系统

适合快速部署的聊天系统

这是一个聊天系统的简单架构,解决大量用户需要即时通讯的解决方案,基于RPC框架Dubbo,SpringBoot构建微服务应用,提供Docker快速部署的解决方案。 提供Android客户端类似微信功能,包括好友添加私聊群聊,等基本功能

image

扫码体验APK下载

image

NOTE: 本apk基于android-chat构建替换为java协议栈开发

  • 请选择其中任何一个帐号密码进行登录即可
帐号:13800000000, 13800000001, 13800000002
密码:556677

服务说明

聊天系统为了适应大规模用户的链接请求,将服务分为链接服务消息服务,它们都是独立的,可以单独部署也可以集群部署

链接服务[push-connector]

用于解决用户的链接请求,支撑百万级用户的链接,可单机部署,可集群部署。如果你存在大规模用户链接,可以启动集群模式,参考K8s自动伸缩模式

消息服务[push-group]

用于用户处理用户管理,会话管理,离线消息处理,群组管理等功能,是整个即时通讯系统的业务处理模块

自动化构建

增加持续集成的好处

  • 随时随地发布软件
  • 任何一次构建都能触发一次发布
  • 只需发布一次artifact,即可随时发布

NOTE: 以下是发布持续交付工作流图

image

如何启动服务

本机部署只需要两个SpringBoot服务,一个Mysql服务,一个zookeeper服务,链接服务push-connector集群模式还需要kafka支持

部署前准备

  • 安装dockerdocker-composer,如果需要在k8s中部署,请准备好相关的环境
  • 确保编译此项目mvn clean package -Dmaven.test.skip=true

生产模式

这种模式下,所有的镜像都会从Docker Hub下载,只需要复制docker-compose.yml,在该目录下执行docker-compose up即可. 如果要查看完整的部署步骤,请参考这里基于Docker的即时通讯系统的持续集成发布说明

开发模式

如果你希望自己编译镜像,你必须克隆此代码,并在本地编译此项目。然后执行docker-compose -f docker-compose.yml -f docker-compose-dev.yml up

K8S中部署

如果想在k8s中部署,我们也提供yml配置,执行以下命令即可,详情参考即时通讯服务在k8s容器的部署说明

kubectl apply -f https://www.comsince.cn/download/cloud-native/universe-kube-deployment.yml

或者下载代码执行,push-connector支持扩展,以适应海量长连接,集群模式需要kafka支持,如果kafka没有启动成功,可以手动重启push-connector

kubectl apply -f ./universe-kube-deployment.yml

image

NOTE: 如果你希望直接脚本部署,参考脚本部署

欢迎为此项目作出贡献

该项目是开源项目,欢迎提出建议或者提供意见反馈,如果你喜欢此项目,请点击star支持我们不断改进

感谢

此项目时在参考其他项目基础上完成,在此表示感谢

You can’t perform that action at this time.