58到家实时消息平台:扩展与挑战——解决在线与离线问题
需积分: 19 94 浏览量
更新于2024-08-09
收藏 794KB PDF 举报
在IT行业中,实时消息平台是许多分布式应用的核心组成部分,尤其是在大规模的互联网服务场景中,如58到家这样的平台,其司机端GPS实时上报、订单实时推送以及用户间的聊天通信都依赖于高效、稳定的实时消息传递。本文主要讨论了在分布式架构下,如何解决缓存不在线接入层连上来时的问题。
首先,实时消息平台的主要目标是处理端到云的实时上报、云到端的推送以及端到端的即时通讯,确保数据的实时性和准确性。对于58速运司机端GPS实时上报,传统的HTTP轮询方式存在短连接、web-server并发限制等不足,无法满足高并发和实时性的需求。
为了解决这些问题,平台设计者采用了优化策略。他们将在线的业务实体(如司机、用户、商家、客服)进行业务抽象,并利用TCP长连接来建立稳定的消息通道,降低了多APP和业务后端之间的耦合度。通过消息总线,实现了消息的解耦,使得平台能够适应更多的扩展场景。
在云到端的消息推送中,引入了RPC接口,虽然端到云的实时性受到用户在线状态的影响,但通过缓存存储用户在线状态,可以处理用户不在线的情况。此外,还采用了离线消息机制,即使接收方暂时离线,消息也能被存储并待其上线时发送,同时通过ACK确认机制避免消息丢失。
发送流程中,如果接收方未收到服务器回复,发送方会进行重发;而为了保证消息的完整性和可靠性,即使消息落地,也需要等待接收方确认后再删除。这些措施确保了在复杂网络环境中,即使面临缓存不在线和接入层切换的情况,也能维持系统的稳定运行。
总结来说,一个成功的可扩展实时消息平台需要考虑的一致性问题,包括缓存故障、接入层连接变化和状态同步。通过技术手段如长连接、消息总线、缓存、离线消息以及重试机制,平台能够应对各种挑战,保证业务的实时性和可用性。这种设计思想和技术实践对IT从业者来说是非常重要的,尤其是在构建大型分布式系统时。
2021-09-29 上传
2019-08-11 上传
2022-07-14 上传
2021-06-12 上传
2020-03-27 上传
MICDEL
- 粉丝: 36
- 资源: 3946
最新资源
- turtle-logo:用于Turtle徽标编程语言的MakeCode扩展
- screepsmod-mongo:用MongoDB和Redis替换LokiJS
- Personal-Website:我的个人作品集展示了我的经验和项目
- elirehema:自述文件
- EightInSeven:Minecraft 1.8 1.7.10 的可见性行走算法
- illustrator-scripts-for-mobile:Illustrator脚本的集合,这些脚本可将图层或画板导出到不同密度的PNG(iOS Retina Display,Android设备等)
- Andron
- 安卓电视机大屏显示ui设计
- Assertions:作证断言集
- 正常运行时间:st stitcombe的正常运行时间监控器和状态页面,由@upptime提供支持
- mern:Mern edu应用
- 行业文档-设计装置-一种降低混合机物料残留的方法.zip
- nvim:这是我的nvim点文件。 它已经被配置为在您的系统中自动安装vim-plug
- 疯狂java讲义源码下载-The-Way-I-Learn-Android:我的Android学习之路,主要记录我的android的学习过程,时
- html_rocketseat
- Python库 | FuXi-1.0_rc.dev-py2.5.egg