kafka学习笔记二

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用户注册的一般流程

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

5.1.2用户注册的并行执行

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

5.1.3用户注册的最终一致

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

posted @ 2018-04-11 15:36  我亦在  阅读(125)  评论(0编辑  收藏  举报