使用消息队列的三种场景 1.解耦 2.异步 3.削峰
优点: 接口的吞吐量会大幅度提高【异步】 即便大批量的调用接口都不会影响系统
消息生产者只用负责把消息写到消息队列,消息消费者只需从消费队列取出使用即可。
为什么Kafka能承载这么大的QPS(即为什么能削峰): 消息队列最核心的功能是:把数据存储起来,供使用方读取。Kafka在存储和读取过程中做了很多的优化
往一个topic发送消息和读取消息时,内部是多个Partition在处理(并行) 存储消息时,Kafka内部是顺序写磁盘,并利用了操作系统的缓冲区来提高性能(append+cache),读写数据也减少了CPU的拷贝次数(零拷贝)
零拷贝其实就是省略CPU的拷贝
kafka速度快的原因就是实现了并行、充分利用操作系统cache、顺序写和零拷贝