首页
ppt
服务器软件
×
该PPT是用户上传,如果对该PPT内容或使用有所疑问,请根据该ppt中作者所留的联系方式,咨询原作者!
如果涉及侵权等原因需要删除,请联系QQ:875388611
开源MQ技术介绍
888
1
0
dos200
颜色:
下载需要
8
金币
[ 金币充值 ]
亲,您也可以通过
分享原创文档
来获得金币奖励!
服务器/托管费、人工审核、技术维护等都需要很多费用,感谢您支持深度开源的发展!
下载PPT
0
推荐
0
收藏
PPT 内容
PPT 图集
1. 开源MQ技术介绍Kimmking 2013-6
2. Agenda消息系统、协议与技术 消息系统及其结构 STOMP/JMS/AMQP/MQTT EIP与SEDA 常见开源消息中间件 ZeroMQ Fqueue ActiveMQ与Apollo Kafka与MetaQ RabbitMQ MQ选型与未来发展展望
3. 消息系统、协议与技术
4. Messaging耦合 -> 松耦合 同步 -> 异步化 直接请求 -> 缓冲压力A系统B系统OnewayA系统B系统Request ResponseA系统B系统sendA系统B系统MOMreceivesendMOMreceivereceivesend
5. RPC部署结构A系统C系统D系统F系统B系统E系统
6. Messaging部署结构F系统C系统MQQueueQueueQueueA系统D系统E系统B系统
7. Messaging系统结构A系统B系统MQQueueExchangeStorageDispatch客户端应用层:发送和接收消息的API接口消息模型层:消息、连接、会话、事务等等消息处理层:消息交互逻辑定义、持久化网络传输层:序列化协议、传输协议、可靠机制安全层管理层
8. MQ消息中间件特性系统的稳定性与健壮性 Stability & Robustness 长期稳定运行 高并发下运行 消息的可靠性 Reliability 发送的可靠性 接收的可靠性 事务性 本地事务 分布式事务 QoS&DLQ
9. MQ消息中间件特性性能 Performance Broker性能 基于内存队列 基于内存+异步/同步持久化到磁盘 基于内存+顺序/随机读写磁盘 基于内存+持久化到关系数据库 Client性能 异步/同步发送、接收 确认机制 事务性会话 消息积压 memoryConsumerProducerDiskBroker
10. MQ消息中间件特性高可用性HA Cluster&Sharding 负载均衡LoadBalance 主从Master-Slave 分片Partition Failover 自动 手动 Replication 同步复制 异步复制 MasterSlaveSlaveSlaveReplicationReplicationReplicationMasterSlaveMasterMasterClientClient
11. MQ消息中间件特性扩展性 Scalability 支持多种协议和规范 支持多种接入和传输方式 支持自定义消息策略 支持自定义插件机制 可管理性 Manageability Broker与Queue的管理 Client与Connection的管理 Cluster与Sharding的管理 JMX或REST方式的管理API接口
12. JMS(Java消息服务)关注于应用层的API协议(类似JDBC) Message结构与Queue概念 Body\Header\Property, messages types Queue\Topic\TemporaryQueue\TemporaryTopic Connection\Session\Producer\Consumer\DurableSubscription Messaging行为 PTP&Pub-Sub 持久化 事务机制 确认机制 临时队列
13. Spring-JMSJMSTemplate提供了便利的发送方法,不用再关注异常和资源释放。 CachingConnectionFactory提供了从生产者/消费者到Session,再到Connection的Cache策略,这些资源都能被重复使用。 提供了Message与Objec的转换方式。
14. STOMP(简单文本消息协议)Simple (or Streaming) Text Orientated Messaging Protocol http://stomp.github.io/ 简单、基于Frame、文本的命令式操作协议 类似HTTP/SMTP/FTP等协议 易用、跨平台、MQ无关性 shell下使用telnet或nc命令与MQ交互 STMOP操作演示http://diaocow.iteye.com/blog/1725186 性能较低 ActiveMQ的STOMP支持 协议封装与转换http://activemq.apache.org/stomp.html
15. AMQPAdvanced Message Queuing Protocol 来自于JPMorgan,源于满足金融系统的消息通讯业务需求: http://www.amqp.org/ 线路级协议、实现客户端与不同MQ间的互操作 五个基本部分: 数据类型与编码 消息传输交互 消息定义与行为 事务 安全性
16. MQTTMQ Telemetry Transport MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。 基于TCP的简单二进制通讯协议。 协议各部分的定义精确到bit,最小消息为2bytes。 不同于一般MQ的长连接,协议规定了keep alive timer参数和ping指令。 QoS level决定了交互次数。 为物联网(Internet Of Things)准备的消息协议。
17. EIP与SEDA
http://www.eaipatterns.com/ Staged Event-Driven Architecture http://www.eecs.harvard.edu/~mdw/proj/seda/
18. 常见开源消息中间件
19. ZeroMQ项目地址 http://www.zeromq.org/ 基于C++开发,性能非常高的内存MQ内核 本身就是一个并发框架做的socket库 在集群环境下比TCP更快 支持各种常见平台,但是需要额外的绑定包装 基本不支持持久化 任何程序都可以变成MQ broker(zero brokers) 各种语言的例子 https://github.com/imatix/zguide/tree/master/examples/ 官方文档 http://zguide.zeromq.org/page:all
20. Fqueue (Fast Queue)支持memcached协议(分布式和高可用机制) 基于磁盘持久化存储(顺序处理的日志文件) 高性能(20-30万写入QPS)、低内存使用 配置和使用简单 项目地址 http://code.google.com/p/fqueue/
21. ActiveMQ高可靠的、事务性的消息队列 当前应用最广泛的开源消息中间件 项目开始与2005年CodeHaus 2006年成为Apache项目 Java代码44万行,xml代码3.9万行(5.7.0) 24个Committers 核心人员均为商业公司FuseSource职员 支持多种接入协议和消息协议
22. Java和C++客户端支持无缝地failoverActiveMQ-Failover与Reconnect
23. 状态复制 Pure Master-Slave 基于共享锁 JDBC Master-Slave(表的排它锁) Shared File System Master-Slave(文件的写锁) ActiveMQ-High Availability
24. 不共享存储 全复制(所有消息、所有应答、所有事务) 从服务器(备份服务器)默认不启动对外服务组件,只同步备份主服务器的所有数据。可配置从服务器在主服务器挂机后启动服务充当主服务器。Pure Master-Slave
25. 可靠性好,但性能一般。 推荐使用如果原系统已经存在企业数据库。 从服务器个数没有限制。 配置简单。 从服务器一直待机状态, 除非竞争到DB锁JDBC Master-Slave
26. 推荐使用如果现存SAN 从服务器(Slave)个数无限制 配置简单 注意确认文件锁是否正常及超时时间,NFS v4Shared Storage Master-Slave
27. SecuritySecure channels (SSL) Authentication File based JAAS plugin (Certificates, LDAP) Authorization Destination Level Message Level
28. Apollohttp://activemq.apache.org/apollo/ Apache ActiveMQ的改进版本,使用Scala开发 主要特点: Reactor Based Thread Model 基于hawtdispatch(thread pooling/NIO event framework) Scala 2.9 Implementation Protocol Agnostic(不支持JMS) STOMP、AMQP、MQTT、OpenWire REST Based Management Message Swapping 压缩内存消息,交互到磁盘
29. Kafka与MetaQKafka (基于Scala) O(1)、顺序读写的持久化,高吞吐量是主要设计目标 producer、broker、consumer都是分布式的 Partition Messages 基于ZooKeeper,轻量级broker Pull,消费记录在Consumer端 Consumer 分组 支持并行加载数据到Hadoop 异步复制和异步复制 MetaQ(Java重新实现并改进) 支持本地和分布式事务 文本的监控协议设计
30. RabbitMQhttp://www.rabbitmq.com/ 基于Erlang开发 持久化方式为异步flush到磁盘 工具和插件丰富 RabbitMQ-HA active/passive pair of nodes Master-Slave的Queue镜像复制
31. 使用场景与选型事务可靠性场景(ActiveMQ) 重要业务数据的异步处理 数据的增量远程同步 吞吐量优先场景(MetaQ) 一般性的通知 日志的传输和收集 系统性设计场景 系统间RPC依赖解耦和 耗时同步操作转异步 应用开源MQ最大的挑战是可管理性方面的问题
32. 消息中间件的未来可扩展性 Scalability 大规模弹性的MQ cluster网络 更可靠高效的replication与failover 更细粒度和透明的sharding 可管理性 Manageability 监控 流控 … 更细粒度的专用性MQ 与其他技术领域更紧密的衔接与融合
33. Q&AAny Question?
34. Thanks!
关键词
消息中间件
Apache
HTTP
C/C++
ErLang
相关PPT
开源MQ技术介绍
WebSphere MQ 教程
WebSphere MQ 教程
WebSphere MQ 教程
Primefaces 技术介绍
rfid技术介绍
JMX 技术介绍
WebSphere MQ 配置指引
ActiveMQ 开源消息总线介绍
大数据及相关技术介绍