源码分析-Kafka研究
Kafka原理,使用,源码研究。
一 铭
公众号:大数据架构师修行之路
展开
-
kafka原理分析—API层实现总体框架分析
概述本文描述了kafka broker API层的实现原理。API层主要用来处理kafka客户端发送过来的请求,或者把请求发送给对应的处理子系统,并把处理结果返回给客户端。也可以查看这篇文章来了解API层的功能。API层的启动和初始化上图是kafka API层的启动和初始化过程,可以看到,API层是通过一个线程池来实现的,该线程池也可以通过修改server.properties文件中的...原创 2019-01-19 21:50:13 · 412 阅读 · 0 评论 -
kafka原理分析—网络层的实现原理分析
概述本文分析kafka网络层的实现原理。通过这篇文章我们可以对kafka broker的系统架构有一个整体的概念。这篇文章着重介绍kafka网络层的实现原理。网络层功能介绍kafka中网络层的主要功能是:监听客户端的连接请求,和客户端建建立网络连接;和客户端建立连接后,启动处理线程,接收客户端的命令请求;把客户端的请求发送给消息处理子系统;kafka网络层实现原理分析和很多高...原创 2019-01-18 23:55:12 · 639 阅读 · 0 评论 -
kafka原理分析—broker总体架构和启动流程
概述本文分析了kafka的broker的实现架构,通过本文的分析,我们可以对broker的实现架构的各个部分有一个总体的了解。实现broker的总体架构图下图是broker内部的总体架构图(该图来自于kafka官方的设计文档):从图中可以看出,kafka系统是由若干子系统构成。根据核心的功能模块,可以大体划分成以下几个子系统:客户端连接请求处理服务客户端指令处理服务日志管理子系统...原创 2019-01-18 13:49:00 · 1674 阅读 · 3 评论 -
kafka源码分析—Controller
概述本文描述了kafka的controller的实现原理,并对其源代码的实现进行了讲解。controller运行原理在Kafka集群中,controller多个broker中的一个(也只有一个controller),它除了实现正常的broker的功能外,还负责选取分区(partition)的leader。 第一个启动的broker会成为一个controller,它会在Zookee...原创 2018-08-14 19:31:50 · 1075 阅读 · 0 评论 -
Kafka介绍
Kafka简介Apache Kafka是一个分布式消息发布-订阅系统。他最初由LinkedIn开发,后来成为Apache项目的一部分。Kafka是快速、可扩展、分布式的。 和其他消息系统(ActiveMQ、RabbitMQ、ZeroMQ等)相比,Kafka有以下优点:分布式系统设计,很容易扩展对于消息的发布和订阅都有非常高的吞吐量支持多用户订阅,在消费失败时自动平衡多个消费者Kafka的逻原创 2017-06-13 12:09:48 · 1112 阅读 · 0 评论 -
Kafka原理分析-持久化方案设计(Persistence)
Kafka持久化方案的设计 Kafka很大程度上依赖文件系统来存储和缓存消息。有一普遍的认识:磁盘很慢。这让人们怀疑使用磁盘作为持久化的性能。实际上,磁盘是快还是慢完全取决于我们是如何使用它。 就目前来说,一个 six 7200rpm SATA RAID-5磁盘线性(顺序)写入的性能能达到600MB/sec,而任意位置写(寻址再写)的性能只有100k/sec。这些线性读写是所有使用模原创 2017-06-13 16:19:20 · 3191 阅读 · 0 评论 -
Kafka设计原理--性能上的设计考虑
概述本文总结了Kafka的一些设计原则和思想。通过本文,可以了解,为什么kafka的读写性能如此之高,在设计时考虑了那些方面。性能上的设计考虑使用批量传输和读写在效率上Kafka做了很大的努力。它考虑的主要场景是:高吞吐写和高并发读。也就是,在大量的写数据和多方读取数据的场景,kafka尽量使得读和写付出的代价最小。那么,它是如何做到的呢?我们知道,大量小数量的网络I/O和服务...原创 2018-07-28 22:19:18 · 302 阅读 · 0 评论 -
Kafka设计原理--生产者和消费者的设计
概述本文说明了Kafka的生产者和消费者的设计原则,通过本文可以了解生产者和消费者的设计原理和思想,为更好的理解Kafka的运行机制打下基础。生产者(Producer)的设计生产则的设计考虑了两个方面:如何实现负载均衡如何提高I/O效率负载均衡生产者(Producer)把数据直接发送到Partition的leader所在的Broker服务器,而不经过任何的路由层。为了...原创 2018-07-30 08:02:54 · 1578 阅读 · 0 评论 -
Kafka设计原理--日志复制,日志压缩,副本管理
概述本文讲述了kafka在其他方面,比如:消息传递语言,数据复制,数据压缩等方面的设计思想。消息传递语义一般来说可以提供多种消息传递的语义保证: (1) 最多一次:消息可能会丢失,但不会重新传递。 (2) 至少一次:消息永远不会丢失,但可能会重新传递。 (3) 保证正确的一次:这是真正想要的,每个消息都传递一次,只有一次。从这些语义来看,这里有两个问题: (1) 保证p...原创 2018-08-03 21:23:37 · 952 阅读 · 0 评论