摘要:
分布式队列因为有高可靠性的要求,所以数据要进行持久化存储 持久化存储 消息生成者发送消息 MQ收到消息,将消息进行持久化,在存储中新增一条记录 返回ACK给生产者 MQ push 消息给对应的消费者,然后等待消费者返回ACK 如果消息消费者在指定时间内成功返回ack,那么MQ认为消息消费成功,在存储 阅读全文
摘要:
消息发送流程 导入MQ客户端依赖 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.4.0</version> </dependency> 消 阅读全文
摘要:
CAS 导致 ABA 问题CAS 算法实现了一个重要的前提,需要取出内存中某时刻的数据,并在当下时刻比较并替换,那么这个时间差会导致数据的变化。 比如说一个线程 one 从内存位置 V 中取出A,这时候另外一个线程 two 也从内存中取出 A,并且线程 two进行了一些操作将值变成了B,然后线程 t 阅读全文
摘要:
涉及到的常用类 ArrayList HashSet HashMap 在多线程下比较容易出现的异常是 java.util.ConcurrentModificationException,也就是并发修改异常。这个是由于并发争抢修改导致写入数据中断,数据出现异常 案例演示 List<String> lis 阅读全文
摘要:
1.volatile是Java虚拟机提供的轻量级的同步机制 1.1保证可见性1.2不保证原子性1.3禁止指令重排 JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念 并不真实存在,它描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段,静态字段和 阅读全文
摘要:
机器信息 192.168.119.129 主 192.168.119.128 从 配置host【两台机器】 vim /etc/hosts 添加 192.168.119.129 rocketmq-nameserver1 192.168.119.129 rocketmq-master1 192.168. 阅读全文
摘要:
总体架构 消息高可用采用2m-2s(同步双写)方式 集群工作流程 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心。 Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含 阅读全文
摘要:
各角色介绍 Producer:消息的发送者;举例:发信者 Consumer:消息接收者;举例:收信者 Broker:暂存和传输消息;举例:邮局 NameServer:管理Broker;举例:各个邮局的管理机构 Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收 阅读全文
摘要:
RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。 准备工作 下载RocketMQ http://rocketmq.apache.org/dowloading/releases/ 环境 阅读全文
摘要:
1.比较并交换 CASDemo /** * CAS => compareAndSet * 比较并交换 */ public class CASDemo { public static void main(String[] args) { AtomicInteger atomicInteger = ne 阅读全文