MetaQ学习-01 MetaQ初探

什么是MetaQ?

MetaQ(Metamorphosis)是淘宝开源的一个Java消息中间件,部分实现了JMS1.1的规范。

MetaQ特性?

  • 文本协议设计,非常透明。
  • 纯Java实现,从通讯到存储。
  • 提供事务支持,包括本地事务和分布式事务。
  • 支持HA复制,包括异步复制和同步复制,保证消息的可靠性。
  • 多种offset存储支持,数据库、磁盘、zookeeper,可自定义实现。
  • 支持group commit,提升数据可靠性和吞吐量。

MetaQ适合应用的场景?

  1. 日志传输。
  2. 消息广播功能。
  3. 数据的顺序同步功能,如mysql binlog复制。
  4. 分布式环境下(broker,producer,consumer都为集群)的消息路由,对顺序和可靠性有极高要求的场景。

MetaQ包含哪些元素?

  1. 消息生产者(Message Producer),负责产生消息并发送消息到meta服务器。
  2. 消息的消费者(Message Consumer),负责消息的消费。(*meta采用pull模型,由消费者主动从meta服务器拉取数据并解析成消息并消费
  3. 消息的主题(Topic),由用户定义并在服务端配置。producer发送消息到某个topic下,consumer从某个topic下消费消息。
  4. 服务器(Server或Broker),就是meta的服务端或者说服务器,在消息中间件中也通常称为Broker。
  5. 消息(Messag),生产者、服务端和消费者之间传输的数据载体。
  6. 分区(Partition),同一个topic下面还分为多个分区,如meta-test这个topic我们可以分为10个分区,分别有两台服务器提供,那么可能每台服务器提供5个分区,假设服务器id分别为0和1,则所有分区为0-0、0-1、0-2、0-3、0-4、1-0、1-1、1-2、1-3、1-4。(分区跟消费者的负载均衡机制有很大关系)
  7. 消费者分组(Comsumer Group),消费者可以是多个消费者共同消费一个topic下的消息,每个消费者消费部分消息,这些消费者就组成一个分组,拥有同一个分组名称,通常也称为消费者集群。
  8. 消息偏移量(Offset),消息在broker上的每个分区都是组织成一个文件列表,消费者拉取数据需要知道数据在文件中的偏移量,这个偏移量就是所谓offset。Offset是绝对偏移量,服务器会将offset转化为具体文件的相对偏移量。

猜你喜欢

转载自15210494746.iteye.com/blog/1967043