前言:老刘今天写这篇文章首先想对一些复制粘贴的博客表达不满;其次是想用通俗易懂的话解释消息系统;最后欢迎各位英雄好汉、女中豪杰前来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. [BUGCASE]FixedDataTable表格数据渲染错误

    一.问题描述 广告配置中绑定第三方规格ID表格数据,有一部分展示错乱,具体如下: 表格组件使用 Facebook 的 (fixed-data-table) 组件 二.原因分析 1.检查props 先查 ...

  2. CountDownLatch、CyclicBarrier、Semaphore、Exchanger 的详细解析

    本文主要介绍和对比我们常用的几种并发工具类,主要涉及 CountDownLatch . CyclicBarrier . Semaphore . Exchanger 相关的内容,如果对多线程相关内容不熟 ...

  3. CSRF&SSRF-初探准备

    了解CSRF之前的必备知识 1.同源策略 同源策略-三个相同:协议.域名.端口 举例说明: 源URL为:http://www.example.com/dir/page.html 协议为:http 域名 ...

  4. SQL,T-SQL简介

    SQL:  结构化查询语言(Structured Query Language), 简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系型数据库系 ...

  5. Docker中搭建FastDFS文件系统(多图)

    关于FastDFS FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如 ...

  6. Spring Boot 2.x 多数据源配置之 MyBatis 篇

    场景假设:现有电商业务,商品和库存分别放在不同的库 配置数据库连接 app: datasource: first: driver-class-name: com.mysql.cj.jdbc.Drive ...

  7. PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 老猿将QTableWidget表格部件中反映部件当前情况的一些方法归类为部件状态访问方法,包括部件的 ...

  8. CobaltStrike3.14&3.8安装&中文乱码解决

    工具简介 Cobalt Strike 一款以 Metasploit 为基础的 GUI 框架式渗透测试工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听,exe.powershell 木马生成等 ...

  9. 精品软件-OfficeBox办公神器

    办公文档office处理套件,非常齐全,小巧! 官方地址:http://www.wofficebox.com/

  10. 九、git学习之——git基本命令全总结

    初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: git add <file>,注意,可反复多次使用,添加多个文件: 使用命令git commit,完成. ...