首页 > 编程知识 正文

kafka实时性,kafka稳定性

时间:2023-05-05 09:48:36 阅读:181752 作者:4653

Kafka在很大程度上依赖于文件系统来存储和缓存消息。 一般来说,人们认为磁盘很慢。 这让我怀疑使用磁盘作为持久性能。 事实上,盘快还是盘慢取决于我们是怎么使用的。

目前,向六个7,200 rpm SATA raid-5磁盘进行线性(顺序)写入的性能为600MB/秒,而向任何位置进行写入(寻址和重新写入)的性能仅为100k/秒。 这些线性读写是所有使用模式中最可预测的,并且经过了操作系统的极大优化。 现在的操作系统提供了预读和后写技术。 实际上,可以看到顺序磁盘的读写比任何内存的读写都要快。

基于JVM内存有以下缺点:

对象的内存开销非常高,存储数据的大小通常是对象的两倍以上。 随着堆中数据的增加,GC速度变慢,错误基于操作系统的文件系统来设计有以下好处:

操作系统的pagecache可以有效利用主存空间,由于数据紧凑,可以cache大量的数据,也没有gc的压力

即使服务重新启动,缓存中的数据也是热的(不需要预热)。 基于进程的缓存需要程序预热,而且很费时间。

大大简化了代码。 因为操作系统中有在缓存和文件系统之间保持一致性的所有逻辑。 上述建议和设计使代码实现非常简单,不需要尽最大努力维护内存中的数据,而且数据可以立即写入磁盘。

以页面缓存(pagecache )为中心的设计样式在Varnish设计文章中有详细描述。

总的来说,Kafka不会保持尽可能多的内容在内存空间,而是尽可能把内容直接写入到磁盘。所有的数据都及时的以持久化日志的方式写入到文件系统,而不必要把内存中的内容刷新到磁盘中。

Kafka的持久化

1 .数据永久化:

发现线性存取磁盘或顺序存取磁盘比随机内存访问快得多,有利于持久化。 使用传统内存作为磁盘的缓存Kafka直接将数据写入日志文件,并以其他形式写入2 .日志数据持久性特性。

写入操作:通过在文件中添加数据实现读取操作:读取时从文件中读取即可3 .优点:

读取操作不屏蔽写入操作和其他操作(读取和写入都以追加形式按顺序,不会混乱,所以不屏蔽),数据大小不影响性能; 在对存储器没有容量限制的硬盘区域构筑消息系统; 线性访问磁盘,速度快,随时可以保存! 4 .持续化的具体实现:

5 .索引

为数据文件编制索引:

稀疏存储。 每隔一定的字节创建一个索引。 这是为了缩小索引文件的大小。

下图是partition的索引图像。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。