
RocketMQ
文章平均质量分 94
hosaos
^_^
展开
-
最终一致性之本地消息表、消息事务
互联网大背景下,微服务盛行,平时开发中难免会遇到分布式事务问题。大家经常会听到CAP原理,即一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三个指标不可能同时满足,而一致性是其中一个最大的难题。本文会从分布式事务产生背景开始,介绍常见分布式事务解决方案,最后会详细介绍基于消息中间件实现最终一致性的两种方案文章目录分布式事务产生背景数据库水平拆分微服务拆分分布式事务解决方案TCCXA事务(2PC)最终一致性(消息事务)错误场景一错误原创 2020-10-18 23:17:10 · 2982 阅读 · 0 评论 -
RocketMq架构高性能设计思路
本文主要介绍Mq在性能方面做的相关优化RocketMq架构经常会提到RocketMq,其性能多么多么好,那么各位有没想过,其性能为什么好?先从RocketMq架构层面入手,先上一张架构图RocketMQ 架构上由 Broker、NameServer、Producer 和 Consumer 组成,各个组件功能如下NameServer:注册中心和配置中心,管理集群的元数据,包括 Topi...原创 2020-04-02 22:10:32 · 4190 阅读 · 12 评论 -
RocketMQ-消息存储基本架构及存储流程
文章目录整体架构存储文件介绍设计思路存储流程消息存储是RocketMQ中最为复杂和最为重要的一部分,本文会简单介绍下RocketMQ的消息存储整体架构、以及发送一条消息时的基本存储流程整体架构存储文件介绍消息存储的架构设计中,有3个重要的存储文件,分别是CommitLog、ConsumeQueue、IndexFile分别展开说明下CommitLog: CommitLog是存储消息内容...原创 2019-10-16 19:14:07 · 2496 阅读 · 0 评论 -
RocketMQ高级特性总结(事务消息、顺序消息、延迟消息)
文章目录事务消息场景分析基本思路及问题所在基本概念RocketMQ-事务消息设计思路两阶段提交事务状态定时回查延迟消息场景分析延迟消息Producer DemoRocketMQ延迟级别实现原理顺序消息全局顺序分区顺序Producer DemoConsumer Demo实现思路及原理事务消息场景分析假设有两个用户,其银行账户不在一个银行中,服务不同,数据库也不同。现在要实现一个功能:用户A给B...原创 2019-09-27 11:33:27 · 4232 阅读 · 1 评论 -
RocketMQ-消息发送源码分析(三)消息重试及Broker故障延迟机制
文章目录问题点消息重试消息队列选择默认机制Broker故障转移机制问题点上篇文章已经介绍了消息发送时,topic的路由信息是如何获取的,最终路由结果是一个TopicPublishInfo对象,其中messageQueueList就是本次消息发送的topic对应的消息队列,再看下TopicPublishInfo属性图加深印象问题又来了,拿到了消息队列后,就进入到了具体消息队列选择、发送的流程...原创 2019-08-15 15:08:18 · 2270 阅读 · 2 评论 -
RocketMQ-消息发送源码分析(二)消息发送基本流程及Topic路由信息获取
文章目录问题点消息发送方式消息发送基本流程路由信息获取问题点同样,在介绍消息发送流程之前,先抛出几个问题消息发送有哪几种方式?producer是如何查找、维护topic对应的路由信息的?消息发送的实现类为DefaultMQProducer消息发送方式先看下DefaultMQProducer中有哪些发送方法大体可分为三种send(Message)为同步发送send(Mes...原创 2019-08-11 11:54:32 · 878 阅读 · 0 评论 -
RocketMQ-消息发送源码分析(一)生产者启动流程
在介绍Mq生产者启动流程之前,先抛出几个个问题,带着问题去分析源码1、消息生产者启动时具体做了什么?2、消息生产者启动时和NameServer,Broker之间建立了什么关系?先从启动入库着手,消息生产者启动入库方法在org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl#start(boolean)中,直接看代码启动...原创 2019-08-10 16:12:34 · 684 阅读 · 0 评论 -
RocketMQ-NameServer路由机制源码分析
文章目录RouteInfoManager路由注册(Broker注册)Broker发起注册请求NameServer接收注册请求路由查询(QueueData、BrokerData信息查询)路由信息删除上篇文章里提到,NameServer在Mq架构中充当一个路由中心的角色,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能Broker管理,NameSer...原创 2019-07-06 18:17:06 · 910 阅读 · 4 评论 -
RocketMQ-NameServer配置加载、启动源码分析
文章目录NameServer作用NameServer启动NameServer配置加载NameServerController初始化kvConfig加载初始化NettyRemotingServer注册默认事件处理线程池定时器scanNotActiveBroker定时器printAllPeriodicallyJVM钩子函数注册NameServerController启动NameServer作用在介...原创 2019-07-01 17:48:30 · 3990 阅读 · 0 评论 -
RocketMQ-顺序消息Demo及实现原理分析
文章目录场景分析全局顺序消费局部顺序消费DemoProducer DemoNormal Consumer DemoOrder Consumer Demo源码分析锁定MessageQueue客户端实现broker端实现锁定ProcessQueue场景分析顺序消费是指消息的产生顺序和消费顺序相同假设有个下单场景,每个阶段需要发邮件通知用户订单状态变化。用户付款完成时系统给用户发送订单已付款邮件,...原创 2019-05-31 19:30:30 · 13464 阅读 · 21 评论 -
RocketMQ-延时消息Demo及实现原理分析
文章目录延时消息Producer Demo源码分析延时消息持久化内部变量含义初始化load方法start方法延时消息调度总结假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭。你会怎么做?最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订单创建时间)>30分钟,则关闭订单。这种方案优点是实现简单,缺点呢?定时扫描意味着隔个几...原创 2019-05-26 19:34:18 · 15109 阅读 · 9 评论