阿里云ONS:异步解耦与分布式事务的高效消息服务
需积分: 48 112 浏览量
更新于2024-09-09
收藏 659KB PDF 举报
阿里云开放消息服务(ONS)是一款基于阿里集团内部成熟的消息中间件Notify和MetaQ(RocketMQ)的云消息中间件。它旨在为企业应用提供异步解耦、分布式事务处理、高吞吐量和可靠性,适用于大规模场景下的缓存同步、数据库数据分发等任务。
1. **MQ场景应用**:
- 订单异步解耦:通过ONS,应用可以将订单处理过程分解为异步操作,降低系统的耦合性,提高系统灵活性。
- 分布式事务:利用ONS实现半事务消息模式,如转账业务,通过先发送扣款请求然后确认,确保事务最终一致性。
- 聊天平台:支持大规模用户间的即时通信,通过消息传递实现实时交互。
- Cache同步:用于大规模机器之间的数据更新同步,提升性能和可用性。
- MySQL BinLog订阅:将数据库变化以消息形式分发,方便实时监控和数据分析。
2. **应用场景**:
- 异步处理:适用于需要快速响应但不急需立即响应的任务。
- 解耦架构:支持服务之间的松散耦合,提高系统的可扩展性和稳定性。
- 最终一致性:通过消息传递,允许在某些场景下接受部分不一致的数据,保证整体业务的正常运行。
- 并行处理:支持多条消息并行处理,提升处理效率。
3. **设计假定**:
- 高可用性:假设所有PC和集群可能出现故障,设计需考虑冗余和容错。
- 最坏情况:设计时考虑到网络不稳定和系统压力,确保在极限情况下仍能正常工作。
- 内网延迟:优先考虑低延迟,提供更好的用户体验。
4. **关键设计**:
- 分布式集群:提供无限扩展的处理能力,通过高可用集群保证服务不间断。
- 数据安全:采用单机磁盘和队列级别的冗余,以及多组消息队列备份。
- 消息堆积策略:推拉结合,支持长连接和轮询,减少消息堆积风险。
- 消息投递延迟:实现毫秒级的可靠投递,保证实时性。
5. **关键概念**:
- Topic和Tug:消息类型层次结构,Topic是大类,Tug是细分主题。
- 发送组和订阅组:定义消息生产者和消费者的逻辑划分。
- RocketMQ的消息模型:非顺序投递,1+N模型,保证幂等性。
6. **消息处理问题**:
- 乱序问题:由消息服务器自动处理,不作为设计重点。
- 重复消息:由于网络问题导致,通过幂等性避免重复处理。
- 去重机制:使用唯一ID标记并记录处理状态,确保一致性。
7. **分布式事务优化**:
- 半事务模式:保证业务操作与消息投递的原子性,实现最终一致性。
- 事务流程控制:确保消息确认和事务执行的同步。
8. **使用方法**:
- Java客户端集成:通过Maven依赖引入ONS客户端库,下载jar包并添加到项目中。
- 发送消息示例:配置Producer属性,包括ProducerId、AccessKey等。
阿里云ONS提供了企业级的消息传递解决方案,适应了分布式系统的各种需求,通过其灵活的设计和强大的功能,帮助企业实现高效、可靠的异步通信和分布式事务处理。
2015-01-06 上传
2021-05-11 上传
2024-10-04 上传
2023-06-01 上传
2024-02-09 上传
2019-08-12 上传
2020-08-27 上传
mengbb_123
- 粉丝: 0
- 资源: 1
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫