Kafka
文章平均质量分 62
AlgoRain
欢迎访问我的个人博客www.rain1024.com
展开
-
Kafka涉及到的多种选举机制
Kafka涉及到的多种选举机制提起Kafka中的选举,第一印象肯定是broker节点之间的选举,它依赖于Zookeeper来进行选举,其实还有partition之间也有选举,以及其他地方都存在选举,但这些都是由Kafka内部完成,它们都需要一个leader来把控全场,由leader来负责读写请求,处理消息的同步,监听分区变化,监听主题变化,保存一些分区方案,记录消费位移等信息。我总结的有以下几种选举。broker Leaderpartition LeaderGroupCoordinator Lea原创 2021-03-14 18:26:30 · 446 阅读 · 1 评论 -
使用CyclicBarrier控制Kafka多线程消费消息的位移提交问题
使用CyclicBarrier控制Kafka多线程消费消息的位移提交问题Kafka中消费者是线程不安全的,一个topic只能被一个消费组中的消费者消费,想要提高数据消费能力,可以增加分区数,因为消费者数可以和分区数进行对应,当消费者数大于分区数时,多余的消费者将处于空闲状态,或者也可以在每个线程中创建一个消费者实例,这样也可以对数据来处理,但创建多个消费者实例必然会造成资源的浪费。通过线程池来对数据进行消费,就会存在位移提交的问题,从而引发数据丢失或重复,所以对位移的提交要格外处理,消费者默认是定时提交位原创 2021-03-12 17:08:57 · 349 阅读 · 0 评论 -
Kafka中再均衡的发生过程
Kafka中再均衡的发生过程Kafka中消费者以消费组的形式存在,消费组来消费每个主题中分区的数据,因为主题中的分区数和消费者数量并不一一对应,这时候就涉及到如何为每个消费者分配分区,而当有消费者在中途退出时,就会触发再均衡的发生,再重新为剩余的消费者分配分区。每个消费组在服务端对应一个GroupCoordinator对其进行管理,而消费者客户端中的ConsumerCoordinator组件负责与GroupCoordinator进行交互,它们负责执行分区的分配,以及消费者再均衡的操作。目前在以下几种情况原创 2021-03-09 10:35:09 · 306 阅读 · 0 评论 -
Kafka实现订单超时取消的两种模拟策略
Kafka实现订单超时取消的两种模拟策略在业务场景中有一个需要定时15分钟后取消用户订单的功能,可以使用Java的任务调度框架来实现,但还需要引入框架依赖和设置数据表等,对业务的侵入性很大,有点大材小用的感觉,所以这里使用延时队列就可以,Kafka本身是不支持延时队列的,需要在生产消息和消费时进行一些二次开发,以下是我对该业务具体实现的思考。1.建立不同时间区间的topicKafka内部有很多延时性的操作,如延时生产,延时拉取,延时数据删除等,这些延时功能由内部的延时操作管理器来做专门的处理,其底层是原创 2021-03-01 14:44:21 · 2803 阅读 · 1 评论 -
对于mysql,redis,Kafka,zookeeper磁盘缓存技术使用分析
对于mysql,redis,Kafka,zookeeper磁盘缓存技术使用分析大部分组件是基于磁盘存储的,但由于CPU速度和磁盘速度之间的鸿沟,都会使用缓存技术来提高性能,缓存简单来说就是一块内存区域,首先将从磁盘读到的数据放在缓存中,之后查询或修改时直接操作缓存,对于缓存中的数据则以一定的频率刷新到磁盘上,怎样缓存,缓存多少,何时刷新,这些影响着整个组件的性能。在看过一些关于mysql等组件的架构原理后,会发现不论是基于磁盘的mysql数据库和Kafka消息中间件zookeeper分布式协调框架,还是基原创 2021-02-26 14:19:55 · 397 阅读 · 1 评论 -
Kafka的主题删除机制
Kafka的主题删除机制命令删除在Kafka中当一个主题不再使用的时候,可以选择将其删除,以此来释放磁盘,文件句柄等资源,删除过程其实很简单,使用kafka-topics.sh脚本中的delete指令就可以。bin/kafka-topics.sh --zookeeper localhost:2181/kafka --delete --topic topic-delete在删除完毕后,会有相应的提示信息,提示信息与broker端配置参数delete.topic.enable有关,必须将delete.原创 2020-09-14 15:43:10 · 803 阅读 · 0 评论 -
使用两种多线程模式消费kafka数据
使用两种多线程模式消费数据KafkaProducer是线程安全的,然而 KafkaConsumer却是非线程安全的。 Kafka Consumer中定义了一个 acquire(方法,用来检测当前是否只有一个线程在操作,若有其他线程正在操作则会抛出 Concurrentmodifcationexception异常:java.util.ConcurrentModificationException: KafkaConsumer is not safe for multi-threaded access.K原创 2020-05-31 15:05:29 · 2450 阅读 · 0 评论 -
Java实现Kafka生产者消费者功能
Java实现Kafka生产者消费者功能好久没有更新博客,最近学的东西很多,但一直忙的没有时间去写,先补充一篇kafka的,最基本的功能使用,不得不感叹大数据确实难,即使只说一个简单的功能,之前也需要铺垫很多完成的功能,比如这篇博客的前提是,你已经安装了虚拟机,里面配置了Hadoop生态组件zookeeper,安装配置了kafka,学会使用Maven,springboot等些技术,而不是直接拿来代...原创 2018-10-28 12:43:09 · 25375 阅读 · 5 评论