前言:老刘今天写这篇文章首先想对一些复制粘贴的博客表达不满;其次是想用通俗易懂的话解释消息系统;最后欢迎各位英雄好汉、女中豪杰前来battle。ide
今天复习kafka知识点的第一个问题是:为何有消息系统?可能有不少自学大数据开发的人都不怎么注意这个问题,但老刘但愿可以用这个小问题来提醒自学大数据开发的人,即便再小的问题,它都有很大的细节,对每一个知识点造成本身的理解真的很重要!!!大数据
在这个问题上,某机构的资料是这样回答的:翻译
看到答案的我表情是这样的!3d
原谅老刘是个木鱼脑壳,明明问的是为何,可这个内容回答的是消息系统有什么用,而且对于每一个用处的解释,老刘以为太专业了,实在不能用本身的理解把它们解释出来!中间件
因而,老刘带着疑问去搜了这个问题的相关答案,不查不知道,一查吓一跳,绝大多数的人都是这样的回答,内容和排版都差很少,基本都是复制粘贴别人的内容。(抄别人的东西有意思嘛)blog
老刘如今不得不感慨,在网上找到一个好的答案真的太难了,真正用本身的理解回答问题的人太难找了!接口
那这个小问题最后是如何解决的呢?开发
老刘在某天饭点忽然一激灵,终于明白了为何和有什么用这两个实际上是能够相互转换的!kafka
在这个灵感下,老刘结合网上大佬的内容,对为何会有kafka消息系统给出了这样的答案。博客
首先为何有kafka消息系统这个问题,要先回答为何会有消息系统,由于kafka是消息系统的一个实现。
老刘举例说明一下为何有消息系统,对消息系统的用处进行形象的解释。
这是第一个例子:
在巧克力的生产过程当中,研磨车间把可可豆变成可可粉,再人工传输到加热车间变为巧克力酱,在人工搬到罐装车间,经过巧克力模型,变为各类形状的巧克力。可是呢,人工搬运有点慢,咱们就引入了传送带,省掉人工搬运过程。
接着又发现问题,每一个车间生产效率是不同的,研磨车间贼快,加热车间慢,而罐装车间也快。在这种状况下,研磨车间产生的东西太多了,加热车间忙不过来,这个时候就能够设置一个仓库。
这个仓库就至关于咱们的消息系统,俗称消息中间件,起到一个缓冲的做用,能够作到削峰填谷。
也至关于送快递,当快递到了,我如今没有时间来取,快递员就把快递放在附件的超市里,等我有空了就去取。
以上就是消息系统具备的缓冲、削峰填谷功能。
如今讲述第二个例子:
传统模式下,当用户下单后,订单系统须要通知库存系统,其实就是调用库存系统的接口。可是,当库存系统出现故障,没法访问的时候,订单减库存就是失败,致使订单失败,这就是订单系统和库存系统耦合。
那咱们怎么办呢?
优秀的开发人员引入了消息系统,用户下单后,订单系统完成持久化处理,将消息写入消息系统,返回用户下单成功。而后库存系统采用拉/推的方式,获取下单信息,库存系统就会根据下单信息,进行库存操做。经过这样的方式,订单系统就和库存系统成功解耦,这就是消息系统的解耦合功能。
因为某些机构的资料以及不少博客的答案都比较具备专业性,老刘实在难以理解,没法用本身的话解释出来。
因而,老刘结合了不少例子对消息系统的用处进行了形象的解释,对为何会有消息系统这个问题也有了大体的答案。对于这个小问题终于能有本身的理解了,不容易啊!
总结一下,对于为何有消息系统这个问题,咱们能够有这样的理解。
在实际开发过程当中,经常有各类千奇百怪需求,突发状况也随时可能发生,好比应用流量暴增、应用崩溃等,为了解决这些状况,优秀的开发人员实现各类消息系统,好比RabbitMQ、RocketMQ、kafka,这些消息系统基本都会有解耦、缓冲、削峰填谷等功能,经过这些功能能够帮助咱们在平常开发过程当中来应对这些问题。若是时间容许,能够在对每一个功能举例说明!
老刘之前写博客,纯粹就是分享自学大数据开发的细节知识点,让一样是自学的伙伴查漏补缺。
今天的博客有多个目的,老刘写了一个列表以下:
最后,若是有任何遗漏或者错误的地方,联系公众号:努力的老刘,欢迎各位英雄好汉、女中豪杰前来批评和指点!