京东JMQ的学习(1)

JMQ

JMQ是系统技术部消息组自主研发的,提供可靠传递消息及数据的消息中间件平台,具有高的可用性、扩展性和运维性。

架构

JMQ架构图

特点

1.技术标准
  • 自定义协议规范
  • zookeeper作为分布式协调器
2.高可用
  • 采用Master/Slave模式部署,支持Failover
  • 采用同步发送、消息持久化,防止数据丢失
  • 消息异步归档到云存储,便于故障跟踪
  • 统一的异常消息重试服务,便于容错
3.高性能
  • 自定义消息序列化,默认开启压缩
  • 批量发送和接收
  • 基于Netty4,采用NIO,EPOLL模型
  • 更轻量级的数据存储模型,消息存储一份,减少拷贝,支持组提交,更快的索引,消息积压不影响写入速度
  • 内存镜像文件,更少的内存拷贝操作
    测试数据:
    • 同步刷盘,1K消息体生产TPS为21000,响应时间为0.004秒
    • 异步刷盘,1K消息体生产TPS为53894,响应时间为0.004秒
4. 轻客户端
  • 只和Broker通信
  • 内置管理和性能采集协议
  • 较合理的超时时间设置
  • 批量发送和消费,消费者为拉模式
  • 支持二阶段事务
  • 支持业务ID顺序消费(服务端BROKER数量调整或网络异常容错会破坏顺序)
  • 支持机房部署,就近发送和消费
5. 更完善集群
  • 一组支持多个节点,主、从、备份类型
  • 主从默认同步复制,可以降级为异步复制,备份节点异步复制
  • 更完善的主从选举,从节点可以从Agent同步主节点数据,防止数据不一致
  • 支持从节点和备份节点消费
6. 管理监控
  • 管理端配置消费策略,生产策略,消息回放
  • 更丰富的监控图表