
Kafka
森林森
java学习
展开
-
kafka-ngx_kafka_module
使用Kafka做日志收集。一、需要收集的信息:1、用户ID(user_id)2、时间(act_time)3、操作(action,可以是:点击:click,收藏:job_collect,投简历:cv_send,上传简历:cv_upload)4、对方企业编码(job_code)git clone https://github.com/edenhill/librdkafkacd librdkafka./configuremakesudo make install下载模块git clon原创 2020-11-16 19:26:19 · 386 阅读 · 0 评论 -
kafka-集群搭建
集群搭建分配三台Linux,用于安装拥有三个节点的Kafka集群。linux141(192.168.181.141)linux142(192.168.181.142)linux144(192.168.181.144)以上三台主机的/etc/hosts配置:192.168.181.141-linux140192.168.181.142-linux141192.168.181.144-linux144安装zookeeper# 解压到/opt目录tar -zxf zookeeper-3.4原创 2020-11-16 10:43:09 · 331 阅读 · 0 评论 -
kafka-延时队列
延时队列两个follower副本都已经拉取到了leader副本的最新位置,此时又向leader副本发送拉取请求,而leader副本并没有新的消息写入,那么此时leader副本该如何处理呢?可以直接返回空的拉取结果给follower副本,不过在leader副本一直没有新消息写入的情况下,follower副本会一直发送拉取请求,并且总收到空的拉取结果,消耗资源Kafka在处理拉取请求时,会先读取一次日志文件,如果收集不到足够多(fetchMinBytes,由参数fetch.min.bytes配置,默认值为原创 2020-11-14 17:47:35 · 2494 阅读 · 1 评论 -
kafka-集群应用场景
集群应用场景消息传递Kafka可以很好地替代传统邮件代理。消息代理的使用有多种原因(将处理与数据生产者分离,缓冲未处理的消息等)。与大多数邮件系统相比,Kafka具有更好的吞吐量,内置的分区,复制和容错功能,这使其成为大规模邮件处理应用程序的理想解决方案。根据我们的经验,消息传递的使用通常吞吐量较低,但是可能需要较低的端到端延迟,并且通常取决于Kafka提供的强大的持久性保证。在这个领域,Kafka与ActiveMQ或 RabbitMQ等传统消息传递系统相当网站活动路由Kafka最初的用例是能够原创 2020-11-14 17:06:34 · 320 阅读 · 0 评论 -
kafka-重试队列
重试队列kafka没有重试机制不支持消息重试,也没有死信队列,因此使用kafka做消息队列时,需要自己实现消息重试的功能。实现创建新的kafka主题作为重试队列:创建一个topic作为重试topic,用于接收等待重试的消息。普通topic消费者设置待重试消息的下一个重试topic。从重试topic获取待重试消息储存到redis的zset中,并以下一次消费时间排序定时任务从redis获取到达消费事件的消息,并把消息发送到对应的topic同一个消息重试次数过多则不再重试实现pom.xm原创 2020-11-14 17:03:50 · 1168 阅读 · 0 评论 -
kafka-__consumer_offsets
__consumer_offsetszookeeper不适合大批量的频繁写入操作。Kafka 1.0.2将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets主题,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息1. 创建topic “tp_test_01 kafka-topics.sh --zookeeper node1:2181/myKafka --create --topic tp_test_01原创 2020-11-14 15:35:08 · 1421 阅读 · 0 评论 -
kafka-消息重复的场景及解决方案
消息重复和丢失是kafka中很常见的问题,主要发生在以下三个阶段:生产者阶段broke阶段消费者阶段生产者阶段重复场景根本原因生产发送的消息没有收到正确的broke响应,导致生产者重试。生产者发出一条消息,broke落盘以后因为网络等种种原因发送端得到一个发送失败的响应或者网络中断,然后生产者收到一个可恢复的Exception重试消息导致消息重复说明:new KafkaProducer()后创建一个后台线程KafkaThread扫描RecordAccumulator中是否有消息原创 2020-11-14 15:27:40 · 1637 阅读 · 0 评论 -
kafka-一 致性
一致性保证一、概念水位标记水位或水印(watermark)一词,表示位置信息,即位移(offset)。Kafka源码中使用的名字是高水位,HW(high watermark)。副本角色Kafka分区使用多个副本(replica)提供高可用。LEO和HW每个分区副本对象都有两个重要的属性:LEO和HW。LEO:即日志末端位移(log end offset),记录了该副本日志中下一条消息的位移值。如果LEO=10,那么表示该副本保存了10条消息,位移值范围是[0, 9]。另外,Leader转载 2020-11-14 14:22:57 · 198 阅读 · 0 评论 -
kafka-稳定性-控制器
控制器afka集群包含若干个broker,broker.id指定broker的编号,编号不要重复。Kafka集群上创建的主题,包含若干个分区。每个分区包含若干个副本,副本因子包括了Follower副本和Leader副本。副本又分为ISR(同步副本分区)和OSR(非同步副本分区)控制器就是一个broker控制器除了一般broker的功能,还负责Leader分区的选举broker选举集群里第一个启动的broker在Zookeeper中创建临时节点 /controller 。其他broker在原创 2020-11-14 14:05:04 · 209 阅读 · 0 评论 -
kafka-稳定性-事务
稳定性事务一、事务场景如producer发的多条消息组成一个事务这些消息需要对consumer同时可见或者同时不可见 。producer可能会给多个topic,多个partition发消息,这些消息也需要能放在一个事务里面,这就形成了一个典型的分布式事务。kafka的应用场景经常是应用先消费一个topic,然后做处理再发到另一个topic,这个consume-transform-produce过程需要放到一个事务里面,比如在消息处理或者发送的过程中如果失败了,消费偏移量也不能提交。produc原创 2020-11-14 13:18:01 · 804 阅读 · 0 评论 -
kafka-日志存储
日志存储Kafka 消息是以主题为单位进行归类,各个主题之间是彼此独立的,互不影响。每个主题又可以分为一个或多个分区。每个分区各自存在一个记录消息数据的日志文件创建了一个 tp_demo_01 主题,其存在6个 Parition,对应的每个Parition下存在一个[Topic-Parition] 命名的消息日志文件。在理想情况下,数据流量分摊到各个 Parition 中,实现了负载均衡的效果。在分区日志文件中,你会发现很多类型的文件,比如: index、.timestamp、.log、.sna原创 2020-11-14 10:38:45 · 2026 阅读 · 0 评论 -
kafka-分区
分区副本机制Kafka在一定数量的服务器上对主题分区进行复制。当集群中的一个broker宕机后系统可以自动故障转移到其他可用的副本上,不会造成数据丢失–replication-factor 3 1leader+2follower将复制因子为1的未复制主题称为复制主题。主题的分区是复制的最小单元。在非故障情况下,Kafka中的每个分区都有一个Leader副本和零个或多个Follower副本。包括Leader副本在内的副本总数构成复制因子。所有读取和写入都由Leader副本负责。通常,分原创 2020-11-13 19:50:48 · 464 阅读 · 1 评论 -
kafka-再均衡
再均衡(Rebalance)本质上是一种协议,规定了一个消费组中所有消费者如何达成一致来分配订阅主题的每个分区。比如某个消费组有20个消费组,订阅了一个具有100个分区的主题。正常情况下,Kafka平均会为每个消费者分配5个分区。这个分配的过程就叫再均衡什么时候再均衡?再均衡的触发条件:组成员发生变更(新消费者加入消费组组、已有消费者主动离开或崩溃了)订阅主题数发生变更。如果正则表达式进行订阅,则新建匹配正则表达式的主题触发再均衡。订阅主题的分区数发生变更如何进行组内分区分配?原创 2020-11-13 14:29:54 · 598 阅读 · 0 评论 -
kafak-消费者
kafak-消费者消费者从订阅的主题消费消息,消费消息的偏移量保存在Kafka的名字是 __consumer_offsets 的主题中。消费者还可以将自己的偏移量存储到Zookeeper,需要设置offset.storage=zookeeper。推荐使用Kafka存储消费者的偏移量。因为Zookeeper不适合高并发多个从同一个主题消费的消费者可以加入到一个消费组中。消费组中的消费者共享group_id。configs.put(“group.id”, “xxx”);group_id一般设置为应原创 2020-11-13 08:55:57 · 212 阅读 · 0 评论 -
kafka-生产者消息发送流程
消息发送Producer创建时,会创建一个Sender线程并设置为守护线程。生产消息时,内部其实是异步流程;生产的消息先经过拦截器->序列化器->分区器,然后将消息缓存在缓冲区(该缓冲区也是在Producer创建时创建)。批次发送的条件为:缓冲区数据大小达到batch.size或者linger.ms达到上限,哪个先达到就算哪个。批次发送后,发往指定分区,然后落盘到broker;如果生产者配置了retrires参数大于0并且失败原因允许重试,那么客户端内部会对该消息进行重试。落盘到b原创 2020-11-12 10:02:50 · 964 阅读 · 0 评论 -
kafak-服务端参数配置
服务端参数配置$KAFKA_HOME/config/server.properties文件中的配置zookeeper.connect该参数用于配置Kafka要连接的Zookeeper/集群的地址。它的值是一个字符串,使用逗号分隔Zookeeper的多个地址。Zookeeper的单个地址是 host:port形式的,可以在最后添加Kafka在Zookeeper中的根节点路径zookeeper.connect=node2:2181,node3:2181,node4:2181/myKafkali原创 2020-11-11 19:55:23 · 610 阅读 · 0 评论 -
kafka-客户端发送消息
消息的发送与接收生产者主要的对象有: KafkaProducer , ProducerRecord 。其中 KafkaProducer 是用于发送消息的类, ProducerRecord 类用于封装Kafka的消息。KafkaProducer 的创建需要指定的参数和含义其他参数可以从 org.apache.kafka.clients.producer.ProducerConfig 中找到。我们后面的内容会介绍到。消费者生产消息后,需要broker端的确认,可以同步确认,也可以异步确认。同步原创 2020-11-11 17:29:14 · 711 阅读 · 0 评论 -
Kafka 单机的安装与配置
安装Zookeeperhttps://blog.youkuaiyun.com/ko0491/article/details/1076976591、上传kafka_2.12-1.0.2.tgz到服务器并解压tar -zxf kafka_2.12-1.0.2.tgz -C /opt2、配置环境变量并生效vim /etc/profile3、配置/opt/kafka_2.12-1.0.2/config中的server.properties文件:Kafka连接Zookeeper的地址,此处使用本地启动的Z原创 2020-11-11 14:37:33 · 258 阅读 · 1 评论 -
Kafka-核心概念
Producer-生产者生产者创建消息。该角色将消息发布到Kafka的topic中。broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的 segment 文件中。一般情况下,一个消息会被发布到一个特定的主题上默认情况下通过轮询把消息均衡地分布到主题的所有分区上。在某些情况下,生产者会把消息直接写到指定的分区。这通常是通过消息键和分区器来实现的,分区器为键生成一个散列值,并将其映射到指定的分区上。这样可以保证包含同一个键的消息会被写到同一个分区上。生产者也可以使用自原创 2020-11-11 11:25:42 · 275 阅读 · 1 评论 -
Kafka-基本概念
Kafka介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多生产者、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。高吞吐率。即使在非常原创 2020-11-11 10:42:16 · 201 阅读 · 0 评论 -
kafka(java客户端)消费者取不到消息
将kafka/config/server.properties文件中advertised.listeners改为如下属性192.168.230.128 我的虚拟机ipbroker.id=1############################# Socket Server Settings ############################## The address the ...原创 2019-09-05 20:06:56 · 857 阅读 · 0 评论