MQ的扩展

1 JMS消息服务器ActiveMQ

http://activemq.apache.org/

说明:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支
    持JMS1.1和J2EE 1.4规范的。
主要特点:
    a、多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python,PHP;
    b、应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP;
    c、完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务);
    d、对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持
       Spring2.0的特性;
    e、通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中
       通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容
       J2EE 1.4商业服务器上;
    f、支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA;
    g、支持通过JDBC和journal提供高速的消息持久化;
    h、从设计上保证了高性能的集群,客户端-服务器,点对点;
    i、支持Ajax;
    j、支持与Axis的整合;
    k、可以很容易得调用内嵌JMS provider,进行测试。

2 分布式消息中间件Metamorphosis

https://www.oschina.net/p/metamorphosis

说明:Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于
    LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞
    吐量、顺序消息、广播和日志数据传输等场景,在淘宝和支付宝有着广泛的应用,现已开源。
主要特点:
    a、生产者、服务器和消费者都可分布;
    b、消息存储顺序写;
    c、性能极高,吞吐量大;
    d、支持消息顺序;
    e、支持本地和XA事务;
    f、客户端pull,随机读,利用sendfile系统调用,zero-copy ,批量拉数据;
    g、支持消费端事务;
    h、支持消息广播模式;
    i、支持异步发送消息;
    k、支持http协议;
    l、支持消息重试和recover;
    m、数据迁移、扩容对用户透明;
    n、消费状态保存在客户端;
    o、支持同步和异步复制两种HA;
    p、支持group commit。

3 分布式消息中间件RocketMQ

http://rocketmq.apache.org/

RocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点:
    a、能够保证严格的消息顺序;
    b、提供丰富的消息拉取模式;
    c、高效的订阅者水平扩展能力;
    d、实时的消息订阅机制;
    e、亿级消息堆积能力;
    f、Metaq3.0 版本改名,产品名称改为RocketMQ。

4 其他MQ

a、.NET消息中间件 DotNetMQ;
b、基于HBase的消息队列 HQueue;
c、Go 的 MQ 框架 KiteQ;
d、AMQP消息服务器 RabbitMQ;
e、MemcacheQ 是一个基于 MemcacheDB 的消息队列服务器。

5为什么需要消息队列

说明:消息系统的核心作用有三点:解耦、异步和并行。

5.1用户注册案例

5.1.1用户注册的一般流程

1umFtPq.png

问题:随着后端流程越来越多,每步流程都需要额外的耗费很多时间,从而导致用户更长的等待延迟

5.1.2用户注册的并行执行

WsJYDcw.png

问题:系统并行的发起了四个请求,四个请求中,如果某一个环节执行一分钟,其他环节再快,用户
    也需要等待一分钟。如果其中某个环节异常之后,整个服务会挂掉。

5.1.3用户注册的最终一致

说明:1、保证主流程的正常执行、执行成功之后发生MQ消息出去;
    2、需要这个destination的其他系统通过消费数据再执行,最终一致。

lMzRk8R.png

SVQj6h0.png

转载于:https://www.cnblogs.com/javacj/p/8796059.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐