![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kafka
文章平均质量分 73
kafka
木子dn
风中的纸屑,水上的落叶。所以,全都抓住好了!
展开
-
Kafka之存储设计
消费者读取的数据都是已经被确认的可靠数据,避免处理未确认数据带来的复杂性和错误。Kafka的压缩过程是定期进行的,时间间隔和触发条件可以通过配置参数来调整。水位线(HW)是 Kafka 中每个分区的一个偏移量,它表示已经被所有同步副本(leader 和 follower)确认并复制的最高偏移量。Kafka 日志文件中的内容并不是简单的按行排列的消息,而是采用了批处理(batch)的方式来存储消息。数据可靠性:HW 确保了在系统发生故障时,数据不会丢失,并且消费者读取到的数据是可靠的。原创 2024-07-22 21:19:02 · 1348 阅读 · 0 评论 -
Kafka Producer之事务性
事务性可以防止跨会话幂等性失效,同时也可以保证单个生产者的指定数据,要么全部成功要么全部失败,。不可以多个生产者共用相同的事务ID。原创 2024-07-22 21:17:23 · 411 阅读 · 0 评论 -
Kafka Producer之幂等性
幂等性通过消耗时间和性能的方式,解决乱序和重复问题。但是只能保证。原创 2024-07-18 21:32:50 · 823 阅读 · 1 评论 -
Kafka Producer之数据重复和乱序问题
为了可靠性,Kafka有消息重试机制,但是同时也带来了2大问题。原创 2024-07-18 21:32:15 · 688 阅读 · 0 评论 -
Kafka Producer之ACKS应答机制
无论哪一种,有一个关键的步骤叫做回调,也就是ACKS应答机制。异步发送的效率高,但是不安全,同步发送安全,但是效率低。其中ACKS也分为3个等级。原创 2024-07-17 22:17:07 · 872 阅读 · 0 评论 -
Kafka Producer发送消息流程之消息异步发送和同步发送
按照流程图,上一条消息需要从生产者一直流转,多个步骤,到数据收集器,到Sender,最后还要等待回调确认,才可以开始下一条消息的流转。Kafka默认就是异步发送,在Main线程中的多条消息,没有严格的先后顺序,Sender发送后就继续下一条,异步接受结果。Main线程中,对于多条数据,下一条消息的发送并不等待上一条消息的确认,而是继续发送。消息有严格的先后顺序,下一条消息必须等到上一条消息的回调确认后,再发送,这是一个。可以看到先是main线程循环发送完了多条数据,然后再异步收到通知。原创 2024-07-17 22:15:28 · 645 阅读 · 0 评论 -
Kafka Producer发送消息流程之Sender发送线程和在途请求缓存区
线程将消息批次发送到broker后,这些请求会存储在在途请求缓存区中,直到收到broker的确认响应。线程会将这些批次按目标broker进行组织,因为一个broker通常负责多个分区的消息处理。:如果某个请求在指定时间内没有收到响应,生产者会根据配置的重试机制重新发送这些请求。线程工作流程中,如果一次任务中包含了来自多个分区的批次,并且这些批次涉及到多个broker,那么。通过这些配置,Kafka生产者可以在不同的网络条件和负载下优化消息发送的效率和可靠性。响应中包含了每个分区的消息是否成功写入的信息。原创 2024-07-17 22:14:25 · 932 阅读 · 0 评论 -
Kafka Producer发送消息流程之分区器和数据收集器
新建类实现接口,key是字符串数字,奇数送到分区0,偶数送到分区1。@Override@Override> map) {新建一个存在多分区的Topic。//创建producer//指定拦截器//指定分区器i < 10;i++) {//创建record"test1","key"+i,"我是你爹"+i//发送record//关闭producer。原创 2024-07-16 20:53:19 · 500 阅读 · 0 评论 -
Kafka Producer之拦截器
新建ProducerRecord类后,传入topic、key、value等数据构建Record之后,距离发送至kafka集群还需要经历若干过程。拦截器列表,对数据进行过滤,更改等行为,处理异常不会导致流程终止。可以看到value是复制了2次,成功。根据元数据选择分区和Broker。进入数据发送缓存区,批次发送。获取Kafka集群元数据。原创 2024-07-16 20:52:07 · 715 阅读 · 0 评论 -
关于Kafka Topic分区和Replication分配的策略
/定义kafka集群配置//创建Admin管理员对象//定义Topic属性// 分区0,Leader副本在3上,第二个副本在1上。//创建Topictest4不过在手动分配时,确实需要了解每个broker的负载情况,以便做出更优的分配策略。你可以使用Kafka的类来获取集群的状态信息。原创 2024-07-14 20:24:04 · 579 阅读 · 0 评论 -
Docker Compose部署Kafka集群并在宿主机Windows连接开发
广播给客户端的地址是localhost:19092、localhost:29092、localhost:39092,也就是windows上的客户端通过localhost:19092访问broker,这会被docker的-p映射到对应容器的9092,被。是broker注册在zookeeper或者controller broker里面的元数据,当消费者或者生产者使用Bootstrap-Server去连接kafka集群时,集群会返回元数据等信息到客户端,客户端会根据每个broker提供的。即允许非加密的通信。原创 2024-07-14 20:18:22 · 1092 阅读 · 0 评论 -
Kafka基础组件图推演
虽然每个分区的同步过程是独立的,但每个Broker会为它所管理的每个分区(无论是Leader还是Follower)启动相应的复制线程,这些线程负责处理具体的同步任务。每个分区的Leader和Follower之间的同步是独立进行的。是Kafka的网络通信框架的一个核心部分,负责管理和调度网络请求。一个Broker成功竞选为新的Controller Broker后,会从Zookeeper读取最新的集群元数据。在Broker2和Broker3上处理从Broker1接收的复制请求,将消息写入它们各自的日志文件。原创 2024-07-11 19:18:32 · 935 阅读 · 0 评论 -
Kafka基础框架图推演
新的分区从创建时开始是空的,只有在后续生产者发送消息时,才会向这些新的分区写入数据。一旦生产者获取了这些元数据,它就知道每个分区的Leader Broker是谁,从而可以将消息直接发送到正确的Leader Broker。在Kafka中,生产者将消息发送到Broker时,Broker的第一个操作就是将消息记录到磁盘中,以确保消息的持久性和可靠性。:分区的多副本下,负责同步Leader的数据的分区所处的broker。:分区的多副本下,负责处理所有的读写请求的分区所处的broker。:分区可以存在多副本。原创 2024-07-11 19:17:31 · 696 阅读 · 0 评论 -
docker部署简单的Kafka
这些命令将使 ZooKeeper 和 Kafka 容器在同一个 Docker 网络中运行,并确保它们可以相互通信。如果可以成功列出 Kafka 主题,则表示 Kafka 和 ZooKeeper 正常运行。通过以上步骤,可以确认 ZooKeeper 和 Kafka 容器是否正常运行并相互通信。然后,运行 ZooKeeper 容器并将其连接到。最后,运行 Kafka 容器并将其连接到。选择一组兼容性好的版本。原创 2024-07-03 16:51:46 · 586 阅读 · 1 评论