XXL-MQ v1.2.0,分布式消息队列,集群时移除 ZK 依赖,更轻量级 - V2EX
xuxueli
V2EX    Java

XXL-MQ v1.2.0,分布式消息队列,集群时移除 ZK 依赖,更轻量级

  •  
  •   xuxueli Nov 28, 2018 2307 views
    This topic created in 2722 days ago, the information mentioned may be changed or developed.

    Release Notes

    • 1、client 端与 Broker 长链初始化优化,防止重复创建连接。
    • 2、POM 多项依赖升级;
    • 3、UI 组件升级;
    • 4、规范项目目录结构;
    • 6、超时控制;
    • 5、通讯迁移至 xxl-rpc ;
    • 6、除了 springboot 类型示例;新增无框架示例项目 "xxl-mq-samples-frameless"。不依赖第三方框架,只需 main 方法即可启动运行;
    • 7、消息生产,兼容“异步批量多线程生产”+“同步生产”两种方式,提升消息发送性能;
    • 8、底层通讯全异步化:消息新增 + 消息新增接受 + 消息回调 + 消息回调接受;仅批量 PULL 消息与锁消息非异步;
    • 9、串行消费优化,旧版本固定第一台消费,导致其压力过大;新版支持自定义 shardingId 从而实现串行消息的负载均衡,缓解单台压力;
    • 10、广播消息优化,旧版本不支持消息持久化,新版本支持消息持久化,而且广播支持与串行结合实用,更加灵活;
    • 11、并发消息、串行消息、广播消息全部优化重构,底层逻辑统一,方便后续维护扩展;
      • 串行:取消 ZK 依赖,废弃旧版 ZK 锁方式;优化为通过消息 shardingId 结合消费者排序取模方式;相同 shardingId 的消息将会固定被同一个消费者消费;
      • 并行:沿用旧版消费者排序取模方式,不过取模参数新增支持 shardingId 参数;确保消息平均分配给在线消费者;
      • 广播:取消 ZK 依赖,废弃旧版 ZK 方式;优化为通过消息 group 属性群发方式;每个 group 都会消费该消息,但相同 group 下消息仅被消费一次;
    • 12、Broker 服务支持自定义指定注册 IP 等信息,位置 "XxlMqBrokerImpl.initServer";
    • 13、Topic 自动发现:消息中心支持动态发现 Topic,并展示在消息主题列表,延时 1min ;
    • 14、运行报表:支持展示在线业务线、消息主题、消息记录等信息、可在线查看消息日期分布图,成功分布图等;
    • 15、业务线管理:支持设置业务线,用于分组管理消息主题;
    • 16、消息主题管理:支持在线管理消息主题,自动发现消息主题;并支持完善消息主题扩展信息,如业务线、负责人、告警邮箱等;
    • 17、消息记录界面,交互优化重构,进一步优化消息筛选、管理交互;
    • 18、自动重试优化,任务重试时,生效时间重置为 1min 之后,重试次数减一;
    • 19、记住密码功能优化,选中时永久记住;非选中时关闭浏览器即登出;
    • 20、事务开关:支持设置消息事务开关,开启时事务保证消息精准消费一次;未开启时小概率存在重复消费,仅依靠注册中心分片检测避免重复,但性能略高;
    • 21、告警功能:支持以 Topic 粒度监控消息,存在失败消息时主动推送告警邮件;
    • 22、轨迹 Log 优化,新增、更新时记录核心数据;消息日志格式统一;
    • 23、消息在线清理:在消息记录界面,支持在线清理消息数据;
    • 24、过期消息自动清理:消息中心新增参数 “ xxl-mq.log.logretentiondays ”设置消息过期天数,过期成功消息将会自动清理;
    • 25、超时强化,除了客户端支持超时控制外;服务端新增线程扫描,主动处理超时消息;消息超过 "生效时间 + 超时时间 + 1HOUT" 之后仍然未结束,将会主动标记为失败;
    • 26、左侧菜单规范:运行报表(业务线,主题数,消息记录数;总消息成功率,日分布柱状图,总分布饼图) + 消息主题 + 消息记录 + 使用教程;
    • 27、注册中心迁移至 DB,基于 "long polling" 实现注册机器实时感知;注册中心代码及逻辑来源自“ XXL-RPC 原生轻量级注册中心”;
    • 28、轻量级改造,移除对 ZK 依赖,仅依赖 DB 即可完整集群方式提供服务;缺点,非强一致性可能导致重复消费,开启事务开关可以避免该问题;
    • 29、文档示例完善,包括:并发消息、串行消息、广播消息、延迟消息、失败重试消息、超时控制消息等;
    • 30、文档完善:消息模型说明,延时消息说明、事务消息说明、失败重试、超时控制说明,
    • 31、容器化:提供官方 docker 镜像,并实时更新推送 dockerhub,进一实现产品开箱即用;

    简介

    XXL-MQ 是一款轻量级分布式消息队列,支持 "并发消息、串行消息、广播消息、延迟消息、事务消息、失败重试、超时控制" 等消息特性。现已开放源代码,开箱即用。

    输入图片说明

    特性:

    • 1、简单易用: 一行代码即可发布一条消息; 一行注解即可订阅一个消息主题;
    • 2、轻量级: 部署简单,不依赖第三方服务,一分钟上手;
    • 3、消息中心 HA:消息中心支持集群部署,可大大提高系统可用性,以及消息吞吐能力;
    • 4、消费者 HA:消费者支持集群部署,保证消费者可用性;
    • 5、三种消息模式:
      • 并行消息:消息平均分配在该主题在线消费者,分片方式并行消费;适用于吞吐量较大的消息场景,如邮件发送、短信发送等业务逻辑
      • 串行消息:消息固定分配给该主题在线消费者中其中一个,FIFO 方式串行消费;适用于严格限制并发的消息场景,如秒杀、抢单等排队业务逻辑;
      • 广播消息:消息将会广播发送给该主题在线消费者分组,全部分组都会消费该消息,但是一个分组下只会消费一次;适用于广播场景,如广播更新缓存等
    • 6、延时消息: 支持设置消息的延迟生效时间, 到达设置的生效时间时该消息才会被消费;适用于延时消费场景,如订单超时取消等;
    • 7、事务性: 消费者开启事务开关后,消息事务性保证只会成功执行一次;
    • 8、失败重试: 支持设置消息的重试次数, 在消息执行失败后将会按照设置的值进行消息重试执行,直至重试次数耗尽或者执行成功;
    • 9、超时控制: 支持自定义消息超时时间,消息消费超时将会主动中断;
    • 10、吞吐量: 依赖于部署的消费中心集群和 DB 性能;DB 可借助多表提升性能,不考虑 DB 的情况下,吞吐量可以无限横向扩展;
    • 11、消息可见: 系统中每一条消息可通过 Web 界面在线查看,甚至支持编辑消息内容和消息状态;
    • 12、消息可追踪: 支持追踪每一条消息的执行路径, 便于排查业务问题;
    • 13、容器化:提供官方 docker 镜像,并实时更新推送 dockerhub,进一步实现产品开箱即用;
    • 14、消息失败告警:支持以 Topic 粒度监控消息,存在失败消息时主动推送告警邮件;默认提供邮件方式失败告警,同时预留扩展接口,可方面的扩展短信、钉钉等告警方式;
    • 15、容器化:提供官方 docker 镜像,并实时更新推送 dockerhub,进一步实现产品开箱即用;

    文档地址

    技术交流

    5 replies    2018-11-28 13:15:53 +08:00
    ysweics
        1
    ysweics  
       Nov 28, 2018
    赞一下,楼主的项目都是在其他类似的项目变成轻量级,方便学习
    hhhsuan
        2
    hhhsuan  
       Nov 28, 2018
    zeromq 就很轻量啊
    backwind
        3
    backwind  
       Nov 28, 2018
    万里长城永不倒,对 xxl 大神的膜拜永不变;最近需求多么
    xuxueli
        4
    xuxueli  
    OP
       Nov 28, 2018
    @backwind 感谢关注啊!忙的时候周末迭代。


    @ysweics 多谢支持啊!毕竟多数业务场景、数据没有到达一定量级,轻量级方案这个时候往往是最好的解决方案。
    xuxueli
        5
    xuxueli  
    OP
       Nov 28, 2018
    @hhhsuan xxl-mq 相较于其他 mq 还是有差异的啊,比如:

    并行消息:适用于吞吐量较大的消息场景,如邮件发送、短信发送等业务逻辑
    串行消息:FIFO 方式串行消费;适用于严格限制并发的消息场景,如秒杀、抢单等排队业务逻辑;
    广播消息:适用于广播场景,如广播更新缓存等
    延时消息: 适用于延时消费场景,如订单超时取消等;
    事务性: 开启事务开关后,消息事务性保证只会成功执行一次;
    消息可追踪: 支持追踪每一条消息的执行路径, 便于排查业务问题;
    ……

    这些特性往往更贴合业务需求,方便故障排错。
    About     Help     Advertise     Blog     API     FAQ     Solana     3113 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 55ms UTC 14:48 PVG 22:48 LAX 07:48 JFK 10:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86