开源MQ技术介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Kimmking2013-6Agenda消息系统、协议与技术消息系统及其结构STOMP/JMS/AMQP/MQTTEIP与SEDA常见开源消息中间件ZeroMQFqueueActiveMQ与ApolloKafka与MetaQRabbitMQMQ选型与未来发展展望消息系统、协议与技术Messaging耦合-松耦合同步-异步化直接请求-缓冲压力A系统B系统OnewayA系统B系统RequestResponseA系统B系统sendA系统B系统MOMreceivesendMOMreceivereceivesendRPC部署结构A系统C系统D系统F系统B系统E系统Messaging部署结构F系统C系统MQQueueQueueQueueA系统D系统E系统B系统Messaging系统结构A系统B系统MQQueueExchangeStorageDispatch客户端应用层:发送和接收消息的API接口消息模型层:消息、连接、会话、事务等等消息处理层:消息交互逻辑定义、持久化网络传输层:序列化协议、传输协议、可靠机制安全层管理层MQ消息中间件特性系统的稳定性与健壮性Stability&Robustness长期稳定运行高并发下运行消息的可靠性Reliability发送的可靠性接收的可靠性事务性本地事务分布式事务QoS&DLQMQ消息中间件特性性能PerformanceBroker性能基于内存队列基于内存+异步/同步持久化到磁盘基于内存+顺序/随机读写磁盘基于内存+持久化到关系数据库Client性能异步/同步发送、接收确认机制事务性会话消息积压memoryConsumerProducerDiskBrokerMQ消息中间件特性高可用性HACluster&Sharding负载均衡LoadBalance主从Master-Slave分片PartitionFailover自动手动Replication同步复制异步复制MasterSlaveSlaveSlaveReplicationReplicationReplicationMasterSlaveMasterMasterClientClientMQ消息中间件特性扩展性Scalability支持多种协议和规范支持多种接入和传输方式支持自定义消息策略支持自定义插件机制可管理性ManageabilityBroker与Queue的管理Client与Connection的管理Cluster与Sharding的管理JMX或REST方式的管理API接口JMS(Java消息服务)关注于应用层的API协议(类似JDBC)Message结构与Queue概念Body\Header\Property,messagestypesQueue\Topic\TemporaryQueue\TemporaryTopicConnection\Session\Producer\Consumer\DurableSubscriptionMessaging行为PTP&Pub-Sub持久化事务机制确认机制临时队列Spring-JMSJMSTemplate提供了便利的发送方法,不用再关注异常和资源释放。CachingConnectionFactory提供了从生产者/消费者到Session,再到Connection的Cache策略,这些资源都能被重复使用。提供了Message与Objec的转换方式。STOMP(简单文本消息协议)Simple(orStreaming)TextOrientatedMessagingProtocol简单、基于Frame、文本的命令式操作协议类似HTTP/SMTP/FTP等协议易用、跨平台、MQ无关性shell下使用telnet或nc命令与MQ交互STMOP操作演示性能较低ActiveMQ的STOMP支持协议封装与转换AdvancedMessageQueuingProtocol来自于JPMorgan,源于满足金融系统的消息通讯业务需求:线路级协议、实现客户端与不同MQ间的互操作五个基本部分:数据类型与编码消息传输交互消息定义与行为事务安全性MQTTMQTelemetryTransportMQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。基于TCP的简单二进制通讯协议。协议各部分的定义精确到bit,最小消息为2bytes。不同于一般MQ的长连接,协议规定了keepalivetimer参数和ping指令。QoSlevel决定了交互次数。为物联网(InternetOfThings)准备的消息协议。EIP与SEDAEnterpriseIntegrationPatternsStagedEvent-DrivenArchitecture~mdw/proj/seda/常见开源消息中间件ZeroMQ项目地址基于C++开发,性能非常高的内存MQ内核本身就是一个并发框架做的socket库在集群环境下比TCP更快支持各种常见平台,但是需要额外的绑定包装基本不支持持久化任何程序都可以变成MQbroker(zerobrokers)各种语言的例子官方文档:allFqueue(FastQueue)支持memcached协议(分布式和高可用机制)基于磁盘持久化存储(顺序处理的日志文件)高性能(20-30万写入QPS)、低内存使用配置和使用简单项目地址高可靠的、事务性的消息队列当前应用最广泛的开源消息中间件项目开始与2005年CodeHaus2006年成为Apache项目Java代码44万行,xml代码3.9万行(5.7.0)24个Committers核心人员均为商业公司FuseSource职员支持多种接入协议和消息协议Java和C++客户端支持无缝地failoverActiveMQ-Failover与Reconnect状态复制PureMaster-Slave基于共享锁JDBCMaster-Slave(表的排它锁)SharedFileSystemMaster-Slave(文件的写锁)ActiveMQ-HighAvailability不共享存储全复制(所有消息、所有应答、所有事务)从服务器(备份服务器)默认不启动对外服务组件,只同步备份主服务器的所有数据。可配置从服务器在主服务器挂机后启动服务充当主服务器。PureMaster-Slave可靠性好,但性能一般。推荐使用如果原系统已经存在企业数据库。从服务器个数没有限制。配置简单。从服务器一直待机状态,除非竞争到DB锁JDBCMaster-Slave推荐使用如果现存SAN从服务器(Slave)个数无限制配置简单注意确认文件锁是否正常及超时时间,NFSv4SharedStorageMaster-SlaveSecuritySecurechannels(SSL)Authentication•Filebased•JAASplugin(Certificates,LDAP)Authorization•DestinationLevel•MessageLevelApolloApacheActiveMQ的改进版本,使用Scala开发主要特点:ReactorBasedThreadModel基于hawtdispatch(threadpooling/NIOeventframework)Scala2.9ImplementationProtocolAgnostic(不支持JMS)STOMP、AMQP、MQTT、OpenWireRESTBasedManagementMessageSwapping压缩内存消息,交互到磁盘Kafka与MetaQKafka(基于Scala)O(1)、顺序读写的持久化,高吞吐量是主要设计目标producer、broker、consumer都是分布式的PartitionMessages基于ZooKeeper,轻量级brokerPull,消费记录在Consumer端Consumer分组支持并行加载数据到Hadoop异步复制和异步复制MetaQ(Java重新实现并改进)支持本地和分布式事务文本的监控协议设计RabbitMQ基于Erlang开发持久化方式为异步flush到磁盘工具和插件丰富RabbitMQ-HAactive/passivepairofnodesMaster-Slave的Queue镜像复制使用场景与选型事务可靠性场景(ActiveMQ)重要业务数据的异步处理数据的增量远程同步吞吐量优先场景(MetaQ)一般性的通知日志的传输和收集系统性设计场景系统间RPC依赖解耦和耗时同步操作转异步应用开源MQ最大的挑战是可管理性方面的问题消息中间件的未来可扩展性Scalability大规模弹性的MQcluster网络更可靠高效的replication与failover更细粒度和透明的sharding可管理性Manageability监控流控…更细粒度的专用性MQ与其他技术领域更紧密的衔接与融合Q&AAnyQuestion?Thanks!

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功