58到家通用实时消息平台架构细节
- 187*324
-
0 次阅读
-
0 次下载
-
2024-03-08 21:39:05
微信
赏
支付宝
文档简介:
58到家通用实时消息平台架构细节(Qcon2016)
原创 2016-04-23 58沈剑 架构师之路
2016Qcon北京,业务核心架构场,《58到家通用实时消息平台架构细
节》。
一、解决什么问题 + 难点
解决什么业务问题
(1)端到云的实时上报需求:58速运司机端GPS实时上报
(2)云到端的实时推送需求:58速运司机订单实时推送
(3)端到端的聊天消息需求:用户、商户、客服之间的聊天沟通
难点:
(1)APP无线环境下消息可达性
(2)通用性,平台实现尽量与业务解耦
二、传统解决方案与潜在不足
【端到云:http轮询上报GPS消息】
方案一:直接通过业务线web-server写DB
方案二:通用web-server层调用业务服务层写DB
潜在不足:
(1)http短连接代价高(反复创建与销毁连接)
(2)web-server层吞吐量较低(每秒处理千级别请求)
【云到端:通过第三方push或者推送服务】
方案一:通过APNs或者米推等第三方推送
方案二:通过自己搭建mqtt服务推送
潜在不足:
(1)第三方可达性与实时性无法保证,第三方会进行推送限速
(2)mqtt可用性是个问题
【端到端:结合上面两种方法实现】
传统方案往往可以通过结合【端到云】与【云到端】来结合解决【端到
端】的实时消息推送问题。
三、通用实时消息平台实现细节
业务的分析与抽象:司机、用户、商家、客服均为“在线”业务
【端到云的优化】
传统方案潜在的问题:http轮询效率不高,web-server性能有限
优化TIPS:消息平台使用tcp长连接(如上图)
潜在的问题:消息平台与业务线app-server耦合,需要switch case业务线
类型来分发投递消息,新增业务线需要新增RPC调用(如上图)
优化TIPS:使用消息总线msg-queue解耦(如下图)
可以看到,使用消息总线后,新增消息发送方,消息平台只需要配置消
息类型与消息总线主题的映射关系,新增的app-server消费方订阅新的
主题即可,实现消息平台与业务的解耦。
【云到端的优化】
潜在的问题:可用性问题与第三方限速
优化TIPS:自己提供消息平台集群,提供RPC接口,实现“云到端”的消
息通道
这里要注意的是,“端到云”使用消息总线,是为了业务解耦。“云到
端”直接使用RPC接口,也是为了业务解耦,新增消息推送方,消息平
台无需改动代码。
潜在的问题:不少司机推送订单无回复,抢单率比预期的低
优化TIPS:引入状态实时存储,只有“在线”状态的用户才推送消息
【端到端的优化】
如果业务无关,则直接通过tcp通道投递;如果业务相关,发送方先来
一个“端到......
评论
发表评论