
Kafka
水墨之白
悟已往之不谏,知来者之可追!
展开
-
Kafka协调器和有意思的三个参数
一、Kafka的协调器作用: 负责消费者的出入组工作组协调器,每个broker启动的时候,都会创建GroupCoordinator实例,管理部分消费组在与之连接的消费者中选举出消费者leader下发leader消费者返回的消费者分区分配结果给所有的消费者管理消费者的消费偏移量提交,保存在kafka的内部主题中和消费者心跳保持,知道哪些消费者已经死掉,组中存活的消费者是哪些...原创 2020-01-21 15:51:43 · 815 阅读 · 0 评论 -
主流消息中间件(Kafka,RocketMQ,RabbitMQ)选型
一、前言消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式系统架构中的一个重要组件,有着举足轻重的地位。目前开源的消息中间件可谓是琳琅满目,能让大家耳熟能详的就有很多,比如 Activ...转载 2019-07-31 23:46:29 · 767 阅读 · 0 评论 -
Kafka具体应用场景介绍
网站活动跟踪成功的网站运营都会非常关注站点的用户行为并进行分析。通过消息队列 for Apache Kafka,您可以实时收集网站活动数据(包括用户浏览页面、搜索及其他行为等),并通过“发布/订阅”模型实现:根据不同的业务数据类型,将消息发布到不同的 Topic;通过订阅消息的实时投递,将消息流用于实时监控与业务分析或者加载到 Hadoop、ODPS 等离线数据仓库系统进行离线处理与业务报...原创 2019-11-06 10:37:09 · 773 阅读 · 0 评论 -
Kafka学习笔记(一)—KafKa简介
什么是KafKa?官网介绍:Kafka is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companiesKafk...原创 2019-06-18 17:34:13 · 282 阅读 · 0 评论 -
Kafka学习笔记(二)—Kafka核心概念及术语
一、JMS协议JMS:Java对于应用程序之间进行异步交互信息的API.两种模式:Point-to-Point(P2P)(点对点) P2P一对一消息传递,消费者需要主动从队列中获取,消息不会自动推送,且消息被消费后就会从队列中删除,所以不会有重复消费的场景。Publish/Subscribe(发布订阅) Pub/Sub消息组播场景。发布订阅模式可以有多种不同的订阅者,临...原创 2019-06-18 21:14:49 · 434 阅读 · 0 评论 -
Kafka学习笔记(三)—Kafka消息丢失,消费重复
一、数据传输事务的定义最多一次(at most once):消息不会被重复发送,但是可能丢失最少一次 (at least once)消息可能会被重复发送,但是不会漏发送精确一次(exactly once) 不会少发送也不会重复发送,只会发送一次第三种定义是大家所希望的消息队列的保证,但是,Kafka默认提供的是at least once。同时,Kafka只对已提交的消息做有限度的持久...原创 2019-07-17 20:28:49 · 1235 阅读 · 0 评论 -
Kafka学习笔记(四)—KafKa消费组及位移管理
一、消费组概念Consumer Group 是 Kafka 提供的可扩展且有容错性的消费者机制。一个组里面有多个消费者实例,这些消费者共享一个ID,称为Group ID二、消费组特性消费组有多个消费实例。这些实例可以是单一进程也可以是同一进程下的线程每个分区只能被一个消费者消费,但是一个消费者可以消费多个分区Group ID是一个字符串如果每个消费实例是一个组的话,就是订阅模式,所...原创 2019-09-06 09:15:55 · 999 阅读 · 0 评论 -
Kafka学习笔记(五)—深入理解Kafka副本机制
一、副本定义副本(Replica),本质就是一个只能追加写消息的提交日志。同一个分区下的所有副本保存有相同的消息序列,这些副本分散保存在不同的 Broker 上,从而能够对抗部分 Broker 宕机带来的数据不可用二、副本机制的优点提供数据冗余。即使系统部分组件失效,系统依然能够继续运转,因而增加了整体可用性以及数据持久性。提供高伸缩性。支持横向扩展,能够通过增加机器的方式来提升读性能,...原创 2019-09-10 20:55:13 · 590 阅读 · 0 评论 -
Kafka学习笔记(六)—Kafka数据复制原理
一、HW和LEO HW:High Watermark,高水位,在分区高水位以下的消息被认为是已提交消息,反之就是未提交消息,注意高水位本身属于未提交消息,图中的8就属于未提交消息,高水位上的消息是不能被消费者消费的。LEO: Log End Offset,日志末端位移,表示副本写入下一条消息的位移值,数字 15 所在的方框是虚线,这就说明,这个副本当前只有 15 条消息,位移值是从 0 ...原创 2019-09-11 16:55:44 · 1148 阅读 · 0 评论 -
Kafka学习笔记(七)—Kafka高性能原因
批量处理传统消息中间件的消息发送和消费整体上是针对单条的,这样会造成多次网络传输。Kafka是通过将发送到相同partition的数据组装成一个批量消息,然后进行发送,这在前面文章中介绍batch.size参数时提到过,这种方式大大减少了请求的数量,提升了客户端和服务器的性能。客户端优化新版生产者客户端摒弃了以往的单线程,而采用了双线程:主线程负责将消息置入客户端缓存Sender线程负...原创 2019-09-17 19:56:05 · 618 阅读 · 0 评论 -
Kafka学习笔记(八)—Kafka在Zookeeper中的存储结构
Kafka元数据信息当kafka启动的时候,就会向zookeeper里面注册一些信息,这些数据也称为Kafka的元数据信息 根目录结构:[isr_change_notification, zookeeper, admin, consumers,cluster, config,latest_producer_id_block,controller, brokers,controller_e...原创 2019-09-19 17:22:10 · 468 阅读 · 0 评论 -
Kafka学习笔记(九)—Kafka控制器
Kafka控制器在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态Kafka控制器职责监听partition相关的变化。为Zookeeper中的/admin/reassign_partitions节点注册PartitionReassignmentListener,用来处理分区...原创 2019-09-19 19:48:11 · 337 阅读 · 0 评论 -
Kafka学习笔记(十)—Kafka文件存储机制
Kafka的消息以日志文件的形式进行存储。不同主题下不同分区的消息是分开存储的。同一个分区的不同副本也是以日志的形式,分布在不同的broker上存储查看/tmp/kafka-logs目录,假设有4个partition图片在Kafka文件存储中,同一个topic下有多个不同的partition,每个partiton为一个目录, partition的名称规则为:topic名称+有序序号, 第一个...原创 2019-09-21 15:02:56 · 411 阅读 · 0 评论 -
Kafka学习笔记(十一)—Kafka生产者API
Kafka项目有一个生产者客户端,我们可以通过这个客户端的API来发送消息。生产者客户端是用Java写的,但Kafka写消息的协议是开放的,所以我们也可以自己实现一个非Java语言的客户端问题:每条消息都是很关键且不能容忍丢失么?偶尔重复消息可以么?我们关注的是消息延迟还是写入消息的吞吐量?生产者写消息的基本流程:首先,我们需要创建一个ProducerRecord,这个对象需要包...原创 2019-09-24 00:39:11 · 422 阅读 · 0 评论 -
Kafka学习笔记(十二)—Kafka消费者API
一、Kafka消费者简介Kafka和其它消息系统有一个不一样的设计,在consumer之上加了一层group。Consumer Group 是 Kafka 提供的可扩展且具有容错性的消费者机制。同一个group的consumer可以并行消费同一个topic的消息,但是同group的consumer,不会重复消费同一分区。如果消费线程大于 patition 数量,则有些线程将收不到消息;如果...原创 2019-09-24 17:29:41 · 499 阅读 · 0 评论