智能网站建设商家,字体设计网站有哪些,asp网站发送邮件,网站页面下沉的特效代码文章目录 一、从基础的客户端说起1、消息发送者主流程2、消息消费者主流程 二、从客户端属性来梳理客户端工作机制1、消费者分组消费机制2、生产者拦截器机制3、消息序列化机制4、消息分区路由机制5、生产者消息缓存机制6、发送应答机制 三、客户端流程总结四、SpringBoot集成K… 文章目录 一、从基础的客户端说起1、消息发送者主流程2、消息消费者主流程 二、从客户端属性来梳理客户端工作机制1、消费者分组消费机制2、生产者拦截器机制3、消息序列化机制4、消息分区路由机制5、生产者消息缓存机制6、发送应答机制 三、客户端流程总结四、SpringBoot集成Kafka 这一部分主要是从客户端使用的角度来理解Kakfa的重要机制。重点依然是要建立自己脑海中的Kafka消费 模型。Kafka的HighLevel API使用是非常简单的所以梳理模型时也要尽量简单化主线清晰细节慢慢扩 展。 Kafka提供了两套客户端APIHighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细 节使用起来比较简单是企业开发过程中最常用的客户端API。 而LowLevel API则需要客户端自己管 理Kafka的运行细节PartitionOffset这些数据都由客户端自行管理。这层API功能更灵活但是使 用起来非常复杂也更容易出错。只在极少数对性能要求非常极致的场景才会偶尔使用。我们的重点 是HighLeve API 。
一、从基础的客户端说起
Kafka提供了非常简单的客户端API。只需要引入一个Maven依赖即可
1、消息发送者主流程
然后可以使用Kafka提供的Producer类快速发送消息。 整体来说构建Producer分为三个步骤
设置Producer核心属性 Producer可选的属性都可以由ProducerConfig类管理。比如 ProducerConfig.BOOTSTRAP_SERVERS_CONFIG属性显然就是指发送者要将消息发到哪个Kafka集 群上。这是每个Producer必选的属性。在ProducerConfig中对于大部分比较重要的属性都配置了 对应的DOC属性进行描述。构建消息Kafka的消息是一个Key-Value结构的消息。其中key和value都可以是任意对象类型。其 中key主要是用来进行Partition分区的业务上更关心的是value。使用Producer发送消息。通常用到的就是单向发送、同步发送和异步发送者三种发送方式。
2、消息消费者主流程
接下来可以使用Kafka提供的Consumer类快速消费消息。 整体来说Consumer同样是分为三个步骤
设置Consumer核心属性 可选的属性都可以由ConsumerConfig类管理。在这个类中同样对于大部 分比较重要的属性都配置了对应的DOC属性进行描述。同样BOOTSTRAP_SERVERS_CONFIG是必须 设置的属性。拉取消息Kafka采用Consumer主动拉取消息的Pull模式。consumer主动从Broker上拉取一批感兴趣 的消息。处理消息提交位点消费者将消息拉取完成后就可以交由业务自行处理对应的这一批消息了。只是 消费者需要向Broker提交偏移量offset。如果不提交OffsetBroker会认为消费者端消息处理失败了 还会重复进行推送。 Kafka的客户端基本就是固定的按照这三个大的步骤运行。在具体使用过程中最大的变数基本上就是给 生产者和消费者的设定合适的属性。这些属性极大的影响了客户端程序的执行方式。
二、从客户端属性来梳理客户端工作机制
渔与鱼Kafka的客户端API的重要目的就是想要简化客户端的使用方式所以对于API的使用尽量熟练 就可以了。对于其他重要的属性都可以通过源码中的描述去学习并且可以设计一些场景去进行验证。其 重点是要逐步在脑海之中建立一个Message在Kafka集群中进行流转的基础模型。 其实Kafka的设计精髓是在网络不稳定服务也随时会崩溃的这些作死的复杂场景下如何保证消息的 高并发、高吞吐那才是Kafka最为精妙的地方。但是要理解那些复杂的问题都是需要建立在这个基础模 型基础上的。
1、消费者分组消费机制
2、生产者拦截器机制
3、消息序列化机制
在之前的简单示例中Producer指定了两个属性KEY_SERIALIZER_CLASS_CONFIG和 VALUE_SERIALIZER_CLASS_CONFIG对于这两个属性在ProducerConfig中都有配套的说明属性。
4、消息分区路由机制
5、生产者消息缓存机制
6、发送应答机制
三、客户端流程总结
对于这些属性你并不需要煞有介事的强行去记忆随时可以根据ProducerConfig和ConsumerConfig以 及他们的父类CommonClientConfig去理解大部分的属性都配有非常简明扼要的解释。但是你一定需要 尝试自己建立一个消息流转模型理解其中比较重要的过程。然后重点从高可用高并发的角度去理解 Kafka客户端的设计最后再尝试往其中填充具体的参数。
四、SpringBoot集成Kafka
对于Kafka你更应该从各个角度建立起一个完整的数据流转的模型通过这些模型去回顾Kafka的重要设 计并且尝试去验证自己的一些理解。这样才能真正去理解Kafka的强大之处。 当你掌握了Kafka的核心消息流转模型时也可以帮助你去了解Kafka更多的应用生态。比如SpringBoot集 成Kafka其实非常简单。就分三步 1、在SpringBoot项目中引入Maven依赖 2、在application.properties中配置kafka相关参数。 3、应用中使用框架注入的KafkaTemplate发送消息 4、使用KafkaListener注解声明消息消费者