乐趣区

Kafka-为什么要使用Kafka

Kafka 是一种消息中间件,首先我们看看什么是消息中间件、消息中间件可以解决什么问题,然后我们对比不同的消息中间件,总结 Kafka 适用的场景。

什么是消息中间件呢?

中间件位于系统软件和应用软件之间的部分,起到连接系统各部分。消息中间件是用于接收消息,并且将消息传递给需要消息的软件系统。

消息中间件可以解决什么问题?

1. 削峰 诸如双十一零点时淘宝的数据量陡增,服务器会承担极大的压力。我们不能以在数据量最大的时候所需要的资源数来配置资源,那样除了在某一段时间或某一刻数据量非常大,其他时间数据量都很小,会浪费很多资源。

2. 异步处理 为了实现快速响应用户,我们可以先完成必须的工作,而不必等待所有的工作做完。通常像通过邮件发送用户手册的任务可以稍后再做。

3. 解耦 多个系统为了减少相互依赖性,避免一个系统的改动引起其他系统的改动,可以使用消息中间件来达到目的。那么为什么使用消息中间件可以起到解耦的作用呢?

 我们首先需要知道什么是耦合,耦合是指系统之间的依赖,比如 A 系统以来与 B 系统提供的接口。耦合分为 7 类,我们最常见的是数据耦合和标记耦合,耦合的 7 种种类可以参考 [图解 7 种耦合关系](https://yanhaijing.com/program/2016/09/01/about-coupling/)

使用消息中间件作为中介之后,调用方和被调用方的依赖情况发生了一下的变化:a. 调用方不需要知道被调用方的接口名和参数,只需要将数据发送给消息中间件。b. 被调用系统参数的错误或者进程挂掉不会是调用方产生错误。

也就是调用方和被调用方的依赖关系装换为了调用方与消息中间件,消息中间件和被调用方的依赖关系。但是消息中间件的接口通常不会变化并且接口比较统一,所以耦合度就降低了。

不同的消息中间件之间的对比

目前主流的消息中间件有 Apache 的 ActiveMQ,LinkedIn 开发的 Kafka(现已捐赠给 Apache),阿里的 RocketMQ。它们都各具特点,那么我们在选择消息中间件的时候应该怎么选择呢?
主要从两点来判断:1、是性能。2、特性。

未完待续

退出移动版