RabbitMQ学习笔记1:什么是中间件?

Posted Vincent9847

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ学习笔记1:什么是中间件?相关的知识,希望对你有一定的参考价值。

1.什么是中间件?

中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。目前,它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。

 2.中间件技术

  • 分布式消息中间件(RabbitMQ...Kafka)
  • 负载均衡中间件(nginx...CDN)
  • 缓存中间件(Redis...)
  • 数据库中间件(Mycat...)
  • 案例分析

3.什么是单体架构

在企业开发的中,大部分的初期架构都采用的是单体架构的模式进行架构,而这种架构的典型的特点:就是把所有的业务和模块,源代码,静态资源文件等都放在一个一工程中,如果其中的一个模块升级或者迭代发生一个很小变动都会重新编译和重新部署项目。这种的架构存在的问题就是:

  1. 耦合度太高
  2. 运维的成本过高
  3. 不易维护
  4. 服务器的成本高
  5. 以及升级架构的复杂度也会增大

4.什么是分布式架构

(通俗一点:就是一个请求由服务器端的多个服务(服务或者系统)协同处理完成。)
和单体架构不同的是,单体架构是一个请求发起jvm调度线程(确切的是tomcat线程池)分配线程Thread来处理请求直到释放,而分布式系统是:一个请求是由多个系统共同来协同完成,jvm和环境都可能是独立。用生活中的比喻的话,单体架构就想建设一个小房子很快就能够搞定,如果你要建设一个鸟巢或者大型的建筑,你就必须是各个环节的协同和分布,这样目的也是项目发展到后期的时候要去部署和思考的问题。我们也不难看出来:分布式架构系统存在的特点和问题如下:

存在问题:

  1. 学习成本高,技术栈过多
  2. 运维成本和服务器成本增高
  3. 人员的成本也会增高
  4. 项目的负载度也会上升
  5. 面临的错误和容错性也会成倍增加
  6. 占用的服务器端口和通讯的选择的成本高
  7. 安全性的考虑和因素逼迫可能选择RMI/MQ相关的服务器端通讯。

好处:

  1. 服务系统的独立,占用的服务器资源减少和占用的硬件成本减少,
  2. 确切的说是:可以合理的分配服务资源,不造成服务器资源的浪费
  3. 系统的独立维护和部署,耦合度降低,可插拔性。
  4. 系统的架构和技术栈的选择可以变的灵活(而不是单纯的选择java)
  5. 弹性的部署,不会造成平台因部署造成的瘫痪和停服的状态。

5.什么是消息中间件

(简单来说就是负责数据的传递、存储、分发。)

  • 利用可靠的消息传递机制进行系统和系统直接的通讯;
  • 通过提供消息传递和消息的排队机制,它可以在分布式系统环境下扩展进程的通讯。

6.消息中间件的应用场景

跨系统数据传递;

高并发的流量削峰;

数据的分发和异步处理;

大数据分析与传递;

分布式事务;

场景例子:比如你有一个数据要进行迁移或者请求并发动过多的时候,又或者你有10W的并发请求下订单,我们可以在这些订单入库之前,把它们堆积到消息队列中,让它文件可靠的入库和执行。

7.消息中间件的本质和设计

他是一种接受数据、接受请求、存储数据、发送数据等功能的技术服务。

8.消息中间件的核心组成部分

  1. 消息的协议
  2. 消息的持久化机制
  3. 消息的分发策略
  4. 消息的高可用、高可靠
  5. 消息的容错机制

 

以上是关于RabbitMQ学习笔记1:什么是中间件?的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ学习笔记1:什么是中间件?

RabbitMQ学习笔记

RabbitMQ学习笔记

Python 学习笔记 - RabbitMQ

消息中间件学习笔记——RabbitMQ

RabbitMQ 学习笔记