19、数据压缩:时间换空间的游戏

你好,我是李玥。 这节课我们一起来聊一聊数据压缩。我在前面文章中提到过,我曾经在一台配置比较高的服务器上,对Kafka做过一个极限的性能压测,想验证一下Kafka到底有多快。我使用的种子消息大小为1KB,只要是并发数量足够多,不开启压缩时,可以打满万...

消息队列高手课

20、RocketMQ Producer源码分析:消息生产的实现过程

你好,我是李玥。 对于消息队列来说,它最核心的功能就是收发消息。也就是消息生产和消费这两个流程。我们在之前的课程中提到了消息队列一些常见问题,比如,“如何保证消息不会丢失?”“为什么会收到重复消息?”“消费时为什么要先执行消费业务逻辑再确认消费?”,...

消息队列高手课

21、Kafka Consumer源码分析:消息消费的实现过程

你好,我是李玥。 我们在上节课中提到过,用于解决消息队列一些常见问题的知识和原理,最终落地到代码上,都包含在收、发消息这两个流程中。对于消息队列的生产和消费这两个核心流程,在大部分消息队列中,它实现的主要流程都是一样的,所以,通过这两节课的学习之后,...

消息队列高手课

22、Kafka和RocketMQ的消息复制实现的差异点在哪

你好,我是李玥。 之前我在《[05 | 如何确保消息不会丢失?]》那节课中讲过,消息队列在收发两端,主要是依靠业务代码,配合请求确认的机制,来保证消息不会丢失的。而在服务端,一般采用持久化和复制的方式来保证不丢消息。 把消息复制到多个节点上,不仅可以...

消息队列高手课

23、RocketMQ客户端如何在集群中找到正确的节点

你好,我是李玥。 我们在《[21 | RocketMQ Producer源码分析:消息生产的实现过程]》这节课中,讲解RocketMQ的生产者启动流程时提到过,生产者只要配置一个接入地址,就可以访问整个集群,并不需要客户端配置每个Broker的地址。...

消息队列高手课

24、Kafka的协调服务ZooKeeper:实现分布式系统的“瑞士军刀”

你好,我是李玥。 上节课我带你一起学习了RocketMQ NameServer的源代码,RocketMQ的NameServer虽然设计非常简洁,但很好地解决了路由寻址的问题。 而Kafka却采用了完全不同的设计思路,它选择使用ZooKeeper这样一...

消息队列高手课