摘要

上一解说咱们解说了kafka的具备的一些特点:相比于传统的音讯队列来说,kafka能够做到分布式存储,具备高可用,高性能的特点,咱们这一讲次要解说:Kafka实现高性能、高可用、分布式存储的的基本原理。主线次要从吞吐量到延时引出kafka是高吞吐量、低延时的架构;依据这个高吞吐量低延时原理从而引出kafka如果实现单机几十万并发数据写入、以及如何实现高性能数据读取;而后如何将写入的数据进行极致压缩利用磁盘效率,进而在数据写入读取,以及数据存取形式都晓得的状况下,kafka如何实现分布式存储、分布式负载平衡;分布式数据存储曾经做完之后,怎么保障存储的数据实现高可用,而后如何保障存储进去的数据不会失落;这些都解说结束之后;最初解说下kafka架构外面的服务弹性伸缩以及节点新发现跟故障感知。从简到繁,一步一步层层递进。

思维导图

内容

1、吞吐量跟延时

1、吞吐量跟延时

因为kafka是高吞吐量跟低延时的架构,所以在解说kafka时候须要先理解吞吐量跟延时概念。

如果解决完一条数据须要1毫秒,并且一条数据的大小是1kb;那么1秒中就能够解决1000条数据,1000kb数据大小;下面场景中吞吐量就是:1000条、1000kb;

吞吐量:单位工夫内解决数据大小。
延时:Kafka一次申请接管音讯到音讯解决实现所耗费的工夫。

2、Spark Streaming要采取微批处理技术实现流式计算

与kafka相似的Spark大数据框架,为什么须要应用微批处理技术实现流式计算?

如果咱们解决完一条数据须要1毫秒,那么咱们的延时是:1ms 零碎的吞吐量是:1000条数据。

咱们采纳微批处理机制,先花9毫秒收集完1000条数据,而后通过1毫秒进行数据流式计算,那么本次一起数据申请执行结束的延时10毫秒 吞吐量是10万条数据。吞吐量量进步了100倍,延时减少了10倍。

因为解决1条或者1000条数据耗时相等,为了节俭每条数据都须要启动新的计算资源:网络开销或者磁盘开销比方解决1条数据须要1毫秒,吞吐量是:1000条数据/s;如果9毫秒收集1000条数据,而后1毫秒解决数据,那么零碎吞吐量10万条;零碎吞吐量增大了100倍数,然而延时减少了10倍。

其实也相似于咱们对数据库进行多条数据插入时候,应用批量插入而不是一次插入一条;次要是节约新资源的网络开销。

3、与Spark Streaming高吞吐量高延时不一样,Kafka如何实现高吞吐量低延时?

kafka实现高吞吐量低延时次要是基于kafka的数据写入机制跟数据读取机制。在上面解说。

2、Kafka如何实现单机几十万并发写入

后面解说了Spark Streaming技术是应用:batch微批处理,实现高吞吐高提早。然而kafka相同,高吞吐低提早。

常见音讯队列rabbitmq如何写入数据?
常见的音讯队列数据数据是间接将数据写入到内存,而后将内存外面的数据再写入到磁盘,这样的花就会耗用机器更多的内存,如果是基于JVM机制的还须要调配更多的对内存空间保证数据写入高效。

kafka数据写入
os cache+磁盘程序写:kafka数据写入是间接写磁盘;写磁盘的时候 实先写入到page cache;page cache是基于os cache。并且数据写入磁盘的时候是磁盘程序写的。逻辑架构图如下:

3、kafka如何实现高效数据读取

4、底层数据存储构造

5、如何保障TB数据分布式存储

6、如何保障kafka的高可用

7、如何保障kafka写入数据不失落

8、集群数据写入时候如何实现负载平衡成果

9、kafka无状态的架构如何实现

10、kafka如何实现节点发现跟故障感知