软件开发与架构领域 -体系化知识分享

理清软件领域各种似是而非的概念,深刻理解本质

排序:
默认
按更新时间
按访问量

Kafka源码深度解析-序列15 -Log文件结构与flush刷盘机制

Log文件结构 在前面我们反复讲topic, partition的概念,本文来分析这些不同topic、不同partition的message,在文件中,是以何种结构存储的。 有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 每个topic_partitio...

2016-12-21 14:25:30

阅读数:3004

评论数:1

Kafka源码深度解析-序列14 -Server核心组件之3-SocketServer与NIO- 1+N+M 模型

对于任何服务器程序来讲,网络框架都是其最基础的部分。在前面我们分析了Producer端的NIO和Network框架,本篇将详细分析服务器端的Network框架。 同时对比一下Kafka的1+N+M模型和Tomcat 6的1+N+M模型有什么重要区别。 有兴趣朋友可以关注公众号“架构之道与术”,...

2016-11-04 16:28:53

阅读数:1308

评论数:0

Kafka源码深度解析-序列13 -Server核心组件之2(续)- TimingWheel本质与DelayedOperationPurgatory核心结构

在上一篇,分析ReplicaManager的同步原理时,提到了DelayedOperationPurgatory,这个部件完成了2个核心功能: 1个是check DelayedProduce的complete条件,如果条件满足(也就是所有replica同步消息完成),则调用DelayedOper...

2016-10-30 13:29:24

阅读数:1563

评论数:0

Kafka源码深度解析-序列12 -Server核心组件之2-ReplicaManager核心数据结构与Replica同步原理

在上1篇,我们介绍了kafka server的1个核心组件Controller,今天我们介绍第2个核心组件ReplicaManager。ReplicaManager主要功能是完成消息从leader到其它followers的同步。ReplicaManager核心数据结构假如有1堆的broker: b...

2016-10-26 22:17:37

阅读数:1561

评论数:1

Kafka源码深度解析-序列11 -Server核心组件之1-KafkaController选举过程/Failover与Resignation

在上1篇我们提到整个Kafka集群有一个“中央控制器“-Controller,这个Controller从所有brokers中选举出来,当Controller挂了之后,其它brokers再次竞选出新的Controller,本篇将详细介绍这个过程。基本原理整个选举过程是通过zk上的一个临时节点来实现的...

2016-10-26 14:27:31

阅读数:2304

评论数:5

Kafka源码深度解析-序列10 -Server入门-Zookeeper与集群管理原理

从本篇开始,我们进入服务器端的源码分析。在正式进入服务器源码分析之前,需要先从宏观上对Kafka的集群管理有一个基本了解。在序列1里面,我们画了Kafka集群的物理架构图,知道所有的broker启动之后,都会连接到Zookeeper上面。那具体来讲,Zookeeper要帮助Kafka完成什么工作呢...

2016-10-20 14:27:32

阅读数:1844

评论数:0

Kafka源码深度解析-序列9 -Consumer -SubscriptionState内部结构分析

在前面讲了,KafkaConsumer的一个重要部件就是SubscriptionState,这个部件维护了Consumer的消费状态,本篇对其内部结构进行分析。2个offset在前面我们讲了,一个TopicPartition其实有2个offset,一个是当前要消费的offset(poll的时候),...

2016-10-13 14:04:01

阅读数:1951

评论数:0

Kafka源码深度解析-序列8 -Consumer -Fetcher实现原理与offset确认机制

在进一步介绍之前,我们先通过KafkaConsumer的构造函数,看一下其核心部件: Fetcher, SubscriptionState, ConsumerCoordinator

2016-10-12 13:57:25

阅读数:3589

评论数:2

Kafka源码深度解析-序列7 -Consumer -coordinator协议与heartbeat实现原理

单线程的consumer 在前面我们讲过,KafkaProducer是线程安全的,同时其内部还有一个Sender,开了一个后台线程,不断从队列中取消息进行发送。 而consumer,是一个纯粹的单线程程序,后面所讲的所有机制,包括coordinator,rebalance, heartbeat...

2016-10-11 21:21:36

阅读数:8155

评论数:1

Kafka源码深度解析-序列5 -Producer -RecordAccumulator队列分析

在Kafka源码分析-序列2中,我们提到了整个Producer client的架构图,如下所示:其它几个组件我们在前面都讲过了,今天讲述最后一个组件RecordAccumulator.Batch发送在以前的kafka client中,每条消息称为 “Message”,而在Java版client中,...

2016-09-29 18:21:44

阅读数:2678

评论数:0

Kafka源码深度解析-序列6 -Consumer -消费策略分析

从这一篇开始,我们将进入Consumer的分析。同Producer一样, Consumer也分旧的scala版和新的Java版,在此我们只分析新的Java版。 有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 在分析之前,我们先看一下, Consumer的基...

2016-09-25 17:19:40

阅读数:10781

评论数:6

Kafka源码深度解析-序列4 -Producer -network层核心原理

在上一篇我们分析了Java NIO的原理和使用方式,本篇将进一步分析Kafka client是如何基于NIO构建自己的network层。network层的分层架构下图展示了从最上层的KafkaProducer到最底层的Java NIO的构建层次关系: 图中淡紫色的方框表示接口或者抽象类,白色方框...

2016-09-24 17:19:04

阅读数:6311

评论数:5

Kafka源码深度解析-序列3 -Producer -Java NIO

在上一篇我们分析了Metadata的更新机制,其中涉及到一个问题,就是Sender如何跟服务器通信,也就是网络层。同很多Java项目一样,Kafka client的网络层也是用的Java NIO,然后在上面做了一层封装。下面首先看一下,在Sender和服务器之间的部分: 可以看到,Kafka cl...

2016-09-23 11:59:31

阅读数:4016

评论数:2

Kafka源码深度解析-序列2 -Producer -Metadata的数据结构与读取、更新策略

在上一篇,我们从使用方式和策略上,对消息队列做了一个宏观描述。从本篇开始,我们将深入到源码内部,仔细分析Kafka到底是如何实现一个分布式消息队列。我们的分析将从Producer端开始。从Kafka 0.8.2开始,发布了一套新的Java版的client api, KafkaProducer/...

2016-09-22 14:09:50

阅读数:10010

评论数:7

Kafka源码深度解析-系列1 -消息队列的策略与语义

-Kafka关键概念介绍 -消息队列的各种策略与语义作为一个消息队列,Kafka在业界已经相当有名。相对传统的RabbitMq/ActiveMq,Kafka天生就是分布式的,支持数据的分片、复制以及集群的方便扩展。与此同时,Kafka是高可靠的、持久化的消息队列,并且这种可靠性没有以牺牲性能为前...

2016-09-14 15:23:45

阅读数:7217

评论数:6

提示
确定要删除当前文章?
取消 删除
关闭
关闭