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. 管理监控
- 管理端配置消费策略,生产策略,消息回放
- 更丰富的监控图表