
kafka
qq_43193797
github:https://github.com/yanjie666
展开
-
kafka消费者低级API
实现使用低级API读取指定topic,指定partition,指定offset的数据。1)消费者使用低级API 的主要步骤: 步骤 主要工作 1 根据指定的分区从主题元数据中找到主副本 2 获取分区最新的消费进度 3 从主副本拉取分区的消...原创 2019-01-23 21:10:58 · 1733 阅读 · 0 评论 -
Kafka 架构及角色说明
架构角色说明Broker一台 kafka 服务器就是一个 broker。一个集群由多个broker组成。一个 broker 可以容纳多个 topic;broker 其实就是在 Hadoop 集群中的节点的概念.broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker 为消费者提供服务,对读取分区的请求作出响应,返回给消费者曾经生产者已...原创 2019-01-22 14:26:32 · 2803 阅读 · 0 评论 -
Kafka 生产过程分析
1 写入方式发送消息的主要步骤:producer采用推(push)模式将消息发布到broker,每条消息都被追加(append)到分区(patition)中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障kafka吞吐率)。 我们从创建一个 ProducerRecord 对象开始, ProducerRecord 对象需要包含目标主题和要发送的内容。 我们还可以指...原创 2019-01-22 14:45:36 · 331 阅读 · 0 评论 -
kafka之broker 保存消息
1 broker 保存消息物理上把 topic 分成一个或多个 patition(对应 server.properties 中的num.partitions=3配置)每个 patition 物理上对应一个文件夹(该文件夹存储该 patition 的所有消息和索引文件),如下:2 分区分配在创建主题时, Kafka 首先会决定如何在 broker 间分配分区。假设你有 6...原创 2019-01-23 11:45:59 · 543 阅读 · 0 评论 -
kafka生产,保存,消费消息过程要点个人总结
一、生产1)producer 先从 zookeeper 的 "/brokers/.../state" 节点找到该partition 的 leader2)producer 将消息发送给该 leader3)leader 将消息写入本地 log4)followers 从 leader pull 消息,写入本地 log 后向 leader 发送 ACK5)leader 收到所有 ISR...原创 2019-01-23 11:58:33 · 627 阅读 · 0 评论 -
kafka生产者参数设置
request.requred.acks:0:producer不等待broker的ack,这一操作提供了一个最低的延迟,broker一接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据;1:producer等待broker的ack,partition的leader落盘成功后返回ack,如果在follower同步成功之前leader故障,那么将会丢失数据;-1:produ...原创 2019-03-19 16:00:05 · 511 阅读 · 0 评论 -
kafka消费分区的分配策略
在 Kafka 内部存在两种默认的分区分配策略:Range 和 RoundRobin。当以下事件发生时,Kafka 将会进行一次分区分配:同一个 Consumer Group 内新增消费者 消费者离开当前所属的Consumer Group,包括shuts down 或 crashes 订阅的主题新增分区将分区的所有权从一个消费者移到另一个消费者称为重新平衡(rebalance),如何...原创 2019-03-19 16:04:14 · 640 阅读 · 0 评论 -
Kafka消费者详解
Kafka采用消费组保证了“一个分区只可被消费组中的一个消费者所消费”消费者组再平衡实现故障容错一旦有消费者加入或退出消费组,导致消费组成员列表发生变化,消费组中所有的消费者就要执行再平衡(rebalance) 工作。如果订阅主题的分区有变化,所有的消费者也都要再平衡。由于消费者消费消息的最小单元是分区,因此每个分区都应该记录消费进度,而且消费进度应该面向消费组级别。消费者除了需...原创 2019-03-19 19:09:55 · 849 阅读 · 0 评论 -
Kafka消费者相关面试题总结
Kafka高级消费者消费者消费哪个分区不由消费者决定,而是由高阶API决定,固定分区个数时如果消费者个数大于分区个数,那么将会有消费者空转,造成资源的浪费。自动提交offset在高阶消费者中,Offset采用自动提交的方式。自动提交时,假设1s提交一次offset的更新高阶消费者存在一个弊端,即消费者消费到哪里由高阶消费者API进行提交,提交到ZooKeeper,消费者线程不参...原创 2019-03-20 08:43:36 · 349 阅读 · 0 评论 -
Kafka的零拷贝技术
kafka中的消费者在读取服务端的数据时,需要将服务端的磁盘文件通过网络发送到消费者进程,网络发送需要经过几种网络节点。如下图所示:传统的读取文件数据并发送到网络的步骤如下:(1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存;(2)应用程序将数据从内核空间读入用户空间缓冲区;(3)应用程序将读到数据写回内核空间并放入socket缓冲区;(4)操作系统将数据从socket...原创 2019-03-18 16:11:05 · 733 阅读 · 0 评论 -
消息队列使用的四种场景
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用户注...转载 2019-01-16 17:10:27 · 277 阅读 · 0 评论 -
Kafka概述
1.1 Kafka是什么在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算。1)Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。2)Kafka最初是由LinkedIn公司开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供...原创 2019-01-16 16:47:32 · 125 阅读 · 0 评论 -
消息队里内部原理简单分析
队列发送数据有俩种形式1)一个是主动拉取队列中的数据,这个需要客户端不断监听队列是否有新数据产生2)一个是队列主动发送数据,这个不管客户端能不能接受这些数据...原创 2019-01-23 21:21:19 · 155 阅读 · 0 评论 -
Kafka工作流程分析
一、Kafka工作流程分析1 Kafka生产过程分析1 写入方式producer采用推(push)模式将消息发布到broker,每条消息都被追加(append)到分区(patition)中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障kafka吞吐率)。2 分区(Partition) Kafka集群有多个消息代理服务器(broker-server)组成,...原创 2019-01-18 20:01:39 · 720 阅读 · 0 评论 -
kafka之 Broker 保存消息
kafka的数据是存储在磁盘上的,重启之后数据不会丢失。但是kafka的默认配置中,消息只会存储7天,7天以后会被删除,默认配置在config/server.properties中的log.retention.hours这一参数中。原理:https://blog.csdn.net/u013063153/article/details/73799907https://blog.csd...原创 2019-01-18 20:14:53 · 1427 阅读 · 0 评论 -
Kafka消费过程分析
kafka提供了两套consumer API:高级Consumer API和低级API。1 消费模型 消息由生产者发布到Kafka集群后,会被消费者消费。消息的消费模型有两种:推送模型(push)和拉取模型(pull)。基于推送模型(push)的消息系统,由消息代理记录消费者的消费状态。消息代理在将消息推送到消费者后,标记这条消息为已消费,但这种方式无法很好地保证消息被处理...原创 2019-01-18 20:27:32 · 1360 阅读 · 0 评论 -
Kafka producer拦截器(interceptor)
1 拦截器原理Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑。对于producer而言,interceptor使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时,producer允许用户指定多个interceptor按序作用于同一条消息从而形成一个拦截链(i...原创 2019-01-18 20:46:42 · 354 阅读 · 0 评论 -
KAFKA OFFSET的存储问题
KAFKA OFFSET的存储问题 注意:从kafka-0.9版本及以后,kafka的消费者组和offset信息就不存zookeeper了,而是存到broker服务器上,所以,如果你为某个消费者指定了一个消费者组名称(group.id),那么,一旦这个消费者启动,这个消费者组名和它要消费的那个topic的offset信息就会被记录在broker服务器上1.概述 Kafka版本[0.10.1...原创 2019-01-24 10:36:15 · 171 阅读 · 0 评论 -
kafka集群依赖zookeeper
Kafka 集群中只能有一个 leader, 其他都是 follower, 这都需要 Zookeeper 来保证.此外,comsumer的offset也可以保存在zookeeper(新版本保存在kafka)注意:zookeeper集群的工作机制,leader负责读写请求,follower负责读请求。这点和kafka集群的partition分区副本不一样。(kafka的负载通过多个不同par...原创 2019-01-24 10:43:32 · 925 阅读 · 0 评论 -
Kafka Stream 数据清洗
1 概述编写关键任务实时应用程序和微服务的最简单方法,具有 Kafka 服务器端集群技术的所有优势。Kafka Streams 是 Apache Kafka 开源项目的一个组成部分。是一个功能强大,易于使用的库。用于在 Kafka 上构建高可分布式、拓展性,容错的应用程序。1.1 Kafka Stream 特点 功能强大 高扩展性,弹性,容错 轻量级 无需专...原创 2019-01-25 12:48:47 · 2155 阅读 · 0 评论 -
kafka 和 Flume 集成简单案例
架构 思路:步骤1: 配置 flume创建配置文件:flume-kafka.conf 内容如下:# definea1.sources = r1a1.sinks = k1a1.channels = c1# sourcea1.sources.r1.type = execa1.sources.r1.command = tail -F /opt/module/datas/fl...原创 2019-01-25 13:07:19 · 240 阅读 · 0 评论 -
SparkStreaming有哪几种方式消费Kafka中的数据,它们之间的区别是什么?
一、基于Receiver的方式这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的(如果突然数据暴增,大量batch堆积,很容易出现内存溢出的问题),然后Spark Streaming启动的job会去处理那些数据。然而,在默认的配置下,这种方...原创 2019-04-14 17:08:36 · 2072 阅读 · 0 评论