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