前言:老刘今天写这篇文章首先想对一些复制粘贴的博客表达不满;其次是想用通俗易懂的话解释消息系统;最后欢迎各位英雄好汉、女中豪杰前来battle。

1. 为什么有消息系统?

1.1 背景

今天复习kafka知识点的第一个问题是:为什么有消息系统?可能有很多自学大数据开发的人都不怎么注意这个问题,但老刘希望能够用这个小问题来提醒自学大数据开发的人,对于每个问题形成自己的理解真的很重要,即使再小的问题,它都有很大的细节!

在这个问题上,某机构的资料是这样回答的:

看到答案的我表情是这样的!

原谅老刘是个木鱼脑袋,明明问的是为什么,可这个内容回答的是消息系统有什么用,并且对于每个用处的解释,老刘觉得太专业了,实在不能用自己的理解把它们解释出来!

于是,老刘带着疑问去搜了这个问题的相关答案,不查不知道,一查吓一跳,绝大多数的人都是这样的回答,内容和排版都差不多,基本都是复制粘贴别人的内容。(抄别人的东西有意思嘛)

老刘现在不得不感慨,在网上找到一个好的答案真的太难了,真正用自己的理解回答问题的人太难找了!

1.2 解决

那这个小问题最后是如何解决的呢?

老刘在某天饭点突然一激灵,终于明白了为什么和有什么用这两个其实是可以相互转换的!

在这个灵感下,老刘结合网上大佬的内容,对为什么会有kafka消息系统给出了这样的答案。

首先为什么会有kafka消息系统这个问题,要先回答为什么会有消息系统,因为kafka是消息系统的一个实现。

老刘举例说明一下为什么会有消息系统,对消息系统的用处进行形象的解释。

这是第一个例子:

在巧克力的生产过程中,研磨车间把可可豆变成可可粉,再人工传输到加热车间变为巧克力酱,在人工搬到罐装车间,通过巧克力模型,变为各种形状的巧克力。但是呢,人工搬运有点慢,我们就引入了传送带,省掉人工搬运过程。

接着又发现问题,每个车间生产效率是不一样的,研磨车间贼快,加热车间慢,而罐装车间也快。在这种情况下,研磨车间产生的东西太多了,加热车间忙不过来,这个时候就可以设置一个仓库。

这个仓库就相当于我们的消息系统,俗称消息中间件,起到一个缓冲的作用,可以做到削峰填谷。

也相当于送快递,当快递到了,我现在没有时间来取,快递员就把快递放在附件的超市里,等我有空了就去取。

以上就是消息系统具有的缓冲、削峰填谷功能。

现在讲述第二个例子:

传统模式下,当用户下单后,订单系统需要通知库存系统,其实就是调用库存系统的接口。但是,当库存系统出现故障,无法访问的时候,订单减库存就是失败,导致订单失败,这就是订单系统和库存系统耦合。

那我们怎么办呢?

优秀的开发人员引入了消息系统,用户下单后,订单系统完成持久化处理,将消息写入消息系统,返回用户下单成功。然后库存系统采用拉/推的方式,获取下单信息,库存系统就会根据下单信息,进行库存操作。

通过这样的方式,订单系统就和库存系统成功解耦,这就是消息系统的解耦合功能。

由于某些机构的资料以及很多博客的答案都比较具有专业性,老刘实在难以理解,无法用自己的话解释出来。

于是,老刘结合了很多例子对消息系统的用处进行了形象的解释,对为什么会有消息系统这个问题也有了大致的答案。对于这个小问题终于能有自己的理解了,不容易啊!

总结一下,对于为什么会有消息系统这个问题,我们可以有这样的理解。

在实际开发过程中,常常有各种千奇百怪需求,突发情况也随时可能发生,比如应用流量暴增、应用崩溃等,为了解决这些情况,优秀的开发人员实现各种消息系统,比如RabbitMQ、RocketMQ、kafka,这些消息系统基本都会有解耦、缓冲、削峰填谷等功能,通过这些功能可以帮助我们在日常开发过程中来应对这些问题。如果时间允许,可以在对每个功能举例说明!

2. 总结

老刘以前写博客,纯粹就是分享自学大数据开发的细节知识点,让同样是自学的伙伴查漏补缺。今天的博客有多个目的,老刘写了一个列表如下:

  1. 提醒所有自学开发找工作的人,无论是看资料还是浏览别人的博客内容,千万不要照搬别人的内容,别人写什么,就去背什么,这样太危险了!

  2. 对于任何知识点,无论多么简单,它都有大大的细节,自己尝试能能用自己的理解把那些专业的知识点翻译为自己的话!

  3. 表达对众多直接复制粘贴的博客表达不满,用心写、用自己的理解写,不好吗?

最后,如果有任何遗漏或者错误的地方,联系公众号:努力的老刘,欢迎各位英雄好汉、女中豪杰前来批评和指点!

为什么会有kafka消息系统?小问题藏着大细节!的更多相关文章

  1. Kafka消息系统基础知识索引

    一些观念的修正 从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为"一个分布式流平台". Kafka不仅仅是一个队列,而且是一个存储,有超强的堆积 ...

  2. kafka 消息系统

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  3. Kafka消息系统

    一.基本概念 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 首先让我们看几个基本的消息系统术语: Kafka将消息以topic为单位进行归纳 ...

  4. 大数据之路【第十篇】:kafka消息系统

    一.简介 1.简介 简 介• Kafka是Linkedin于2010年12月份开源的消息系统• 一种分布式的.基于发布/订阅的消息系统 2.特点 – 消息持久化:通过O(1)的磁盘数据结构提供数据的持 ...

  5. 分布式发布订阅消息系统Kafka

    高吞吐量的分布式发布订阅消息系统Kafka--安装及测试   一.Kafka概述 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览, ...

  6. 发布-订阅消息系统Kafka简介

    转载请注明出处:http://www.cnblogs.com/BYRans/ Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式 ...

  7. 第1节 kafka消息队列:10、flume与kafka的整合使用

    11.flume与kafka的整合 实现flume监控某个目录下面的所有文件,然后将文件收集发送到kafka消息系统中 第一步:flume下载地址 http://archive.cloudera.co ...

  8. Kafka是分布式发布-订阅消息系统

    Kafka是分布式发布-订阅消息系统 https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apa ...

  9. 分布式消息系统:Kafka

    Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...

随机推荐

  1. JUC详解--【Foam番茄】

    1.什么是JUC java.util 工具包 业务:普通的线程代码 Thread Runnable 没有返回值,效率相比于 Callable 相对较低! 2.线程和进程 进程:一个程序,QQ.exe ...

  2. Eclipse的新建工作空间如何用以前工作空间的配置

    1.找到以前工作空间的配置目录:\.metadata\.plugins\org.eclipse.core.runtime 2.替换掉新的工作空间的配置目录:\.metadata\.plugins\or ...

  3. MSSQL 2014数据库Alwayson下日志过大,压缩日志的处理方法

    USE [{数据库名称}] DECLARE @bakfile nvarchar(100) SET @bakfile='E:\DbLogs\log_bak_'+CONVERT(nvarchar(8),G ...

  4. Spring Security + JJWT 实现 JWT 认证和授权

    关于 JJWT 的使用,可以参考之前的文章:JJWT 使用示例 一.鉴权过滤器 @Component public class JwtAuthenticationTokenFilter extends ...

  5. 第15.7节 PyQt入门学习:PyQt5应用构建详细过程介绍

    一. 引言 在上节<第15.6节 PyQt5安装与配置>结束了PyQt5的安装和配置过程,本节将编写一个简单的PyQt5应用,介绍基本的PyQt5应用的文件组成及相关工具的使用. 本节的应 ...

  6. c++如何按照map的value进行排序?

    static bool cmp(pair<char, int> a , pair<char,int> b) { return a.second>b.second; //按 ...

  7. 团队作业3_需求改进&系统设计

    一.需求&原型改进 1.需求改进: (1)发现问题:通过发布问卷调查及收集整理的形式发现用户的新需求: (2)修改需求:考虑新增提醒用户未完成事件的功能.   附:用户调查问卷(如下) 调研途 ...

  8. AtCoder Regular Contest 109

    Contest Link 为什么还没有 Official Editorial 啊--哦,原来是日文题解,那没事了. A - Hands 有两幢 100 层的楼房 \(A,B\) ,将地面所在的楼层称为 ...

  9. AcWing 295. 清理班次

    这题显然跟 区间覆盖 是一样的,而且值域在 \(1000000\) 以内,不用离散化,直接贪心求解即可. 具体地:设 \(nxt[i]\) 为从值域 \(i\) 出发,能到达最远的右端点. 一段段地跳 ...

  10. Tensorflow学习笔记No.10

    多输出模型 使用函数式API构建多输出模型完成多标签分类任务. 数据集下载链接:https://pan.baidu.com/s/1JtKt7KCR2lEqAirjIXzvgg 提取码:2kbc 1.读 ...