kafka
kafka中实现高性能的设计有了解过嘛
✔ 消息分区: 不受单台服务器的限制,可以不受限的处理更多的数据 ✔ 顺序读写: 磁盘顺序读写,提升读写效率(高于随机读写,寻址过程比较耗时) ✔ 页缓存: 把磁盘中的数据缓存到内存中,把对磁盘的访问变为对内存的访问 ✔ 零拷贝: 减少上下文切换及数据拷贝 ✔ 消息压缩: 减少磁盘I0和网络I0 ✔ 分批发送: 将消息打包批量发送,减少网络开销(默认16k,最大条数,默认时间) ❒ 传统数据拷贝 用户态(发起read) -> 内核态(PageCache) -> 硬件(消息) -> 内核态(dma拷贝硬盘数据到PageCache) -> 用户态 -> 内核态(cpu写数据到Socket缓冲区) -> 硬件(dma拷贝数据到网卡设备) ❒ 零拷贝 数据首先通过DMA(Direct Memory Access)从磁盘拷贝到内核态,然后再通过零拷贝机制直接传输到网络卡中。
分区,顺序,页缓存。 零拷,压缩,分批送。