
Kafka
文章平均质量分 79
damipingzi
这个作者很懒,什么都没留下…
展开
-
坏盘导致Kafka故障一例
最近工作中又踩到Kafka的一坑。 某日收到业务侧告警说无数据,首先怀疑Flume问题,因为之前踩的Flume坑多嘛,发现某个Flume实例中有ChannelFullException,因为用的是memory channel,确认可丢数据后杀死Flume进程,起来后channel又满了。 于是确定应该是下游Kafka问题,查了每个Kafka实例的原创 2016-04-23 20:45:50 · 7230 阅读 · 1 评论 -
Kafka源码分析(6)
六 其他1、Producer 首先来看org.apache.kafka.clients.producer中的KafkaProducer类实现,org.apache.kafka开头的包全部是以java实现的,为用户提供调用kafka组件的功能。该类代码如下:public class KafkaProducer implements Producer {……………原创 2016-03-30 09:10:14 · 1448 阅读 · 0 评论 -
Kafka源码分析(5)
五 LogSubsystem1、Log Kafka通过Log文件将消息物化到磁盘中,Log只能在尾部追加而不能修改,它由一系列的LogSegments组成,每个LogSegment都有一个表示该段第一条消息位置的base offset。当往最后一个LogSegment中追加数据超过一定的时间或大小(此参数可配置)后,会生成一个新的LogSegment。原创 2016-03-30 09:08:19 · 646 阅读 · 0 评论 -
Kafka源码分析(4)
四、Replication Subsystem1、Replica Replica是kafka分发数据的最小单元,主要代码如下:class Replica(val brokerId: Int, val partition: Partition, time: Time = SystemTime,原创 2016-03-29 08:52:57 · 1945 阅读 · 0 评论 -
Kafka源码分析(3)
三 API Layer1、KafkaApis 该类是各种API的封装,通过传入的requestId来决定调用何种API,最重要的handle()方法如下所示:def handle(request: RequestChannel.Request) { try{ trace("Handling request: " + request.reques原创 2016-03-28 13:43:42 · 896 阅读 · 0 评论 -
Kafka源码分析(2)
二Network Layer1、SocketServer 主要用来创建和销毁Acceptor和Processor,主要的逻辑前面已经讲过了。 2、Acceptor线程 在线程的run()方法里,首先等待broker初始化结束,这里使用了java.util.concurrent.CountDownLatch进行同步,创建Acceptor线程原创 2016-03-27 15:24:00 · 597 阅读 · 0 评论 -
Kafka源码分析(1)
选择Kafka0.8.2.2版本进行说明,0.8以后基本都是这个架构。因为0.9以后版本的设计有比较大的变化,因此不适用于0.9以后版本代码。 本文假设读者对Kafka的基本概念已有了解。一启动1、入口 Kafka类中的main方法是整个Kafka的入口。首先是解析命令行参数,并封装为一个KafkaConfig对象。接着用该参原创 2016-03-26 10:33:14 · 703 阅读 · 0 评论 -
Kafka Streams入门指南
应该会有不少人觉得我标题打错了,是不是想讲SparkStreaming或者Kafka+SparkStreaming啊?实际上这不是笔误,Kafka Streams是Kafka 0.10提供的新能力,用于实时处理Kafka中的数据流,和现有的流处理技术如SparkStreaming,Storm,Flink还是有些区别的。1 概况 Kafka Streams是一套处理分析Ka原创 2016-06-10 11:21:24 · 22400 阅读 · 0 评论