随笔分类 - MQ
摘要:消息中间件的作用: 1、解耦 2、冗余(存储) 3、扩展性(增加生产者/消费者) 4、削峰 5、异步处理 6、保证顺序 消息通信标准: 1、JMS(Java Message Service):隐藏单独MQ产品提供商的实际接口。针对API编程,选择合适的MQ驱动(该驱动实现了JMS接口规范)即可随意切
阅读全文
摘要:RabbitMQ是实现了高级消息队列协议(Advanced Message Queueing Protocol , AMQP)的开源消息代理软件(亦称面向消息的中间件)。 1、AMQP协议 RocketMQ基于JMS(Java Messaging Service , java 消息服务)协议。 重点
阅读全文
摘要:主从同步(HA 高可用) 主从同步原理: 为了保证系统的高可用,消息到达主服务器后,需要将消息同步到从服务器。如果主服务器宕机,消费者可用从从服务器拉取消息。 大体步骤: 1、主服务器启动,监听从服务器的链接。 2、从服务器主动链接主服务器,建立TCP相关链接。 3、从服务器主动向主服务器发送待拉取
阅读全文
摘要:消息消费 难点:如何保证消息只消费一次? 顺序消费? 消费模式: 1、单一消费模式:一条消息,仅被一个消费者进行消费。 如何进行负载?负载算法有 a、平均分配。b、平均轮询分配。c、一致性hash(不推荐)。d、根据配置,为消费者指定消息队列。e、根据broker进行分配,消费者固定消费指定的Bro
阅读全文
摘要:消息存储 主要的存储文件: 1、消息文件(commitLog) 2、消息消费队列文件(consumeQueue) 3、Hash索引文件(IndexFile) 4、检测点文件(checkpoint) 5、关闭异常文件(abort) 文件刷盘机制 RocketMQ的存储与读写是基于JDK NIO的内存映
阅读全文
摘要:消息发送基本流程: 1、消息验证 验证主题(topic),消息体不能为空和大小不能超过4M。 2、路由查找 a、查看缓存,是否有topic的路由信息。 b、如果没有则到NameServer中获取路由信息,如果缓存内能找到则获取相应路由信息。 c、从缓存中获取上一次异常的Broker节点信息,跟获取到
阅读全文
摘要:NameServer 路由管理,服务注册,服务发现。(类比为soa框架中的zookeeper) 一、路由管理 1、路由注册,由 Broker 向 NameServer 发送心跳,NameServer 记录Broker服务。 2、路由删除, a、NameServer 定时检测 Broker 状态,将判
阅读全文
摘要:Rocket 火箭 MQ的作用:同步转异步(异步解耦)。 难点:如何确保消息一定被消费,而且仅消费一次。 1、消息架构:生产者、服务器、消费者、路由发现。 2、消息顺序:严格按照消息到达服务器的顺序进行消费。 3、消息过滤: a、服务端过滤 b、消费端过滤。 缺点:无用的消息也传输到消费端。优点:可
阅读全文
摘要:Maven 配置文件 provider 生产者代码 Consumer 消费者 Constants 常量类
阅读全文
摘要:JMS Java Message Service (Java 消息服务), 类似于JDBC的作用。 1、Destination 目的地 2、Provider 生产者 3、Comsumer 消费者 4、消息类型 A、Queue 队列,只消费一次。(P2P 点对点模型) 消息确认机制(自动确认,手动确认
阅读全文

浙公网安备 33010602011771号