Kafka核心思想概括和底层原理

发布时间:2021-09-04 11:09:05 作者:chen
来源:亿速云 阅读:147

本篇内容主要讲解“Kafka核心思想概括和底层原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kafka核心思想概括和底层原理”吧!

Kafka核心思想概括

所有的消息以“有序日志“的方式存储,生产者将消息发布到末端(可理解为追加),消费者从某个逻辑位按序读取。

【场景一】消息中间件

在选择消息中间件时,我们的主要关注点有:性能、消息的可靠性,顺序性。

1.性能

关于Kafka的高性能,主要是因为它在实现上利用了操作系统一些底层的优化技术,尽管作为写业务代码的程序员,这些底层知识也是需要了解的。

Kafka核心思想概括和底层原理

【优化一】零拷贝

这是Kafka在消费者端的优化,我们通过两张图来比较一下传统方式与零拷贝方式的区别:

传统方式:

Kafka核心思想概括和底层原理

Kafka核心思想概括和底层原理

【优化二】顺序写入磁盘

写入消息时,采用文件追加的方式,并且不允许修改已经写入的消息,于是写入磁盘的方式是顺序写入。我们通常认为的基于磁盘读写性能较差,指的是基于磁盘的随机读写;事实上,基于磁盘的顺序读写,性能接近于内存的随机读写,以下是性能对比图:

Kafka核心思想概括和底层原理

【优化三】内存映射

【优化四】批量压缩

2.可靠性

Kafka的副本机制是保证其可靠性的核心。

关于副本机制,我将它理解为Leader-Follower机制,就是多个服务器中有相同数据的多个副本,并且划分的粒度是分区。很明显,这样的策略就有下面几个问题必须解决:

request.required.acks来设置数据的可靠性:

Kafka核心思想概括和底层原理

分区机制和副本机制知识点:

Kafka核心思想概括和底层原理

3.顺序性

顺序性保证主要依赖于分区机制 + 偏移量。

提到分区,首先就要解释一下相关的概念以及他们之间的关系,个人总结如下几点:

服务器(Broker):指一个独立的服务器

主题(Topic):消息的逻辑分类,可跨Broker

分区(Partition):消息的物理分类,基本的存储单元

这里盗一张图阐述上述概念间的关系

Kafka核心思想概括和底层原理

【场景二】流处理

在0.10版本后,Kafka内置了流处理框架API——Kafka Streams,一个基于Kafka的流式处理类库,它利用了上述,至此,Kafka也就随之发展成为一个囊括消息系统、存储系统、流处理系统的中央式的流处理平台。

与已有的Spark Streaming平台不同的是,Spark Streaming或Flink是一个是一个系统架构,而Kafka Streams属于一个库。Kafka Streams秉承简单的设计原则,优势体现在运维上。同时Kafka Streams保持了上面提到的所有特性。

关于二者适合的应用场景,已有大佬给出了结论,就不强行总结了。

到此,相信大家对“Kafka核心思想概括和底层原理”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. Redis的七个核心机制底层原理
  2. Servlet底层原理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kafka

上一篇:Java网络IO模型及分类

下一篇:MySQL中的隐藏列的具体查看方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》