
RocketMQ
Shen_Li_Java_ing
加电!加电!!加电!!!
展开
-
CAP原理---最终一致性
当客户端在Redis的主节点修改了数据后,立即返回,即使在主从网络断开的情况下,主节点依旧可以正常对外提供修改服务,所以Redis满足「可用性」。,最终从节点的状态会和主节点的状态将保持一致。在网络分区发生时,两个分布式节点之间无法进行通信,我们对一个节点进行的修改操作将无法同步到另外一个节点,所以数据的「一致性」将无法满足,因为两个分布式节点的数据不再保持一致。分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的,这意味着必然会有网络断开的风险,这个网络断开的场景的专业词汇叫着「网络分区」。原创 2024-07-02 22:06:29 · 499 阅读 · 0 评论 -
Broker和NameServer的心跳机制
然后NameServer会每隔10s运行一个任务,去检查一下各个Broker的最近一次心跳时间,如果某个Broker超过120s都没发送心跳了,那么就认为这个Broker已经挂掉了。Broker会每隔30s给所有的NameServer发送心跳,告诉每个NameServer自己目前还活着。Broker会跟每个NameServer都建立一个TCP长连接,然后定时通过TCP长连接发送心跳请求过去。原创 2024-06-12 22:30:49 · 282 阅读 · 0 评论 -
RocketMQ事务性消息
(4)发送方根据本地事务执行结果向服务端提交二次确认(Commit 或是 Rollback),服务端收到Commit 状态则将半事务消息标记为可投递,订阅方最终将收到该消息;由于消息为半事务消息,在未收到生产者对该消息的二次确认前,此消息被标记成“暂不能投递”状态。(1)在断网或者是应用重启的特殊情况下,上述步骤4提交的二次确认最终未到达服务端,经过固定时间后服务端将对该消息发起消息回查。(3) 发送方根据检查得到的本地事务的最终状态再次提交二次确认,服务端仍按照步骤4对半事务消息进行操作。原创 2024-06-12 22:26:54 · 421 阅读 · 0 评论 -
RocketMQ中Topic、MessageQueue以及Broker之间到底是什么关系?
比如你现在有一个Topic,我们为他指定创建了4个MessageQueue,那么我们接着来思考一下,这个Topic的数据在Broker集群中是如何分布的?假如我们现在集群有两个master-broker一个master对应两个slave。通过这个方法,就可以实现Topic数据的分布式存储!原创 2024-05-30 22:01:31 · 736 阅读 · 0 评论 -
RocketMQ重复消费的幂等性问题
----》重复消费根部避免不了。只能从消息的幂等消费入手。----》多次调用接口,得到的结果都一样。原创 2024-05-30 21:59:23 · 578 阅读 · 0 评论 -
RocketMQ如何保证消息不丢失
再反馈会Broker说消费成功,这样才可以保证消费阶段不丢消息。有些业务场景为了快速消费数据就拿到消息后直接返回成功,但是有可能消费数据失败,那这条数据对下游来说就等于丢失了。存储消息的过程,先存到内存page cache,再持久化到磁盘,默认配置是直接到内存后就返回成功了,但是如果这时候机器断电了,就会丢失消息,需要配置成落磁盘后再返回成功。,那为什么还会有异步,因为异步发送效率高。原创 2024-05-27 21:47:43 · 374 阅读 · 0 评论 -
RocketMQ如何保证顺序消费
以订单为例,将不同的订单分配到不同的queue中,让某一个订单的消息固定分配到一个queue中,可以采用固定的订单号hash然后对queue长度取模,这样每个订单的消息就按顺序发送了,还必须要保证下游单线程消费数据,如果是多线程的话,会出现和之前一样类似的问题,多线程不能按照预想的顺序去消费。topic可能分为多个queue,那queue的分配是随机的,不同queue之间的消费速率不一样,所以可能导致履约成功的消息最先到下游。业务场景需要,比如一个订单的流程,从创建到支付到发货到评价,需要按照顺序进行。原创 2024-05-27 21:46:55 · 837 阅读 · 0 评论 -
什么是MessageQueue(RocketMQ中的队列)
在RocketMQ中,MessageQueue是消息的物理存储单元,用于划分和管理消息的存储和消费。每个Topic都会被划分为多个MessageQueue,消息会按照一定的规则分配到不同的MessageQueue中。具体来说,RocketMQ的MessageQueue具有以下特点:1.唯一标识:每个MessageQueue都有一个唯一标识符,由Topic名称和队列编号组成。2.消息顺序性:对于同一个MessageQueue中的消息,RocketMQ保证其消费的顺序性,即先进先出(FIFO)。原创 2024-05-21 22:35:54 · 815 阅读 · 0 评论 -
Broker的主从架构
为了保证MQ的数据不丢失而且具备一定的高可用性,所以一般都是得将Broker部署成Master-Slave模式的,也就是—个Master Broker对应一个Slave Broker Master需要在接收到消息之后,将数据同步给Slave,这样一旦Master Broker挂了,还有Slave上有一份数据。Master上有全量数据,但是去Master上消费,Master压力会很大,但去Slave上去读,数据不全,但是很快。那RocketMQ如何取舍?---》当然是两者相结合。原创 2024-05-21 22:33:57 · 2448 阅读 · 0 评论 -
RocketMQ消息发送模式
异步发送是指发送方发出一条消息后,不等服务端返回响应,接着发送下一条消息的通讯方式。2.异步发送:在异步发送模式下,消息发送方发送消息后不会等待Broker的确认响应,而是立即返回并继续执行后续的代码逻辑。1.同步发送:在同步发送模式下,消息发送方会一直等待消息发送的结果返回。3.在单向发送模式下,消息发送方只发送消息,并不等待Broker的确认响应,也没有回调函数执行相应逻辑。此方式发送消息的过程耗时非常短,一般在微秒级别。RocketMQ提供了三种消息发送模式:同步发送,异步发送,单向发送。原创 2024-05-20 21:40:28 · 617 阅读 · 0 评论 -
什么是Topic
标识消息分类: RocketMQ的主题用于。通过为不同类型的消息分配不同的主题,可以使消息更具可读性和可管理性。独立的消息队列:每个主题都有自己的消息队列,用于存储该主题下的消息。每个队列都可以并行地接收和处理消息,从而实现高吞吐量和负载均衡。消息路由:生产者在发送消息时指定目标主题,消费者则通过订阅感兴趣的主题来接收对应的消息。RocketMQ根据主题将消息路由到相应的队列上,然后再由消费者消费。原创 2024-05-20 21:23:05 · 488 阅读 · 0 评论