Kafka使用场景分析

什么是Kafka

这里我们采用Kafka官网的定义,Kafka是一个分布式流处理平台。在Kafka中,客户端和服务器使用一个简单、高性能、支持多语言的 TCP 协议https://kafka.apache.org/protocol.html。
简单说,它是一个消息系统,分布式消息是一种通信机制,和 RPC、HTTP、RMI 等不一样,消息中间件采用分布式中间代理的方式进行通信,如下图所示:

image.png

另外一个角度,从数据结构上说,它是一个队列,里面放的是消息,我们把这个消息叫做Topic,Kafka 通过 Topic 对存储的流数据进行分类,我们把一个Topic称为一个主题。

一个Topic由Broker上的一个或者多个Partition构成,可以把一个Partition想象成一个Log,消息通过追加的方式写入Log。Partition内部是保证了消息的顺序的,Partition之间是不保证消息顺序的,一个典型的包含三个Partition的结构及消息写入的描述如下图:

image.png

这里写入的每条记录中包含一个key,一个value和一个timestamp(时间戳)。

Kafka可以作为一个集群,运行在一台或者多台服务器上。

Kafka的使用场景

kafka可以说是在系统架构中额外引入的一个组件,引入也是有开销的,那我们什么时候需要引入他呢。他有如下几个作用:

解耦

采用了消息中间件之后,上游业务系统发送消息,先存储在消息中间件,然后由消息中间件将消息分发到对应的业务模块应用(分布式生产者 - 消费者模式)。这种异步的方式,减少了服务之间的耦合程度。

冗余(也就是做存贮)
扩展
流量削峰
可恢复性
顺序保证
缓冲
异步通信

有这些需求的时候可以考虑使用kafka。

参考资料:https://kafka.apachecn.org/

你可能感兴趣的:(Kafka使用场景分析)