Kafka
Mr_Faker
这个作者很懒,什么都没留下…
展开
-
Kafka位移提交以及CommitFailedException
一、Kafka的消费位移 Consumer 端有个位移的概念,它和消息在分区中的位移不是一回事儿,虽然它们的英文都是 Offset。它记录了Consumer 要消费的下一条消息的位移。这可能和你以前了解的有些出入,不过切记是下一条消息的位移,而不是目前最新消费消息的位移。Consumer 需要向 Kafka 汇报自己的位移数据,这个汇报过程被称为提交位移。从用户的角度来说,位移提交分为自动提交和手动提交;从 Consumer 端的角度来说,位移提交分为同步提交和异步提交。 开启自动提交位移的方法很简原创 2020-12-13 21:56:36 · 849 阅读 · 1 评论 -
Kafka如何管理TCP连接
一、Kafka消息生产Kafka 的 Java 生产者 API 主要的对象就是KafkaProducer。通常我们开发一个生产者的步骤有 4 步。第 1 步:构造生产者对象所需的参数对象。第 2 步:利用第 1 步的参数对象,创建 KafkaProducer 对象实例。第 3 步:使用 KafkaProducer 的 send 方法发送消息。第 4 步:调用 KafkaProducer 的 close 方法关闭生产者并释放各种系统资源。二、TCP连接管理Java Producer 端管理原创 2020-12-13 19:31:03 · 630 阅读 · 0 评论 -
Kafka拦截器应用
一、Kafka拦截器 Kafka 拦截器分为生产者拦截器和消费者拦截器。生产者拦截器允许你在发送消息前以及消息提交成功后植入你的拦截器逻辑;而消费者拦截器支持在消费消息前以及提交位移后编写特定逻辑。值得一提的是,这两种拦截器都支持链的方式,即你可以将一组拦截器串连成一个大的拦截器,Kafka 会按照添加顺序依次执行拦截器逻辑。如果需要加AddTimestampInterceptor和UpdateCounterInterceptor两个拦截器,可以这样配置Properties props = new原创 2020-12-13 07:58:29 · 256 阅读 · 2 评论 -
Kafka之无消息丢失配置怎么实现
如何实现Kafka不丢消息?Kafka 只对“已提交”的消息(committed message)做有限度的持久化保证。不要使用 producer.send(msg),而要使用 producer.send(msg, callback)。记住,一定要使用带有回调通知的 send 方法。设置 acks = all。acks 是 Producer 的一个参数,代表了你对“已提交”消息的定义。如果设置成 all,则表明所有副本 Broker 都要接收到消息,该消息才算是“已提交”。这是最高等级的“已提交原创 2020-12-11 13:51:11 · 188 阅读 · 0 评论 -
Kafka基础(二)
一、Kafka分区 Kafka 的消息组织方式实际上是三级结构:主题 - 分区 - 消息。主题下的每条消息只会保存在某一个分区中,而不会在多个分区中被保存多份。 分区的作用就是提供负载均衡的能力,或者说对数据进行分区的主要原因,就是为了实现系统的高伸缩性(Scalability)。不同的分区能够被放置到不同节点的机器上,而数据的读写操作也都是针对分区这个粒度而进行的,这样每个节点的机器都能独立地执行各自分区的读写请求处理。并且,我们还可以通过添加新的节点机器来增加整体系统的吞吐量。除了提供负载均衡这原创 2020-12-11 11:17:56 · 170 阅读 · 1 评论 -
Kafka基础(一)
一、基本术语消息:Record。Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。主题:Topic。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。分区:Partition。一个有序不变的消息序列。每个主题下可以有多个分区。消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增且不变的值。副本:Replica。Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本原创 2020-12-10 19:39:52 · 127 阅读 · 1 评论