分享

消息平台架构设计

 yxrsky 2020-06-17

祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良

消息平台架构设计

一.消息平台的应用场景及难点

1.解决什么业务问题:

a.端到云的实时上报

b.云到端的是实时推送

c.端到端的聊天消息

2.难点:

a.APP无线环境下消息的可达性

b.通用性,平台实现尽量与业务解耦

二.传统解决方案-端到云的上报

三.传统解决方案-云到端的推送

1.云到端:通过第三方push或者推送服务

方案一:采用APNs或者米推等第三方推送

方案二:通过自己搭建mqtt服务推送

2.通过第三方push或者推送服务的缺点:

a.第三方推送服务的可达性和实时性无法保障,同时第三方会进行推送限速

b.Mqtt的可用性是个问题

四.传统解决方案-端到端的消息通讯

   传统方案往往可以通过结合【端到云】与【云到端】来结合解决【端到端】的实时消息推送问题。

五.通用消息平台解决方案

消息平台解决方案的特点:

1.使用TCP长连接,克服Http轮询效率低的瓶颈。

2.使用消息总线msq-queque通过对消息主题的发布和订阅来将消息平台与业务线app-server进行解耦。新增消息发送方,消息平台只需要配置消息类型与消息总线的映射关系,新增的app-server订阅新的主题的即可,实现了消息平台与业务的解耦

六.通用消息平台架构

1.msg-sdk:向APP提供帅气的MSG接口。

2.msg-gate:消息平台tcp接入门户,保持tcp长连接,初步攻防,加解密,压缩/解压缩

3.msg-logic:消息平台逻辑处理部分

4.redis:高可用redis集群存储用户在线状态online/offline,以及用户在那一台msg-gate接入(如果在线)

5.DB,存储离线消息

6.业务客户端:业务方APP,可以有多个,通过msg-sdk来接入消息平台

7.MQ:消息平台通过mq来给业务方服务器发“端到云”的消息

8.app-server:业务方后端,可以有多个,通过mq接收“端到云”的消息,通过RPC发送“云到端”的消息

七.通用消息平台架构-分布式架构

八.通用消息平台架构-消息投递流程

消息投递流程:

1.消息方将消息发送给消息平台

2.消息平台将消息落地

3.消息平台返回发送成功给 消息发送方

3.与此同时消息平台将消息发送给消息接收方

4.消息接收方发送ack给消息平台,表示已接收

5.消息平台将消息从数据库中删除

6.通知消息接收方ack已经处理

需注意:

如第三步,消息发送方没有收到消息平台的回复,则消息发送方需要重新发送消息

消息接收方如果收到重发的冗余消息需要进行接收方去重,做到服务端无状态。

九.消息平台通用接口

1.Msg-sdk对App提供的核心接口有:

a.login:接入消息平台

b.logout:登出消息平台

c.c2s:发送client to server”端到云”的消息

d.c2c:发送client to client“端到端”的消息

e.get-offline-msg:获取离线消息

f.on-msg-received:收到消息的callback回调接口

2.消息平台对App-server提供的核心接口:

a.s2c:发送server to client “云到端”的消息

3.其他业务方不需要关注,msg-sdk与消息平台之间的内部接口有:

a.keepalive:用于msg-sdk与消息平台的连接保持

b.c2c-ack:用于c2c接口应用层ack接口(对业务方透明)

————————————————

版权声明:本文为CSDN博主「大道化简」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/sunhuiliang85/java/article/details/78235866

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多