本节演示如何通过Java代码创建Kafka生产者、消费者和拦截器,依赖使用Kafka-clients。因为我安装的Kafka版本为2.4.1,所以依赖的版本也用2.4.1,避免兼容问题。新增一个maven项目,引入:
Kafka消费者
Kafka消费者采用pull拉模式从broker中消费数据。与之相对的push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由 broker 决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成 consumer 来不及处理消息。而 pull 模式则可以根据 consumer 的消费能力以适当的速率消费消息。pull 模式不足之处是,如果 kafka 没有数据,消费者可能会陷入循环中,一直返回空数据。针对这一点,Kafka 的消费者在消费数据时会传入一个时长参数 timeout,如果当前没有数据可供消费,consumer 会等待一段时间之后再返回,这段时长即为 timeout。
Kafka生产者
Kafka生产者用于生产消息。通过前面的内容我们知道,Kafka的topic可以有多个分区,那么生产者如何将这些数据可靠地发送到这些分区?生产者发送数据的不同的分区的依据是什么?针对这两个疑问,这节简单记录下。
Kafka存储机制
Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic。topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费。
Kafka入门
Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
Spring Cloud Alibaba Sentinel @SentinelResource
Sentinel提供了@SentinelResource注解用于定义资源,并提供可选的异常回退和Block回退。异常回退指的是@SentinelResource
注解标注的方法发生Java异常时的回退处理;Block回退指的是当@SentinelResource
资源访问不符合Sentinel控制台定义的规则时的回退(默认返回Blocked by Sentinel (flow limiting))。这节简单记录下该注解的用法。
Spring Cloud Alibaba Sentinel控制台详解
Sentinel提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。本节将详细记录何如通过Sentinel控制台控制Sentinel客户端的各种行为。Sentinel控制台的功能主要包括:流量控制、降级控制、热点配置、系统规则和授权规则等。
Spring Cloud Alibaba Nacos配置中心
上一节Spring Cloud Alibaba Nacos注册中心记录了Nacos作为注册中心的使用方式,这节继续记录下Nacos作为配置中心的使用方式。本节使用的Spring Cloud版本为Hoxton.SR3,Spring Cloud Alibaba版本为2.2.0.RELEASE,Spring Boot版本为2.2.3.RELEASE。