背景:项目中使用到了kafka,可你知道为什么使用kafka吗
kafka是什么:
- 分布式的消息队列
消息队列带来的优势:
- 解耦 冗余 削峰
kafka带来的优势:
- 高扩展(动态扩展):当需要增加broker结点时,新增的broker会向zookeeper注册,而producer及consumer会通过zookeeper感知这些变化,并及时作出调整。
- 消息有序:topic中每一个区的消息消费顺序是有序的
- 高吞吐量:kafka是 高吞吐量消息中间件的行业老大。这主要取决于它的队列模式(区内消息有序)保证了写磁盘的过程是线性IO
- 拉取系统:由于kafka broker会持久化数据,broker没有内存压力,因此,consumer非常适合采取pull的方式消费数据
- 消息删除策略:数据文件将会根据broker中的配置要求,保留一定的时间之后删除。kafka通过这种简单的手段,来释放磁盘空间。
选择kafka的理由:
- 分布式,高吞吐量,速度快(kafka是直接通过磁盘存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的对象创建和垃圾回收)
- 主要公司以解耦为主要功能,所以更看重kafka的高吞吐量的特点