MQ(kafka)使用场景

kafka学习笔记-01

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息队列,一般用作系统间解耦、异步通信、缓冲流量削峰填谷,同时提供了简单的流处理功能.

1.什么叫系统间解耦、异步通信、缓冲流量削峰填谷

系统间解耦/异步通信。

示例1:我们用一个用户注册的场景来举例

如图:用户注册共分2步

  1. 用户注册,数据库保存用户信息
  2. 调用短信服务发送短信,返回给用户提示

假设每一步都需要30毫秒完成,那么用户注册,到请求撤离就需要60毫秒。

但实际工作中,我们不会将用户注册的功能和短信发送功能用串联的方式去执行。而是采用异步发送的方式。

异步发送 如图:

我们在用户注册和发送短信中间加上了一个消息队列(kafka)
用户注册成功之后向消息队列写入消息,就立刻返回返回给用户。
这样做就减少了用户在系统的连接时间。
再由短信服务主动消费消息队列(kafka)的消息,给用户发信息。
这就实现了我们需要的异步通信

并且这种方式不仅实现了异步通信还能实现系统间解耦

在发送短信时短信服务出现了故障。如果还是最开始的串联方式执行。短信服务的故障将会直接导致注册功能不可用。而增加消息队列之后,短信服务故障我们可以解决完问题后,继续发送注册成功的信息给用户。也就达到了系统间解耦的目的

如图:

缓冲流量削峰填谷

什么叫缓冲流量削峰填谷?

举个例子:

前台发起的请求数量是10000/s。
但是由于业务复杂后台每秒处理请求的能力是2000/s,这个时候如果前台不做限流,控制请求的数量。就会导致后台系统被压垮,引发系统宕机。

如图:

这种情况下就能使用kafka,将数据都存入kafka中,业务处理就能有条不紊的进行。
避免了瞬时数据过大对系统造成的影响,也就达到了缓冲流量,削峰填谷的目的

如图:

下面是一些概念:

  1. Kafka作为一个集群,运行在一台(单机环境)或者多台服务器(集群)上.

  2. Kafka 使用 ZooKeeper 如果你还没有ZooKeeper服务器,你需要先启动一个ZooKeeper服务器。

  3. Kafka 通过 topic 对存储的流数据进行分类。

  4. 每条记录中包含一个key,一个value 和一个timestamp(时间戳)。

  5. Kafka有四个核心的API

    生产者API(The Producer API)

    允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。

    消费者(The Consumer API)

    允许一个应用程序订阅一个或多个 topic ,并且对发布给他们的流式数据进行处理。

    流处理(The Streams API)

    允许一个应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换。

    The Connector API

    允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容。

发布了11 篇原创文章 · 获赞 4 · 访问量 223

猜你喜欢

转载自blog.csdn.net/LiushaoMr/article/details/103938641