
消息队列
文章平均质量分 92
耶律妙月
这个作者很懒,什么都没留下…
展开
-
消息队列学习笔记8——消息复制、路由获取、事务消息
文章目录一、消息复制1.消息复制面临的问题2.RocketMQ 如何实现复制3.Kafka 如何实现复制二、路由信息获取1. RocketMQ NameServer2. Kafka ZooKeeper三、事务消息的实现1. RocketMQ2. Kafka一、消息复制1.消息复制面临的问题消息队列最好能兼具高性能、高可用并且还能提供数据一致性的保证。但不可能同时完全满足。性能:任何的复...原创 2020-01-19 14:58:53 · 602 阅读 · 1 评论 -
消息队列学习笔记7——生产、消费源码分析
文章目录一、RocketMQ 生产者源码分析1.启动过程2.消息发送过程二、Kafka 消费者源码分析1.订阅过程2.拉取消息一、RocketMQ 生产者源码分析版本 release-4.5.1客户端是一个单独的 Module,在 rocketmq/client 目录中。源码分析,可以从测试用例入手,一步一步跟踪其方法调用链路,理清实现过程。Producer 的所有测试用例都在同一个测...原创 2020-01-16 10:15:15 · 485 阅读 · 0 评论 -
消息队列学习笔记6——测试题
1. 以下哪些问题可以用消息队列解决?A. 暂存埋点数据,后续用于统计分析B. 解耦上下游系统C. 实现一个分布式锁D. 实现一个分布式的任务调度系统答案:AB解析:消息队列最常被使用的三种场景:异步处理、流量控制(削峰填谷)和服务解耦。答案 A 中描述的问题,使用消息队列解决,符合异步处理和流量控制这两种场景。选项 B,显而易见也是正确的。C、D 选项提到的实现分布式锁和分布式的任务...原创 2020-01-14 10:12:07 · 1017 阅读 · 0 评论 -
消息队列学习笔记5——缓存、锁、原子硬件原语、数据压缩
文章目录一、只读缓存 和 读写缓存1.读写缓存2.只读缓存保持数据一致性缓存置换策略二、锁1.如何避免死锁2.使用读写锁要兼顾性能和安全性三、硬件同步原语1.CAS(Compare and Swap)2.FAA(Fetch and Add)3.CAS 版本的转账服务4.FAA 版本的转账服务四、数据压缩1.适合数据压缩的场景2.压缩算法的选择3.选择合适的压缩分段思考题一、只读缓存 和 读写缓...原创 2020-01-10 11:17:32 · 602 阅读 · 0 评论 -
消息队列学习笔记4——JMQ Broker接收消息流程
设计了 6 组线程,将一个大的流程拆成了 6 个小流程。并且整个过程完全是异步化的。流程的入口在图中的左上角,Broker 在收到来自生产者的发消息请求后,会在一个 Handler 中处理这些请求,这和我们在普通的业务系统中,用 Handler 接收 HTTP 请求是一样的,执行 Handler 中业务逻辑使用的是 Netty 的 IO 线程。收到请求后,我们在 Handler 中不做过多的...原创 2020-01-08 15:15:02 · 594 阅读 · 0 评论 -
消息队列学习笔记3——异步设计、序列化
文章目录一、异步设计1.同步的性能瓶颈2.采用异步实现解决等待问题3.JDK8异步框架: CompletableFuture二、异步网络框架1. Netty2. NIO三、序列化思考题一、异步设计1.同步的性能瓶颈假设一个转账业务,伪代码如下:Transfer(accountFrom, accountTo, amount) { // 先从accountFrom的账户中减去相应的钱数...原创 2020-01-08 14:57:16 · 672 阅读 · 0 评论 -
消息队列学习笔记2——可靠传递、重复消费、秒杀设计
文章目录一、消息的可靠传递1.生产阶段2.存储阶段3.消费阶段二、消息的重复消费1.利用数据库的唯一约束实现幂等2.为更新的数据设置前置条件3.记录并检查操作思考题一、消息的可靠传递1.生产阶段在生产阶段,消息队列通过最常用的请求确认机制,来保证消息的可靠传递。只要 Producer 收到了 Broker 的确认响应,就可以保证消息在生产阶段不会丢失。有些消息队列在长时间没收到发送确认响应...原创 2020-01-03 14:51:55 · 388 阅读 · 0 评论 -
消息队列学习笔记1——使用场景、产品选择、事务消息
文章目录一、常见的使用场景4.其他二、消息队列的选择三、思考题一、常见的使用场景异步处理可以更快地返回结果;减少等待,自然实现了步骤之间的并发,提升系统总体的性能。流量控制使用消息队列隔离网关和后端服务,以达到流量控制和保护后端服务的目的。网关在收到请求后,将请求放入请求消息队列;后端服务从请求消息队列中获取 APP 请求,完成后续秒杀处理过程,然后返回结果。...原创 2020-01-03 09:50:36 · 451 阅读 · 0 评论