消息中间件在大型分布式系统的应用

Download Report

Transcript 消息中间件在大型分布式系统的应用

消息中间件在大型分布式系统的应用
马震(锋寒)@淘宝网
2011-11-26
个人简介
2008年——至今 淘宝网技术专家
负责消息中间件的研发
之前在Ericsson和金蝶中间件工作
感兴趣领域:
并发和网络编程
大型分布式系统的构建
海量数据的分析和处理
微博:http://weibo.com/mz1999
Outline
淘宝消息中间件概览
消息中间件应用场景
分布式事务
数据复制
日志同步
delay queue
广播通知
总结
消息中间件
应用程序或组件之间的一种通讯方式
可靠性
异步
松散耦合
发送者和接收者不必了解对方,只需要认识消息
发送者和接收者不必同时在线
Messaging Models
Point-to-Point (PTP)
每个消息只有一个消费者
发送者和接收者没有时间依赖
接收者确认消息处理成功
Publish/Subscribe
每个消息可以有多个订阅者
客户端只有订阅后才能收到消息
淘宝消息中间件
Notify
Push模式,消息存储转发
支持分布式事务
订阅者集群
支持多种安全级别的存储
淘宝消息中间件
Metamorphosis
开源MQ-kafka的Java版本
消息都是持久的,保存在磁盘
客户端pull,利用sendfile系统调用,零拷贝
吞吐量第一
支持消息顺序
淘宝消息中间件
 Broker: Shared nothing architecture
 发布者、订阅者都支持集群
ZooKeeper
ConfigServer
Subscriber
Publisher
Broker
Publisher
Subscriber
Broker
Publisher
集群
Subscriber
集群
集群
Notify——分布式事务
通用的消息中间件支持XA分布式事务
优点
跨越多个资源ACID的保证
编程模型简单一致
缺点
性能和可用性都不高
故障难于恢复
Notify——分布式事务
本地事务域
T3业务操作
Publisher
T1
发
送
half
消
息
T4
提
交/
回
滚
S1
定期
检查
未提
交的
消息
业务操作
S2提交/回滚
T2存储half消息
Broker
本地事务域
S3 提交:更新数据库
标识消息可发送
T5 提交:更新数据库
回滚:删除消息
标识消息可发送
回滚:删除消息
Storage
Notify——订阅者集群
应用A
Publisher
A1
A2
A3
B1
B2
B3
Broker
应用B
订阅者集群:消息的一个逻辑上的订阅者
是有多个物理节点组成的一个集群
Notify——消息存储
多种安全级别的存储
File
Oracle+小型机+存储
MySQL
MySQL + Replication
同步写入两个存储节点
支持存储节点的动态变化
Meta——跟kafka有什么不同?
 用java替换scala
 Consumer API没有采用kafka的stream方式,而
是同时实现同步获取和异步订阅两种方式
 存储结构上采用自定义结构,更简洁紧凑
 客户端的连接复用
 实现HA复制
 实现发送的软负载
 支持本地和XA事务
 支持http协议
 数据迁移、扩容对用户透明
Outline
淘宝消息中间件概览
消息中间件应用场景
分布式事务
数据复制
日志同步
delay queue
广播通知
总结
场景(一)分布式事务
 为面向服务架构(SOA)提供分布式事务支持
 保证全局数据的一致性
交易中心
store
付款成功消息
Broker
商品管理
store
物流
store
…
CRM
store
场景(二)数据复制
 利用消息中间件将数据从源头复制到多个目的地
 满足搜索、离线分析和分表规则变化等需求
Search
DB
binlog
DB Sync
Broker
hadoop
DB
场景(三)日志同步
 应用通过可靠异步方式将日志同步到消息中间件
 可以对日志做实时或离线分析
App
App
App
App
App
Broker
HBase
Storm
场景(四)delay queue
把消息中间件当做可靠的延迟队列
分布式环境下的定时器
Publisher
Broker
延迟投递
recover
Subscriber
场景(五)广播通知
可靠的集群内广播通知
用于通知cache失效等事件
App
App
App
②广播通知
①发布通知
App
Broker
App
总结
消息中间件对于大型分布式系统非常重要
扩展性
可用性
自动流量调节
开源产品的选择
谨慎对待标准产品和企业级解决方案
KISS原则