zoukankan      html  css  js  c++  java
  • 48.rocketMQ

    一、简介

      RocketMQ是阿里旗下的一款产品,分为开源版本和非开源版本。相比于ActiveMQ,RocketMQ支持顺序消费、事务机制、失败重试机制、消息可查询、消息订阅、较强的水平扩展能力、亿级堆积能力以及友好的消息拉取模式。RocketMQ的开源社区比较活跃,经受过双十二的考验。(架构师杨正坤:oceanBase)

      在这里,我们用nameServer来替代zookeeper,nameServer不遵循JMS,有一些ActiveMQ中没有涉及到的专业术语需要了解一下:

    • push consumer
    • pull consumer
    • producer group 一类producter的集合
    • consumer group 一类consumer名称
    • broker:消息中转
    • 广播消息
    • 发布订阅模式:RocketMQ中只有这一种模式,只是有基于一个还是多个之说
    • 集群消息
    • message Filter:java代码上传
    • message persistence:仅支持kafka和RocketMQ这两种持久化
    • RocketMQ是无界的
    • 带有消息过滤

    producer group 和 customer group

    rocketMQ原理图

    二、搭建

    2.1 几种模式

    1. 单master(基本不用)
    2. 多master多slave(不常用)
    3. 多master模式(常用,大部分场景可以满足)
    4. 异步复制:向master发送成功就返回给应用表名成功
    5. 同步双写:数据和服务都无单点,可靠性很高,向master和slave都发送成功才告诉应用成功

    2.2 步骤

    1. host配置
    2. 上传解压rocketmq压缩包
    3. 创建两台机器的存储路径
      ../store
      ../store/comitlog
      ../store/consumequeue
      ../sotre/index
    4. 修改 broker-a.properties <-- master1
             broker-b.properties <-- master2
      可清掉默认配置
      brokerClusterName都一样
      brokerName=broker-a
      brokerId=0表示master
    5. 修改日志文件
    6. 修改启动参数(JVM调优)
      runbroker.sh 最小堆是1g
      runserver.sh

     四、聊一聊disruptor的全局事务和rocket的分布式事务

    有人说disruptor能够实现分布式事务,实际上disruptor能够支持的那不叫分布式事务,而是叫全局事务。

    p1生产数据给c1和c2,c1和c2都的执行结果给c3,c3看看c1和c2是不是都执行成功了,有一个执行不成功就回滚

    真正的分布式事务应该是什么样的呢?

    应该是ctrl指挥p生产数据,p生产完就完全不管这部分数据了,立即向ctrl报告。而mq拿到数据后就发送给订阅者,不管这期间发生回滚、重试神马,都在mq和c之间进行,而不会影响到前面的操作。也就是像图中那样,这一套系统被分成完全独立的两块,不相互影响。

    五、mq架构

  • 相关阅读:
    20145236 《Java程序设计》 第6周学习总结
    20145236 《Java程序设计》第4周学习总结
    20145236 冯佳 《Java程序设计》第3周学习总结
    20145236 冯佳 《Java程序设计》第2周学习总结
    《Java程序设计》实验三 实验报告
    20145202马超 《Java程序设计》第九周学习总结
    20145202马超 《Java程序设计》第八周学习总结
    20145202马超 实验二《Java面向对象程序设计》实验报告
    20145202马超 《Java程序设计》第七周学习总结
    20145202马超 《Java程序设计》第六周学习总结
  • 原文地址:https://www.cnblogs.com/sigm/p/6675561.html
Copyright © 2011-2022 走看看