《Kafka 核心技术与实战》笔记
开篇词 为什么要学习 Kafka?

消息引擎系统 ABC
消息引擎系统的作用:
- 消息引擎传输的对象是消息;
- 如何传输消息属于消息引擎设计机制的一部分。
...大约 33 分钟
消息引擎系统的作用:
Apache Kafka 是一款开源的消息引擎系统,也是一个分布式流计算平台,此外,还可以作为数据存储。
Kafka 的核心功能如下:
Kafka 的设计目标:
RPC 的全称是 Remote Procedure Call,即远程过程调用。
RPC 的主要作用是:
RPC 是微服务架构的基石,它提供了一种应用间通信的方式。
Dubbo 是一款高性能、轻量级的开源 Java RPC 框架。
Dubbo 提供了三大核心能力:
Apache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:
Dubbo 是一个分布式服务框架,致力于提供高性能、透明化的 RPC 远程服务调用方案以及服务治理方案,以帮助我们解决微服务架构落地时的问题。
broker
:broker 模块(broker 启动进程) 。client
:消息客户端,包含生产者、消息消费者相关类。common
:公共包。dev
:开发者信息(非源代码) 。distribution
:部署实例文件夹(非源代码) 。example
:RocketMQ 示例代码。filter
:消息过滤相关基础类。filter
:消息过滤服务器实现相关类(Filter 启动进程) 。logappender
:日志实现相关类。namesrv
:N ameServer 实现相关类(Names 巳 rver 启动进程) 。openmessaging
:消息开放标准,正在制定中。remoting
:远程通信模块,基于 Netty 。srvutil
:服务器工具类。store
:消息存储实现相关类。style
:checkstyle 相关实现。test
:测试相关类。tools
:工具类,监控命令相关实现类。<172.17.0.1:10909>
failed启动后,Producer 客户端连接 RocketMQ 时报错:
org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.17.0.1:10909> failed
at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:357)
at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:343)
at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:327)
at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:290)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendKernelImpl(DefaultMQProducerImpl.java:688)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendSelectImpl(DefaultMQProducerImpl.java:901)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:878)
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:873)
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:369)
at com.emrubik.uc.mdm.sync.utils.MdmInit.sendMessage(MdmInit.java:62)
at com.emrubik.uc.mdm.sync.utils.MdmInit.main(MdmInit.java:2149)
分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:
假如生产者产生了 2 条消息:M1、M2,要保证这两条消息的顺序,应该怎样做?你脑中想到的可能是这样:
从功能上讲,Kafka 源码分为四大模块。