RocketMQ
文章平均质量分 68
colspanprince
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RocketMQ源码解读四 生产者发送数据
一、创建DefaultMQProducerImplDefaultMQProducer默认Topic是TBW102二、开始发送DefaultMQProducerImpl类,从namesrv获取Topic信息 private TopicPublishInfo tryToFindTopicPublishInfo(final String topic) { TopicPublishInfo topicPublishInfo = this.topicPublishInfoTab原创 2021-04-28 16:51:37 · 216 阅读 · 0 评论 -
RocketMQ源码解读四 Broker写入数据
存储的核心逻辑是CommitLog类的asyncPutMessage方法,截取关键源码如下 public CompletableFuture<PutMessageResult> asyncPutMessage(final MessageExtBrokerInner msg) { /* * 删除了部分不重要的代码 */ putMessageLock.lock(); try { .原创 2021-03-05 17:06:12 · 481 阅读 · 0 评论 -
RocketMQ源码解读三 Broker启动篇
Broker的启动也和NameSrv一样,主要有createBrokerController和start这2个方法 public static void main(String[] args) { start(createBrokerController(args)); }createBrokerController方法源码如下,这边根据brokerRole的值,对brokerId和accessMessageInMemoryMaxRatio进行了特殊设置,暂不清楚这.原创 2021-03-01 15:17:46 · 516 阅读 · 1 评论 -
RocketMQ 源码解读二 NameSrv启动篇
NameSrv启动的main方法,核心就2个,createNamesrvController和start方法 public static NamesrvController main0(String[] args) { try { NamesrvController controller = createNamesrvController(args); start(controller); String .原创 2021-02-26 16:19:16 · 348 阅读 · 2 评论 -
RocketMQ 源码解读一 准备工作
一、启动nameser时报错Please set the ROCKETMQ_HOME variable in your environment to match the location of1、配置environment variable 配置name为 ROCKETMQ_HOME value为D:\Users\jackray\rocketmq\namesrv(rocketmq namesrv的源码路径)2、在namesrv文件根目录下创建conf、store、logs 目录,复制distribu原创 2021-02-26 14:57:07 · 285 阅读 · 0 评论 -
《从零开始带你成为消息中间件实战高手》 笔记一
一、第十五课 消息中间件的作用异步化提升性能、解耦、流量削峰二、第十七课 Kfaka、RabbitMQ、RocketMQ的比较三、第十九课 RocketMQ基本架构图原创 2021-02-23 15:20:41 · 798 阅读 · 0 评论 -
《从零开始带你成为消息中间件实战高手》 笔记六
一、第七十八课 为什么基于RocketMQ进行订单库数据同步时消息会乱序场景:通过canal同步mysql数据,并把binlog消息放入RocketMQ,同步系统从MQ中同步消息写入别的库,实现数据同步问题:数据同步后,发现两边的数据不一致发生原因:比如有2条SQL,应该先insert,再update,结果同步时先update了,再insert,导致数据不一致底层原因:因为一个Topic可以指定多个MessageQueue,写入消息时,消息也会均匀分配给多个MessageQueue。所以可.原创 2021-02-18 11:38:53 · 512 阅读 · 0 评论 -
《从零开始带你成为消息中间件实战高手》 笔记五
一、第六十七课 从RocketMQ全链路分析为什么用户支付后没收到红包可能原因:1)订单系统推送消息到MQ失败2)MQ故障,丢失了os cache中的数据3)红包系统拿到了消息,却没有进行ACK,让MQ以为消费成功了二、第六十八课 发消息零丢失方案凭借RocketMQ自身的事务消息功能,可以保证推送出的消息一定会进入MQ中...原创 2021-02-17 11:01:17 · 501 阅读 · 1 评论 -
《从零开始带你成为消息中间件实战高手》 笔记四
一、第四十九课 生产者是如何发送消息的1、Topic、MessageQueue、Broker之间的关系一个Topic可以分布在多个Broker上,所以Topic的数据是分布式存储在多个Broker机器上的创建Topic的时候要指定MessageQueue的数量。MessageQueue是非常关键的一个数据分片机制,它将Topic的数据拆成了很多个数据分片,然后在每个Broker上存储了一些MessageQueue,通过这个方法,实现了Topic的分布式存储二、生产者写入生产者会从..原创 2021-02-13 13:47:37 · 1921 阅读 · 2 评论 -
《从零开始带你成为消息中间件实战高手》 笔记三
一、第三十七课 改造订单支付环节原来的架构图现在的架构图经过改造后,一旦支付成功,系统只需要更新订单状态+扣掉库存+发送订单消息到RocketMQ这三步就足够了,而积分、营销、推送、仓储等系统则从MQ中消费信息我们部署的2台Master Broker,Topic数据会分散在这2个Master Broker上。因此当我们往Topic发送订单数据,会根据一定的算法把消息发送到一个Broker上二、第三十九课 RocketMQ的发送方式和消费模式1、发送消息的方式1)同步发..原创 2021-02-10 10:15:55 · 446 阅读 · 1 评论 -
《从零开始带你成为消息中间件实战高手》 笔记二
一、RocketMQ架构图二、第三十一课 对OS内核和JVM参数调整1、对RocketMQ集群进行OS内核参数调整1)vm.overcommit_memory有0、1、2三个值可选0:在中间件申请内存时,os内核会检查可用内存是否足够,如果足够就分配内存给你,如果不太够,就拒绝分配内存,导致中间件报错(一般不设置0) 1:把所有可用的内存都允许分配给中间件(一般设置为1) 2:内核允许分配超过所有物理内存和交换空间总和的内存(一般不设置2)2)vm.max_map_coun..原创 2021-02-09 10:29:56 · 443 阅读 · 0 评论
分享