Kafka优势
-
kafka通常以集群的方式运行,实现高可用
-
topic(主题):在逻辑上对reorder(记录、日志)进行分组保存
kafka的分区
为了实现数据的高可用,比如将分区0的数据分散到不同的kafka节点,每一个分区都有一个broker作为leader和一个broker作为Follower
kafka的高性能实现
- 顺序读写
kafka的数据是保存在磁盘上以实现数据的持久化(缓存,默认168小时),但是kafka的特性依然是高吞吐率,通常情况下数据写入磁盘是会降低写入性能和读取性能的,但是kafka却基于数据的顺序写入技术,就算在普通的服务器上也很容易实现百万级的写入请求,其性能超过了大部分消息中间件,这种较强的写入性能使得kafka在大数据场景得到广泛的应用
- MMAP
机械磁盘的每次读写都会产生磁盘寻址--》数据写入的过程,而且寻址是一个"机械动作",其性能较低耗时较大,所以机械磁盘的随机IO性能较差,但是信息IO性能会有较大改善,为了优化写入性或者其他对象映射到进程的地址空间(虚拟内存),实现文件磁盘地址和进程虚拟地址空间中的一段虚拟地址的一一映射,MMAP可以显著提高I/O性能,尤其对于大文件的性能提升非常显著,用户对内存的所有操作都会由系统内核保存到磁盘上进行数据持久化
- 零copy
kafka服务器在响应客户端读取的时候,底层使用zeroCopy技术,不需要将数据从内核内存空间拷贝至用户进程空间,而且直接将数据通过内核空间构建响应请求,因此并没有执行数据从内核空间copy到进程空间的操作,从而节省copy数据的时间大幅提升性能
kafka总结
- 顺序写入
- MMAP
- 零copy
- 基于分区实现横向性能扩容(可动态扩容)