- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
58到家-通用实时-消息平台
架构实现细节
58沈剑
关于-我
• 前百度- 高级工程师
• 58 同城- 高级架构师,技术委员会主席,技术学院优秀讲师
• 58到家- 技术总监,技术委员会主席
• “架构师之路”作者,深夜写写技术文章
• 本质:技术人一枚
目录
• 一、实时消息平台解决什么问题
• 二、传统的解决方案与不足
• 三、可扩展实时消息平台设计与实践
• 四、分布式消息平台架构细节
• 五、总结
一、解决什么问题
一、实时消息平台解决什么问题
• 端到云的实时上报需求:58速运司机端GPS实时上报
• 云到端的实时推送需求:订单实时推送
• 端到端的聊天消息需求:用户、商户、客服之间的聊天沟通
• 重点是通用,与业务线解耦
二、传统解决方案与不足
二、传统解决方案与不足
• 端到云的实时上报需求:58速运司机端GPS实时上报
• 传统解决方案:http轮询上报
• http轮询上报的不足
(1)http短连接
(2 )web-server并发
二、传统解决方案与不足
• 云到端的实时推送需求:订单实时推送
• 端到端的聊天消息需求:用户、商户、客服之间的聊天沟通
• 传统解决方案:
(1)APNs
(2 )mqtt
• APNs与mqtt的不足
(1)APNs可达性、实时性、限速
(2 )mqtt可用性
三、可扩展实时消息平台
三、可扩展实时消息平台(1)
• 业务分析与抽象:“在线的业务”(司机、用户、商家、客服)
• 优化TIPS :TCP长连接消息通道
• 新的问题:多APP多业务后端时扩展性差,耦合严重
• 优化TIPS :通过消息总线与业务后端解耦
• 实现了“端到云”的实时上报
三、可扩展实时消息平台(2 )
• 有了“TCP消息通道”,“云到端”的消息实时推送不是问题
• 优化TIPS :提供RPC接口推送消息
• “端到云”不允许RPC调用,“云到端”为何可以RPC调用呢?
• 新的问题:大量消息不可达,因为用户根本不在线
• 优化TIPS :引入缓存存储用户在线状态
三、可扩展实时消息平台(3 )
• “端到端”的消息实时推送呢?
• 万一接收方不在线怎么办?
• 优化TIPS :离线消息
• 消息丢失怎么办?
• 优化TIPS :先落地,接收方收到回ACK再删除
• 消息发送流出步骤
• 万一没收到服务器回复怎么办?
• 优化TIPS :发送方重发
• 万一收到重复消息怎么办?
• 优化TIPS :接收方去重
三、可扩展实时消息平台(4 )
• 线上通用消息平台架构
• 为何接入层与逻辑层分离?
• 通用消息平台核心接口
login/logout/keepalive
c2s/s2c
c2c/c2c-ack/get-offline-msg
• 通用消息平台核心流程
• 既然是通用的消息平台,如何实现跨帐号体系的c2c聊天?
• uid不是消息通道中的唯一标识,因为各账号体系uid不同
• 优化TIPS :当当当当!
三、可扩展实时消息平台(5 )
• 协议设计如何支持多接口,如何扩展接口?
• 优化TIPS :定长包头+ cmd +变长包体
• 如何无缝兼容支持协议变更?
• 优化TIPS :调用方关注接口,协议透明,使用可扩展的协议(pb)
• 不同业务发送的消息体不一样,如何可扩展的支持业务线的变态需求
• 优化TIPS :消息内容可扩展(xml )
(1)富文本字体、字号、加粗、颜色
(2 )如何支持图片的发送
(3 )如何可扩展的支持“震一下”“对方正在输入”等需求
四、分布式架构与细节
四、分布式架构
• sdk如何获取接入层ip ?
• 扩展性
(1)接入层如何水平扩展?
(2 )逻辑层如何水平扩展?
(3 )数据层如何水平扩展?
• 负载均衡
• 可用性:使用冗余解决可用性问题
(1)接入层挂了怎么办?
(2 )逻辑层挂了怎么办?
(3 )缓存挂了怎么办?
四、分布式架构
• 一致性:数据冗余必将引发一致性问题
(1)缓存挂了怎么办?
(2 )缓存在线、接入层断了怎么办?
(3 )缓存不在线、接入层连上来怎么办?
(4 )状态不一致,有没有办法恢复?
五、总结
五、总结(1)
• “端到云”消息投递:TCP消息通道,消息总线业务解耦
• “云到端”消息投递:向业务
您可能关注的文档
最近下载
- 康悦百万医疗保险C款介绍.pptx VIP
- 中国人寿.北京大学-中高净值家庭资产配置和保险保障白皮书.pdf
- Unit 2 Different families Part A Let’s learn & Listen and do(说课稿)-2024-2025学年人教PEP版(2024)英语三年级上册.docx
- 4D打印的应用、原理及发展前景.ppt VIP
- 22J403-1 楼梯 栏杆 栏板(一) (3).pdf VIP
- 青岛版(五四制)(2024)小学科学三年级上册《制作“冰琥珀”》教案.docx VIP
- 超低能耗建筑的增量成本与经济效益分析.pdf VIP
- 贵州省房屋建筑和市政工程标准施工招标文件(2021年版)【模板】.docx VIP
- 跨文化交际:中英文化对比 (13).ppt VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
文档评论(0)