kafka
呵呵呵1112
这个作者很懒,什么都没留下…
展开
-
28 kafka Mirror Maker
Kafka Mirror Maker 是用于在两个集群之间同步数据的工具,原理是从源集群消费消息,然后将消息生产到目标集群中,就是普通是生产者和消费者。只需要在启动 Kafka Mirror Make 时指定一些简单的消费端和生产端配置就可以实现准实时的数据同步。如图,我们需要将 Cluster1 的数据同步到 Cluster2 中。就需要通过 Kafka Mirror Maker做一个中转站...原创 2020-03-15 20:57:05 · 752 阅读 · 0 评论 -
27 常用工具管理
消费组管理在 kafka 中,我们可以通过 kafka-consumer-groups.sh 脚本查看或变更消费组的信息。我们可以通过 list 这个指令来罗列出当前集群中所有的消费组名称。(这个功能对应 KafkaAdminClient 中的 listConsumerGroups() 方法):# bin/kafka-consumer-groups.sh --bootstrap-server ...原创 2020-03-05 21:02:48 · 271 阅读 · 0 评论 -
26 如何选择合适的分区数(下)
分区数的上限一味地增加分区数并不能使吞吐量一直得到提升,并且分区数也并不能一直增加,如果超过默认的配置值,还会引起 Kafka 进程的崩溃。可以试着在一台普通的 Linux 机器上创建包含10000个分区的主题,比如在下面示例中创建一个主题 topic-bomb:# bin/kafka-topics.sh --zookeeper localhost:2181/ kafka --create -...原创 2020-03-04 20:29:12 · 239 阅读 · 0 评论 -
25 如何选择合适的分区数(上)
性能测试工具在 Kafka 中,性能与分区数有着必然的关系,在设定分区数时一般也需要考虑性能的因素。对不同的硬件而言,其对应的性能也会不太一样。在实际生产环境中,我们需要了解一套硬件所对应的性能指标之后才能分配其合适的应用和负荷,所以性能测试工具必不可少。本节要讨论的性能测试工具是 Kafka 本身提供的用于生产者性能测试的 kafka-producer- perf-test.sh 和用于消费...原创 2020-03-04 20:04:07 · 395 阅读 · 0 评论 -
24 修改副本因子
创建主题之后我们还可以修改分区的个数,同样可以修改副本因子(副本数)。修改副本因子的使用场景也很多,比如在创建主题时填写了错误的副本因子数而需要修改,再比如运行一段时间之后想要通过增加副本因子数来提高容错性和可靠性。前面主要讲述了分区重分配的相关细节,本节中修改副本因子的功能也是通过重分配所使用的 kafka-reassign-partition.sh 脚本实现的。我们仔细观察一下上一节中的示例...原创 2020-03-01 19:28:31 · 188 阅读 · 1 评论 -
22 复制限流
分区重分配的本质在于数据复制,先增加新副本,然后再进行数据同步,最后删除旧的副本完成整个流程。数据复制会占用额外的资源,如果重新分配的量太大肯定会影响整体性能,尤其是在使用高峰期,这个问题可以通过减小分配粒度来解决,以小批次的方式来操作。但是如果集群中某个主题或分区的流量在某段时间内特别大,那么在副本复制的时候只靠减小力度是不足以应对的,这时就需要一个限流机制,可以对副本间的l复制流量加以限制来保...原创 2020-02-27 19:02:39 · 249 阅读 · 0 评论 -
22 分区重分配
当集群中一个节点突然宕机,如果节点上的分区是单副本,那么这些分区就会变的不可用;如果是多副本,那么此节点上的leader副本就会转变到对应的follower副本中。总之,节点宕机那么节点上的分区副本都会处于失效状态,Kafka 并不会将不能用的节点中的副本迁移至可用节点当中,如果放任不管,不仅会影响整个集群的负载均衡,还会影响整体服务的可用性和可靠性。当要对一个集群中的某个节点有计划下线操作时,...转载 2020-02-26 18:33:58 · 182 阅读 · 0 评论 -
21 优先副本选举
分区使用多副本机制来提高可靠性,但只有 leader 副本对外提供读写服务,而 follower 副本只是对内部消息进行同步。如果一个分区的 leader 副本不用,那就意味着整个分区不可以用,此时就需要从 follower 副本重新选举一个 leader 副本继续对外提供服务。从某种角度讲副本的数量决定了这个节点负载的高低。在创建主题的时候,副本会均衡的分布到每个broker,一个borker...转载 2020-02-25 17:55:22 · 270 阅读 · 0 评论 -
20 KafkaAdminClient
初识KafkaAdminClient一般情况下,我们习惯使用 kafka-topics.sh 脚本来管理主题。但有些时候我们希望将主题管理类的功能集成到公司内部系统中,集管理、监控、运维、警告等一体,那么就需要以程序调用API的方式去实现。这节主要记录 KafkaAdminClient 的基本使用方式,以及采用这种方式创建主题时的合法性验证。基本使用在代码清单16-1中使用了 TopCom...原创 2020-02-24 20:58:02 · 622 阅读 · 0 评论 -
19 配置管理
配置管理kafka-configs.sh 脚本是专门用来对配置进行操作的,这里的操作是指在运行状态下修改原有的配置,如此可以达到动态变更的目的。kafka-configs.sh 脚本包含变更配置 alter 和查看配置 describe 这两种指令类型。同使用 kafka-topics.sh 脚本变更配置的原则一样,增、删、改的行为都可以看作变更操作,不过 kafka-configs.sh 脚本...原创 2020-02-19 19:36:27 · 155 阅读 · 0 评论 -
18 查看、修改、删除主题
查看主题第16节中提及了 kafka-topics.sh 脚本有5种指令类型:create、list、describe、alter 和 delete。其中 list 和 describe 指令可以用来方便地查看主题信息,在前面的内容中我们已经接触过了 describe 指令的用法,本节会对其做更细致的讲述。通过 list 指令可以查看当前所有可用的主题,示例如下:[root@node1 ka...原创 2020-02-19 18:33:38 · 330 阅读 · 0 评论 -
17 分区副本的分配
分区副本的分配在生产者和消费者中也有分区分配的概念,生产者分配分区是为每条消息指定要发往的分区,消费者分配分区是为消费者指定可以消费那些分区中的消息。而这节的分区分配是指为集群制定创建主题时的分区副本分配方案,也就是在那个 broker 中从创建那些分区的副本。在创建主题时,如果使用了 replica-assignment 参数,那么就按照指定的方案来进行分区副本的创建;如果没有使用 repl...转载 2020-01-19 17:23:42 · 187 阅读 · 0 评论 -
16 创建主题
主题和分区是 Kafka 的两个核心概念。主题作为消息的归类,下面可以在细分一个或多个分区,为消息提供了二次分类。分区的划分提高了消息的可扩展性和伸缩性,还可以通过多副本机制为kafka做数据冗余以提高数据可靠性。对kafka底层来说,主题和分区只是逻辑上的概念,分区可以有一至多个副本,每个副本对应一个日志,每个日志对应有一至多个日志分段每个日志分段还可以细分为索引文件、日志存储文件和快照文件等...原创 2020-01-17 18:02:10 · 388 阅读 · 0 评论 -
15 重要的消费者参数
1.fetch.min.bytesConsumer 在一次拉取请求中能从 Kafka中拉取的最小数据量,默认值1(B)。kafka在收到 Consumer 的拉取请求时,如果返回给 Consumer的数据量小于这个设置,那么就会等待,直达数据量达到配置的大小。可以适当调整这个参数的值以提高吞吐量,不过也会造成额外的延迟。2.fetch.max.bytes与 fetch.min.bytes对应...转载 2020-01-09 18:15:57 · 716 阅读 · 0 评论 -
14 消费者多线程实现
消费者多线程实现KafkaProducer 是线程安全的,而 KafkaConsumer 却是非线程安全的。KafkaConsumer中定义了一个 acquire() 方法用来检查当前是否只有一个线程在操作,如果有其他线程在操作那么就会抛出 ConcurrentModifcationException 异常。KafkaConsumer 所有公用方法在执行之前都会调用 acquire() 方法,只...原创 2020-01-09 16:43:40 · 660 阅读 · 0 评论 -
13 再均衡-拦截器
再均衡再均衡是指分区的所属权从一个消费者转移到另一个消费者的行为,它为消费组的高可用性和伸缩性提供保障,使消费组可以方便安全的删除活着添加组内的消费者。...原创 2019-08-26 18:18:38 · 150 阅读 · 0 评论 -
1.初识Kafka
Kafka所"扮演"的三大角色:消息系统:Kafka和传统的消息系统都具备系统解耦、冗余存储、流量削峰、缓存、异步通信、扩展性、可恢复性等功能。与此同时,Kafka还提供了大多数消息系统难以实现的消息顺序保障及回溯消费功能。存储系统:Kafka讲消息持久化到磁盘,相比较其他的将消息存储在内存的系统而言,能够有效降低丢失的分险。得益于Kafka的存储策略和多副本机制,也可以将Kafka作为长期存...原创 2019-06-06 16:36:38 · 196 阅读 · 1 评论 -
3.生产者-客户端开发
客户端开发一个正常的生产逻辑需要具备以下几个步骤:1.配置生产者客户端参数及创建相应的生产者实例2.构建待发送的消息3.发送消息4.关闭生产者实例//代码清单3-1 生产者客户端示例public class KafkaProducerAnalysis { public static final String brokerList = "localhost:9092"; ...原创 2019-06-13 16:48:37 · 213 阅读 · 0 评论 -
4.序列化-分区器-拦截器
序列化生产者需要用序列化器(Serializer)将key和value序列化成字节数组才可以将消息传入Kafka。消费者需要用反序列化器(Deserializer)把从Kafka中收到的字节数组转化成相应的对象。在代码清单3-1中,key和value都使用了字符字符串,对应程序中的序列化器也使用了客户端自带的 StringSerializer,除了字符串类型的序列化器,还有 ByteArray、...原创 2019-06-19 18:04:54 · 1449 阅读 · 0 评论 -
2.Kafka入门
快速启动运行kafka需要使用Zookeeper,所以需要先启动Zookeeper,如果没有Zookeeper,可以使用kafka自带打包和配置好的Zookeeper。单机模式1.启动zklinux中单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。bin/zookeeper-server-start.sh config/zookeeper.propert...原创 2019-06-10 17:14:49 · 247 阅读 · 0 评论 -
6.生产者的重要参数
重要的生产者参数1.acks这个参数主要用来指定分区中必须要有多少个副本都收到这个消息,生产者客户端才认为这条消息成功写入。它涉及消息的可靠性和吞吐量之间的权衡。acks参数有3种类型的值(都是字符串类型)acks=1。默认值即为1。生产者发送消息后,只要分区中的 leader 副本成功写入消息,那么它就会收到服务端的响应,就会认为发送成功。如果写入失败,比如 leader 崩溃、新的 l...原创 2019-06-25 15:23:14 · 167 阅读 · 0 评论 -
5.生产者客户端原理分析
整体架构在上一节中提交了消息在真正发往 Kafka 之前,有可能需要经历拦截器(Interceptor)、序列化器(Serializer)和分区器(Partitioner)等一系列的作用,那么在这之后呢?下面看一下生产者客户端的整体架构:生产者客户端由两个线程协调运行,这两个线程分别为主线程和 Sender 线程(发送线程)。在主线程由 KafkaProducer 创建消息,经过拦截器,序列...原创 2019-06-21 17:59:46 · 148 阅读 · 0 评论 -
8.消费者客户端开发
消费者客户端开发原创 2019-07-02 18:13:08 · 251 阅读 · 0 评论 -
7.消费者与消费组
消费者与消费组与生产者对应的是消费者,应用程序可以通过 KafkaConsumer 来订阅主题,并从订阅的主题拉取消息。不过在使用 KafkaConsumer 之前需要了解消费者与消费组的概念,否则无法理解如何使用 KafkaConsumer。本章首先讲解消费者和消费组之间的关系,进而再细致的讲解如何使用 KafkaConsumer。消费者(Consumer)负责订阅主题(Topic),并从订...原创 2019-06-27 16:45:33 · 967 阅读 · 0 评论 -
10.消息消费
消息消费==Kafka 中的消费是基于拉取模式的。==消息的消费一般有两种模式:推送模式和拉取模式。推送模式是服务端主动将消息推送给消费者,而拉取模式是消费者从服务端拉取消息。从代码清单8-1中可以看出,Kafka 中的消息消费就是一个不断轮询的过程,在轮询中重复调用 poll() 方法去拉取订阅的主题的消息。对于 poll() 方法而言,如果某些分区没有消息,那么此分区对应的消息拉取结果就为...原创 2019-07-08 17:32:12 · 236 阅读 · 0 评论 -
9.反序列化
反序列化在第四节中讲述了 KafkaProducer 对应的序列化器,那么与此对应的 KafkaConsumer 就会有反序列化器。Kafka 所提供的反序列化器有 ByteBufferDeserializer、ByteArrayDeserializer、BytesDeserializer、DoubleDeserializer、FloatDeserializer、IntegerDeseriali...原创 2019-07-05 18:05:37 · 463 阅读 · 0 评论 -
11.位移
位移提交对于Kafka分区中的每条消息而言,都有一个 offset,用来表示消息在分区中对应的位置。对于消费者而言,也有一个 offset 概念,用来表示消费到分区中某个消息所在的位置。对于消息在分区中的位置,将 offset 称为“偏移量”,代表了分区储存层面;对于消费者消费到的位置,将 offset 称为“位移”或者更明确的称之为“消费位移”,代表了消费者层面;当然,对于一条消息的“偏移量”...原创 2019-08-13 17:32:42 · 185 阅读 · 0 评论 -
12.指定位移消费
在上一节讲述了如何进行消费位移提交,正是有了消费位移的持久化,才使消费者在关闭、奔溃或者在遇到再均衡的时候,可以让接替的消费者能够根据之前存储的消费位移继续消费。但是,如果当一个新的消费组建立的时候,根本没有可以查找的消费位移。或者消费组内的一个新消费者订阅了一个新的主题,它也没有可以查找的消费位移。**(同一个分区的消息,对同一个消费组来说只能消费一次。所以当新的消费组建立或者消费组内新的消费者...原创 2019-08-20 17:07:30 · 834 阅读 · 0 评论 -
kafka学习地址
美团李志涛博客中文文档segmentfault有很好的问答机制过往记忆的博客郭俊的博客原创 2018-11-14 10:01:40 · 366 阅读 · 0 评论