Kafka 简介

Kafka概述

Kafka是一个基于发布、订阅的分布式消息队列,用于大数据离线、实时处理。

什么是消息中间件?

生产者消费者模式的消息队列

  • 分布式消息是一种通信机制,与RPC、HTTP、RMI不同,消息中间件采用终极按代理的方式进行通信。在系统中添加了消息中间件以后,上游系统直接将生产的消息发送到消息中间件进行存储,之后消息中间件会将消息发送到分布式下游系统中处理。

为什么要用消息队列?

  • 无消息队列同步通信

  • 有消息队列异步通信

  • 注册信息的过程,先在网站上填写注册信息,后台会调用其他服务的接口,反馈给网页注册成功信息,最后再显示给用户,并且将短信发送给用户,该过程为同步通信过程,需要同步等待,由于同步通信的过程比较慢效率比较低,引入了消息队列,网页将注册信息放到消息队列中等待,然后直接回复用户注册成功,在一段时间以后用户才收到短信提示,通过消息队列将网页和短信进行了隔离,不用让用户在注册的同时一直等待。

说明:同步通信干一件事等着回复,异布通信干一件事不等着回复,有回复通知即可。

消息队列的好处:

  1. 解耦:

    MQ在数据生产方和数据消费方做了一个解耦,允许你独立的扩展或修改两边的处理过程。

  2. 可恢复:

    消息队列降低了进程间的耦合度,即使一个处理消息的进程故障,加入队列中的消息仍然可以在系统恢复后被处理。

  3. 缓冲:

    有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致。

  4. 峰值处理:

    使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

说明:
  • 数据注册时写入数据库的时候考虑的高并发的请求,但发送短信的服务并没有考虑高并发,如果数据直接发到短信服务端会导致短信服务端崩溃,将数据发送到MQ的后,让短信服务端自己根据自己的能力去取即可。

消息队列的两种模式:

  1. 点对点:消费者主动拉取数据,数据被消费者消费之后消息队列中的数据会清除。

    • 消息生产者生产消息后发送到队列中, 然后消息消费者从消息队列中主动拉取并消费消息,消息被消费以后,队列中不在有存储,所以消息消费者不可能消费已经被消费过的消息,消息队列支持多个消费者,但是对一个消息而言,只可以被一个消费者消费
  2. 订阅/发布:消费者消费数据之后不会清除消息。

    • 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同, 发布到topic的消息会被所有订阅者消费。 'topic'就是逻辑上消息队列。

Kafka 的优点:

1.搞吞吐、低延迟:Kafka每秒钟可以处理几十万条消息,但延迟最低只有几毫秒。
2.持久、可靠:Kafka中存储的消息会被持久化到磁盘,防止数据丢失并且支持备份。
3.容错性:Kafka允许集群中某些节点故障。
4.扩展性:Kafka支持集群热扩展。
5.高并发:Kafka支持数千个客户端同时读写。

posted @ 2021-05-26 22:05  yuexiuping  阅读(105)  评论(0编辑  收藏  举报