2 Star 3 Fork 131

mayday / universe_push

forked from comsince / universe_push 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

概述

这个一个基础的消息通信架构,只在解决服务端与客户端消息通信,可应用于消息推送,即时通信以及由此衍生出来的消息通信业务。本项目基于其他开源项目的基础上, 希望通过合理的分布式架构,解决大规模并发链接的问题,从而适应互联网用户不断增长的需求,本项目将会采用微服务的开发与设计模式进行架构设计,尽量保持各个业务的单一性和高可用性。 这样的目的也是基于业务扩展的方式,方便以后能够在基于此通信架构基础上衍生其他相关业务,从而保持业务的独立性,增加项目的可维护性。

为了开源以及方便部署,将更换RPC框架为Dubbo,并且全部基于SpringBoot

部署说明

image

准备工作

为了脚本能够正常工作,请先在你的服务器建立如下目录/opt/boot,这个是脚本自动查找spring boot工程的目录,该目录下存放所有spring boot工程,具体工程目录结构如下:

依赖组件

  • redis
    push-connector集群模式下需要进行消息推送,利用redis的sub/pub进行消息的订阅与发布进而进行全局推送
  • zookeeper
    dubbo使用了zookeeper作为注册中心,因此需要安装zookeeper

启动停止服务

例如push-sub的启动方式,其他类同

# 启动服务
./push-sub start
# 停止服务
./push-sub stop

SpringBoot Dubbo服务启动

由于dubbo严格遵守服务依赖启动顺序,请安装顺序启动如下服务

  • application.properties配置rediszookeeper地址

这里没用使用诸如nacos,apollo外部的配置中心,需要自己手动修改

push.redis.address=redis://172.16.46.213:6379
  • 运行mvn clean package -Dmaven.test.skip=true 打包springboot jar

以下服务如果用户量增加,都可以集群部署

  • 启动spring-boot-dubbo-push-subscribe订阅服务
/opt/boot/push-sub
├── jvm.ini
├── push-sub //可执行启动脚本
└── log
   └── push-sub.log //存放日志
└── lib
   └── spring-boot-dubbo-push-subscribe-1.0.0-SNAPSHOT.jar //可运行的jar
  • 启动spring-boot-dubbo-push-connector链接服务
/opt/boot/push-connector
├── jvm.ini
├── push-connector //可执行启动脚本
└── log
   └── push-connector.log //存放日志
└── lib
   └── spring-boot-dubbo-push-connector-1.0-SNAPSHOT.jar //可运行的jar

SpringBoot web项目

  • 启动spring-boot-web-push-api开放推送服务
/opt/boot/push-api
├── jvm.ini
├── push-api //可执行启动脚本
└── log
   └── push-api.log //存放日志
└── lib
   └── spring-boot-web-push-api-1.0.0-SNAPSHOT.jar //可运行的jar
  • 启动sping-boot-web-push-group群组服务
/opt/boot/push-group
├── jvm.ini
├── push-group //可执行启动脚本
└── log
   └── push-group.log //存放日志
└── lib
   └── sping-boot-web-push-group-1.0.0-SNAPSHOT.jar //可运行的jar

推送SDK

为了方便用户快速接入消息推送系统,特提供如下SDK

基础架构

Push-connector

基本功能

  • 提供集群链接管理的能力
  • 提供消息群发的功能
  • 提供消息单发的功能
  • 客户端管理服务

Push-Cache[计划中]

基本功能

提供消息缓存服务

  • 消息缓存
  • 消息过期

Push-API

基本功能

提供推送Http接口服务,调用推送网关发送推送消息,此接口采用springboot开发web服务

Push-Group

  • 单聊服务
  • 群组服务

部署

常见问题

部署connector要同时更新,防止出现redisson发布订阅数据解析问题

redisson 发布时最好使用统一个logger,不然会有序列化问题

参考资料

参考项目

MIT License Copyright (c) 2019 comsince Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于T-io的即时消息分发系统,采用Dubbo,SpringBoot的分布式架构,可以衍生出推送,聊天,群组通讯的基础架构 ,内附NIO PushSdk方便android 设备接入 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/chrismayday/universe_push.git
git@gitee.com:chrismayday/universe_push.git
chrismayday
universe_push
universe_push
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891