Apache Kafka 也算是 MQ 的一颗新秀。
问题就是,Kafka 为什么这么快?
Kafka 使用磁盘比内存快
其实Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。
在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。
Apache Kafka 也算是 MQ 的一颗新秀。
问题就是,Kafka 为什么这么快?
其实Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。
在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。
系统完整的学习 kafka,作为后期自己实现 mq 的基准。
参考 kafka 书籍目录,自己实战学习,记录笔记。
(1)官方笔记
(2)实战笔记
(3)系统书籍学习
《Kafka 入门与实践》
《Kafka 权威指南》
《Apache Kafka 源码剖析》
第1章 Kafka简介 1
第2章 Kafka安装配置 11
第3章 Kafka核心组件 33
第4章 Kafka核心流程分析 111
第5章 Kafka基本操作实战 155
第6章 Kafka API编程实战 221
第7章 Kafka Streams 267
第8章 Kafka数据采集应用 287
第9章 Kafka与ELK整合应用 303
第10章 Kafka与Spark整合应用 323
Kafka™ is used for building real-time data pipelines and streaming apps.
It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies.
无论一个工具的性能多么的好,也需要我们合理的使用和配置这个工具。
知道原理,更加有利于我们找到优化的方向,
kafka是一个高吞吐量分布式消息系统,并且提供了持久化。其高性能的有两个重要特点:
利用了磁盘连续读写性能远远高于随机读写的特点;
并发,将一个topic拆分多个partition。
要充分发挥kafka的性能,就需要满足这两个条件
kafka读写的单位是partition,因此,将一个topic拆分为多个partition可以提高吞吐量。但是,这里有个前提,就是不同partition需要位于不同的磁盘(可以在同一个机器)。如果多个partition位于同一个磁盘,那么意味着有多个进程同时对一个磁盘的多个文 件进行读写,使得操作系统会对磁盘读写进行频繁调度,也就是破坏了磁盘读写的连续性。
一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关键指标之一。
下面将从 Kafka 文件存储机制和物理结构角度,分析 Kafka 是如何实现高效文件存储,及实际应用效果。
Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群;
Topic:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发;
Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列;
λ java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)
近期在使用 kafka,不过是阿里云的。
一时心痒痒,就像本地安装一下,环境是 window7,作为记录,便于以后学习。
apache kafka 基于 java 实现,所以需要安装下 java 基本环境。
λ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) Client VM (build 25.102-b14, mixed mode, sharing)