随笔分类 - 中间件
摘要:Seata 和 RabbitMQ 在分布式事务中扮演的角色完全不同,二者并非替代关系,而是可能根据场景配合使用。要理解为什么需要同时考虑它们,需要先明确两者的核心定位和解决的问题。 1. Seata:专注于分布式事务的一致性保证 Seata 是一款分布式事务中间件,核心目标是解决分布式环境下的事务一
阅读全文
摘要:消息队列(如 RabbitMQ、Kafka)和 Redis 并不冲突,反而经常在系统中配合使用。两者的设计目标和核心能力不同,适用场景有重叠但更多是互补关系。 一、先明确:Redis 能做 “消息队列”,但它的核心不是消息队列 Redis 确实可以通过 List 结构(LPUSH 生产消息,BRPO
阅读全文
摘要:一、消息中必须包含 “目标用户标识” 当用户 A 发送消息时,客户端(如手机 APP)会在消息中明确指定接收方 ID(比如receiverId: "userB")。这个信息是客户端主动设置的,就像发邮件时必须填 “收件人邮箱” 一样。 示例消息格式: json { "senderId": "user
阅读全文
摘要:消息路由规则(在消息处理服务中) 逻辑: 用户 A 发送消息到 WebSocket 网关; 网关将消息存入 RabbitMQ 的公共队列(如chat_messages); 消息处理服务从队列消费消息,根据接收方 ID(如userB)查询会话管理服务,确定用户 B 的连接位置; 将消息转发到用户 B
阅读全文
摘要:Fanout模式(发布/订阅模式):Publish/Subscribe(发布/订阅) Que1、Que2、Que3和ex绑定,发送消息后Que1、Que2、Que3都能收到消息。 绑定之后,都能收到消息,所以指定Router毫无意义。 Direct模式(路由模式):根据Routing Key来分类,
阅读全文
摘要:无论是什么模式,都会有一个默认ex。发送消息一定是ex去发送,而不是Que去发送。也就是ex会接收消息,然后push到Que,所有的消费者会自动监听和订阅我们的Que,正是因为有这些推送的机制,我们接下来会有一系列的模式来进行订阅。我们可以选择哪些消费者来消费或者哪些不消费,来灵活的运用。如果队列没
阅读全文
摘要:集群模式一:主从共享数据的部署方式。一台消息服务器进行存储,Master和slaves共享同一个消息存储服务器,读写分离。 集群模式二:主从同步部署方式(类似副本) 消息直接打进Master,和Redis原理差不多。单写多读。 集群模式三:多主集群同步部署方式 多主集群确实意味着存在多个可以同时接收
阅读全文
摘要:1.消息监控 2.异步传输 3.削峰填谷 4.异步编程 5.海量数据的分析 协议是在Tcp/ip协议基础之上构建的一种约定熟成的规范和机制。它的主要目的是可以让客户端(应用程序Java、go) 进行沟通和通讯。并且这种协议规范下,必须持久性,高可用,高可靠的性能。
阅读全文
浙公网安备 33010602011771号