1.应用场景

主要用于学习互联网项目开发中的中间件技术,分类,本质,应用场景

从而更佳熟练掌握,使用,高效使用,达成目标。

2.学习/操作

1.文档阅读

Laravel - 中间件 - 学习/实践_william_n的博客-CSDN博客

[学相伴]RabbitMQ最新完整教程IDEA版通俗易懂 | KuangStudy | 狂神说 | 学相伴飞哥_哔哩哔哩_bilibili

2021-08-01-高性能 Redis 实战 - 实战入门篇 - 基于 Redis 实现 Laravel 全站访问 PV 统计中间件功能_william_n的博客-CSDN博客

08 | 数据库优化方案(一):查询请求增加时,如何做主从分离?-极客时间 -- 数据库中间件

中间件核心技术与实战_中间件_丁威_架构 - 极客时间

2.整理输出

2.1 什么是中间件【是啥玩意儿】

先来说说什么是中间件,我认为中间件是游离于业务需求之外,专门为了处理项目中涉及高可用、高性能、高并发等技术需求而引入的一个个技术组件。

它的一个重要作用就是能够实现业务代码与技术功能之间解耦合。

这么说是不是还有点抽象?

在这里定义里,我提到了业务需求和技术需求,关于这两个词我需要再解释一下。

业务需求,笼统地说就是特定用户的特定诉求。

以我们快递行业为例:人与人之间需要跨城市传递物品,逢年过节我们需要给远方的亲人寄礼物,这就是所谓的业务需求。

技术需求,就是随着业务的不断扩展,形成规模效应后带来的使用上的需求。

例如上面提到的寄件服务,原先只需要服务 1 万个客户,用户体验非常好,但现在需要服务几个亿的用户,用户在使用的过程中就会出现卡顿、系统异常等问题,因此产生可用性、稳定性方面的技术诉求。

为了解决各式各样的业务和技术诉求,代码量会越来越多。如果我们任凭业务代码与技术类代码没有秩序地纠缠在一起,系统会变得越来越不可维护,运营成本也会成指数级增加,故障频发,最终直接导致项目建设失败。

怎么解决这个问题呢?

计算机领域有一个非常经典的分层架构思想,还有这样一句话“计算机领域任何一个问题都可以通过分层来解决,如果不行,那就再增加一层。

”要想让系统做得越来越好,我们通常会基于分层的架构思想引入一个中间层,专门来解决可用性、稳定性、高性能方面的技术类诉求,这个中间层就是中间件,这也正是“中间件”这个词的来源。

2.2 它的历史由来【为什么产生】

参见 2.1 什么是中间件【是啥玩意儿】

一句话:

”要想让系统做得越来越好,我们通常会基于分层的架构思想引入一个中间层,专门来解决可用性、稳定性、高性能方面的技术类诉求,这个中间层就是中间件,这也正是“中间件”这个词的来源。

2.3 有哪些分类【能分完吗】

如下所示,这是主要/基本分类【可继续补充,形成自己的知识武器库】,并没有包含所有的中间件,而且中间件本身处于一个动态发展的过程

但是基本上的设计理念,实现技术原理,是大致相同的,或者可枚举的。

中间件的种类很多,我们无法把所有类型和产品列出来逐一讲解。但是每个类别的中间件在设计原理、使用上有很多共同的考量标准,只要了解了最重要、最主流的几种中间件,我们就可以方便地进行知识迁移,举一反三了,然后学习其他中间件将变得非常简单。

更多阅读:

01|中间件生态(上):有哪些类型的中间件?-极客时间

2.4 中间件的使用【什么时候使用,怎么使用】

这涉及到软件架构的设计原则问题。

简单说,软件架构原则遵守:

1. 简单原则

2. 合适原则

3. 演化原则

更多参考

从0开始学架构_架构基础_架构入门-极客时间

2.5 各自的优缺点【不能全是优点,也不能全是缺点,马原告诉我们事物具有两面性】

这应该结合具体的应用场景,去选择适用的中间件,在这个过程中,应该分析,比较该中间件们存在的优缺点, 从而选择最合适的中间件来解决问题。

2.6 现在的发展势头【有哪些公司因为它获得成功,会一直成功下去吗】

个人观点,有不少公司因为自己开源的中间件软件,从而获得成功,如: Redis,ES,Dubbo等等,

至于能否一直成功下去,这是一个受很多因素的影响的结果,通常最重要的还是保持技术的先进性,

以及关注用户需求,适应市场变化。

但是在目前看来,个人看法【如果有准确的地方,pls correct me】:

如:Redis,受限于磁盘的读写速度,Redis还是会相当于一段时间发展地很好,除非磁盘的读写速度,可以取得突破,但是这个很难,毕竟基于目前的计算机体系,内存访问比磁盘访问快了很多,而且想要绕过内存,也是比较麻烦的事情。

ES,几乎未来几年一直没有对手,即便有更好的中间件出现,也很难ES在短时间内较量,这就是先发优势,不过话说回来,软件的先发优势,并不如硬件等物理事物,所以,不太好说,但前提是有更好的软件出现,这个有点难。

其他中间件,差不多都是这样,想知道未来如何,先看下市场是否已经有相同的产品,软件出现,相比功能如何,以及用户的需求,是否会在未来的一段时间内,发生变化等,通常就能得到一个初步的结论,当然可以继续思考,验证。

2.7 未来的发展趋势 【它会一直存活吗,那些公司能一直发展下去吗,又有哪些哪些公司,势力会崛起】

这个主要涉及到自己的技术判断力,市场判断力。

很难说,但是可以保持关注,学习,并且思考,产生自己的判断力。

2.8 开发者如何面对【现在如何面对,未来如何面对,未来还有多久会来】

作为一个普通的开发者,面对未来,也是不知所措。

但是,请相信,这个世界会为每个保持学习,保持思考的人,不单单是开发者,留有一扇窗,

重要的是身体力行,不怕失败与挫折。

至于未来还多久,几乎没人能说得准,我们能做的就是准备好迎接未来,至少在未来来临的时候,不至于手足无措。

后续补充

...

3.问题/补充

TBD

4.参考

参见文档阅读

后续补充

...

中间件 - 学习/实践相关推荐

  1. 安装gym库_强化学习Gym库学习实践(一)

    最近看了一篇研究方向相关的文章,介绍了一种DQN的应用,感觉还挺新鲜的.想着把这篇文章复现出来,就开始学习强化学习的相关知识,作为一名小白,这一路走的可是真的十分艰难(我太菜了啊!) 看了莫烦Pyth ...

  2. 快上车!“正经”文章告诉你如何构建与使用分布式中间件平台实践

    首先,请相信我:这是一篇技术文章,正不正经,那就只有看完才能知道了! 前几天,一则"前沿数控因使用腾讯云而数据全部丢失"的新闻震惊了整个IT圈.当我看到这新闻的时候,突然的想法是这 ...

  3. 人工智能最佳学习实践

    人工智能是什么? 这不是一个容易回答的问题,因为他还处于发展阶段,没有成熟的理论体系. 回想下人类经历过的技术革 命.我们人类采用科学方法论(scientific method) (观察,假设,实验, ...

  4. 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?

    系列 <使用sklearn进行集成学习--理论> <使用sklearn进行集成学习--实践> 目录 1 Random Forest和Gradient Tree Boosting ...

  5. DL之CNN:计算机视觉之卷积神经网络算法的简介(经典架构/论文)、CNN优化技术、调参学习实践、CNN经典结构及其演化、案例应用之详细攻略

    DL之CNN:计算机视觉之卷积神经网络算法的简介(经典架构/论文).CNN优化技术.调参学习实践.CNN经典结构.案例应用之详细攻略 目录 卷积神经网络算法的简介 0.Biologically Ins ...

  6. 【赠书】掌握人工智能重要主题,深度强化学习实践书籍推荐

    ‍‍ 今天要给大家介绍的书是深度强化学习实践的第二版,本书的主题是强化学习(Reinforcement Learning,RL),它是机器学习(Machine Learning,ML)的一个分支,强调 ...

  7. CVer入门必备:计算机视觉的深度学习实践

    <计算机视觉的深度学习实践>  原价     ¥ 899.00 现超 300人报名 已至底价     ¥ 399.00  >>  点击文末阅读原文参团  << 参团 ...

  8. 【Python爬虫学习实践】基于BeautifulSoup的网站解析及数据可视化

    在上一次的学习实践中,我们以Tencent职位信息网站为例,介绍了在爬虫中如何分析待解析的网站结构,同时也说明了利用Xpath和lxml解析网站的一般化流程.在本节的实践中,我们将以中国天气网为例,并 ...

  9. 深度学习实践:计算机视觉_深度学习与传统计算机视觉技术:您应该选择哪个?

    深度学习实践:计算机视觉 计算机视觉 (Computer Vision) Deep Learning(DL) is undeniably one of the most popular tools u ...

最新文章

  1. vdsm的SSL证书验证过程
  2. python基础复习
  3. win7_64bit下桌面及开始菜单中图标变为.lnk
  4. SAP Fiori Elements List Report 列表宽度决定逻辑的单步调试
  5. 【牛客 - 696D】小K的雕塑(dp,鸽巢原理,01背包类问题)
  6. 大流量场景下如何云淡风轻地进行线上发布?
  7. python手势识别隐马尔可夫模型_使用隐马尔可夫模型的运动笔迹手势识别.doc
  8. c语言综合编程,C语言编程入门——综合练习(一)
  9. 移动端适配之二:visual viewport、layout viewport和ideal viewport介绍 1
  10. TCTrack: Temporal Contexts for Aerial Tracking
  11. 操作WORD文件:使用MSWORD.OLB组件将RichTextBox中的文本保存为WORD格式文件。
  12. C++ 方格稿纸(paint)
  13. 无人驾驶-控制-自行车模型
  14. mac上更新go版本
  15. windows用python读取文件open()函数
  16. 由JVM深入了解Java的线程安全与锁优化
  17. chrome浏览器如何避免network报错:ERR_CERT_AUTHORITY_INVALID并添加为例外或继续前往
  18. linux中kvm配置文件,如何在linux中通过kvm安装虚拟机
  19. 非分区表与分区表相互转换
  20. http://wwv.xiaonei.com/xn2.do?iid=0ae63bab-10a4-4d

热门文章

  1. 台式计算机如何定时关机,台式电脑怎么设置定时关机
  2. 读书笔记:精益数据分析 第17-20章
  3. 用css实现简易报警灯
  4. 4G网速实测与WIFI使用对比
  5. 将idea项目单个java文件打包成jar
  6. 谷歌翻译推出中国市场,这款翻译软件火爆朋友圈
  7. python定义一个复数类complex、并实现复数相加_用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算...
  8. 激光打标机的特性及应用范围
  9. 数商云仓库管理系统解决实施方案
  10. Appium自动化测试系列2- 写一个Python测试脚本来测试一下YY语音