初识kafka

首先来明确下几个问题:

1:什么是kafka?

2:kafka的应用背景是什么?也就是为什么需要使用kafka?

kafka的官方定义是是一种高吞吐量的分布式发布订阅消息系统。在日常工作中一般是把其当作分布式/集群下的消息队列来使用。

那么为什么需要使用消息队列呢?

(1):解耦

举个简单的例子:系统A产生id,系统B,系统C想通过id来干一些事,那么BC可以通过回调的方式让A来干BC想干的事。但是随着版本改动或者需求变更,不需要C来干活了,或者新加入了D来得到id去干活,那么A系统又要进行代码修改。之后BCD不需要了,新加入E需要id来干活,那么代码又需要修改。这样就比较麻烦。

这时可以在生产者A和消费者BCDE等等等之间通过引入中间件消息队列来解决这个问题。生产者A只管往消息队列中发送id,对于消费者谁来取不用管,消费者新增了还是减少了统统不关它的事。消费者BCDEF之类的只需要自己去消息队列中把id取走就行了,这样达到降低耦合度的目的。

 

 

 (2)异步处理

继续上面这个例子,如果不引入消息队列:以生产者有BCD为例,比如生产者A每生成一个id需要20us,调用B的回调函数需要10us,C的10us,D的10us,则完成一轮id的消费需要50us。而引入中间件消息队列呢?A只管往消息队列中写入id,BCD自己去拿然后完成自己的任务。则完成一轮id消费的时间为20us+max(A,B,C)。异步处理大大减少了时间。

(3)消峰(缓存作用)

 

还是上面的例子,比如某个时刻A系统生成id的数目大大增加,每秒达到4000个。而消费者BCD每秒都只能消费1000个,那么每秒会剩余1000个,随着时间的增长,剩余的id数量会越来越大,最终导致系统崩溃。而引入了消息队列,则不一样了,由消费者BCD自己去消费队列中取。从而避免A系统承受不住而崩溃。

先睡觉了,未完待续。。。

 

posted @ 2020-06-23 23:41  smallName  阅读(69)  评论(0)    收藏  举报