引言: 来到了新公司, 需要对 kafka 组件有很深的研究, 本人之前对老版的 kafka 有过一定的研究, 但是谈不上深入, 新公司力推 kafka, 比较 kafka 作为消息系统在目前的市场上的占有率还是很高的, 可以看本人之前 kafka 的博客中有关 kafka 的优点和为什么要用 kafka.
在众多优点中, 我本人认为最重要的 2 个优点如下:
1, 削峰
数据库的处理能力是有限的, 在峰值期, 过多的请求落到后台, 一旦超过系统的处理能力, 可能会使系统挂掉.
如上图所示, 系统的处理能力是 2k/s,MQ 处理能力是 8k/s, 峰值请求 5k/s,MQ 的处理能力远远大于数据库, 在高峰期, 请求可以先积压在 MQ 中, 系统可以根据自身的处理能力以 2k/s 的速度消费这些请求.
这样等高峰期一过, 请求可能只有 100/s, 系统可以很快的消费掉积压在 MQ 中的请求.
注意, 上面的请求指的是写请求, 查询请求一般通过缓存解决.
2, 解耦
如下场景, S 系统与 A,B,C 系统紧密耦合. 由于需求变动, A 系统修改了相关代码, S 系统也需要调整 A 相关的代码.
过几天, C 系统需要删除, S 紧跟着删除 C 相关代码; 又过了几天, 需要新增 D 系统, S 系统又要添加与 D 相关的代码; 再过几天, 程序猿疯了...
这样各个系统紧密耦合, 不利于维护, 也不利于扩展. 现在引入 MQ,A 系统变动, A 自己修改自己的代码即可; C 系统删除, 直接取消订阅; D 系统新增, 订阅相关消息即可.
这样通过引入消息中间件, 使各个系统都与 MQ 交互, 从而避免它们之间的错综复杂的调用关系.
来源: http://www.bubuko.com/infodetail-3168695.html