
Kafka
文章平均质量分 61
Leo Han
Leo Han
展开
-
使用debezium、kafka-connect将postgres数据实时同步到kafka中,表topic重新路由
使用debezium和kafka-connect实现postgres数据库实时同步到kafka中原创 2022-08-10 16:03:11 · 3176 阅读 · 0 评论 -
消息中间件选型,kafka和rabbitmq如何选择
在我们程序设计中,经常会涉及到消息消息中间件MQ的使用,市面上比较常用的一般有kafka和rabbitmq,那么这两者如何选择呢 ?原创 2021-05-12 22:34:34 · 1089 阅读 · 0 评论 -
kafka中幂等性,事务,事务示例和配置,实现exactly once语义,消息顺序
一般消息中间件传输保障会有3个级别at most once 最多一次,消息可能会丢失,但是绝对不会重复ad least once 最少一次,消息不会丢失,但是可能会重复exactly once 恰好一次。消息有且仅会被传输一次对于kafka来说,生产者客户端发送消息时,只要消息被成功写入到日志文件,由于多副本的存在,这条消息就不会丢失,但是如果发送过程中由于网络原因导致生产者客户端无法...原创 2020-05-05 17:44:11 · 929 阅读 · 0 评论 -
kafka消费者客户端分区分配,协调器,自定义分区器分配策略
在kafka的消费者客户端中,是以组来区分消费者的,不同消费者组之间没有关联,对于某个主题来说包含N个分区,一个消费者组内的M个消费者会按照一定的分区分配策略来消费这个N个分区,消费者组内的每个消费者会消费不同的分区,不会有一个分区被同一个消费者组内的多个消费者消费。消费者客户端参数partition.assignment.strategy来设定消费者组内消费者消费主题分区的分配策略,可以配置多...原创 2020-05-05 16:53:04 · 460 阅读 · 0 评论 -
kafka服务端server.properties参数说明
参数名称描述broker.idbroker节点唯一ID标识log.dirkafka消息日志文件存放目录log.dirskafka消息日志文件存放目录列表,逗号分隔message.max.bytesbroker能接收的消息的最大值,1000012B,如果修改这个参数,还需要参考max.request.size(客户端参数),max.message.byt...原创 2020-05-04 21:40:42 · 261 阅读 · 0 评论 -
kafka中分区与主题,副本,AR,ISR,控制器,leader选举
主题和分区是kafka中两个核心概念,所有的相关操作都是围绕这两个来进行的。消费者和生产者的设计和相关操作都是对主题和分区层面的操作。分区是相对主题来说的,kafka中每个主题可以设置一个至多个分区,分区为kafka提供了伸缩和水平扩展的能力。kafka中为每个分区提供了一个到多个副本的,通过增加副本数量能够提高容灾能力。副本之间是一主多从关系,其中leader负责处理读写请求,follower...原创 2020-05-04 21:36:16 · 1210 阅读 · 0 评论 -
kafka消费者客户端重要参数
kafka消费者客户端重要参数说明:bootstrap.serverskafka集群broker地址列表key.deserializer消息中key对应的反序列化类value.deserializer消息中value对应的反序列化类group.id消费者所属消费者组的唯一标识client.id消费者客户端IDheartbeat.inte...原创 2020-05-03 23:50:17 · 584 阅读 · 0 评论 -
kafka消费者客户端线程安全以及多线程实现并发读取消息
kafka的生产者客户端Producer是线程安全的,但是消费者客户端是非线程安全的,每次操作时都会调用accqure方法用来确定当前只有一个线程操作,如果有多个线程在操作,会抛出CME异常。针对这种情况,为了能够多线程更快速的读取消息,可以参考如下两种方式:在同一个消费者组下,每个线程建立一个consumer消费者组,这样相当于是在一个消费者组中多个消费者同时读取另外一种处理就是,用...原创 2020-05-03 22:51:42 · 3103 阅读 · 0 评论 -
kafka消费者客户端自定义拦截器
与生产者客户端拦截器机制一样,kafka消费者客户端中也定义了拦截器逻辑,通过实现ConsumerInterceptor来实现自定义拦截器逻辑,ConsumerInterceptor主要有三个方法:public ConsumerRecords<String, String> onConsume(ConsumerRecords<String, String> record...原创 2020-05-03 22:33:57 · 1125 阅读 · 3 评论 -
kafka消费者客户端再平衡,Rebalance以及再平衡监听器使用示例
kafka消费者客户端再平衡表示的是分区的所属权从一个消费者转移到了另一个消费者的行为,它为消费者组具备高可用性和伸缩性提供保障,使我们能够方便的删除消费者组中的消费者或者往消费者组中添加消费者。但是在再平衡期间,消费者组内的消费者是无法读取消息的,在再均衡这一段时间内,消费者组不可用。再均衡可能会导致向消费者位移还未来得及提交就发生了再均衡操作,会导致消息重复。在消费者订阅主题的时候除了su...原创 2020-05-03 22:09:03 · 1421 阅读 · 1 评论 -
kafka消费者客户端中偏移量位移offset,手动提交位移offset
在Kafka服务端中每个分区的每条消息都有唯一的offset,用来表示消息在分区中对应的位置。对于消费者客户端而言,也有一个offset,表示的是消费到分区中某个消息所在的位置。消费者客户端每次调用poll时返回的是未被消费的消息,为了能够知道哪些消息被消费过,哪些消息未被消费,消费者客户端使用offset来记录上一次消费位置。为了做到这一点,需要将消费位移进行持久化而不是简单的保存在内存中,这...原创 2020-05-03 21:54:25 · 2221 阅读 · 0 评论 -
kafka中消费者客户端代码示例
kafka消费者consumer代码示例:import org.apache.kafka.clients.consumer.ConsumerConfig;import org.apache.kafka.clients.consumer.ConsumerRecord;import org.apache.kafka.clients.consumer.ConsumerRecords;impor...原创 2020-05-03 18:00:14 · 2329 阅读 · 0 评论 -
kafka中生产者客户端重要参数
参数名称描述bootstrap.serverskafka集群的broker地址列表key.serializer消息key对应的序列化类value.serializer消息value对应的序列化类buffer.memory生产者客户端缓存消息的缓存大小,即RecordAccumulator的缓存大小client.id上缠着客户端idmax....原创 2020-05-03 16:56:45 · 332 阅读 · 0 评论 -
kafka生产者客户端元数据更新
元数据指的是kafka集群的元数据,包含集群中有哪些主题,这些主题有哪些分区,每个分区的leader副本在哪个节点上,follower副本分配在哪些节点上,哪些副本在AR,ISR集合中,集群中有哪些节点,控制器节点是哪一个等信息。当客户端中没有需要使用的元数据信息时,或者超过metadata.max.age.ms(默认30000,即5分钟)时间没有更新元数据信息是都会引起元数据的更新操作。元数...原创 2020-05-03 14:30:58 · 1019 阅读 · 0 评论 -
kafka生产者客户端架构和处理流程
Kafka生产者客户端整体架构如图:整个生产者客户端主要有两个线程,主线程以及Sender线程。Producer在主线程中产生消息,然后通过拦截器,序列化器,分区器之后缓存到消息累加器RecordAccumulator中。Sender线程从RecordAccumulator中获取消息并发送到kafka中。RecordAccumulator主要用来缓存消息,这样发送的时候进行批量发送以便减少相...原创 2020-05-03 14:23:55 · 1126 阅读 · 0 评论 -
kafka中生产者客户端自定义拦截器
kafka拦截器一共有两种,生产者和消费者. 生产者拦截器可以在消息发送前做一些准备、校验工作,也可以修改消息的内容.自定义拦截器实现如下:import org.apache.kafka.clients.producer.ProducerInterceptor;import org.apache.kafka.clients.producer.ProducerRecord;import or...原创 2020-05-02 22:30:14 · 311 阅读 · 0 评论 -
kafka生产者客户端实现自定义分区器
kafka中实现自定义分区器:import org.apache.kafka.clients.producer.Partitioner;import org.apache.kafka.common.Cluster;import org.apache.kafka.common.PartitionInfo;import org.apache.kafka.common.utils.Utils;...原创 2020-05-02 22:11:22 · 391 阅读 · 0 评论 -
kafka中生产者客户端代码示例
kafka中生产者示例代码:import org.apache.kafka.clients.producer.*;import org.apache.kafka.common.serialization.StringSerializer;import java.util.Properties;import java.util.concurrent.Future;public clas...原创 2020-05-02 21:54:45 · 624 阅读 · 0 评论 -
kafka集群安装配置,启动和停止
kafka作为一个高性能、可扩展的mq组件一直受到大家的青睐,下面讲述一般在实际应用中kafka的相关配置:本次采用3个kafka实例,kafka版本为kafka_2.11-1.0.2,首先安装zookeeper,参见: zookeeper安装安装完之后,接下来安装kafka集群。默认kafka服务器配置在 config/server.properties中,内容如下:#每个kafk......原创 2020-05-02 15:59:09 · 1148 阅读 · 0 评论