中间件(Middleware)
2022-05-23 23:26:57 2 举报
AI智能生成
1.中间件简介 2.中间件使用选型考虑因素 3.涉及的技术点:RabbitMQ、Kafka、RocketMQ...
作者其他创作
大纲/内容
作用
1.屏蔽操作系统的复杂性,屏蔽技术之间的局限性
2.能够达到资源共享、功能共享
3.同时也把 中间件 与 支撑软件 和 实用软件 区分开来
4.管理计算资源和网络通信
5.为处于自己上层的一种或多种应用程序提供运行与开发的环境、合作互通、资源共享
6.为帮助用户灵活、高效地开发和集成复杂的应用软件
7.为上层应用软件提供开发、运行和集成的平台
8.解决了异构网络环境下软件互联和互操作
9.提供标准接口、协议,为应用软件间共享资源提供了可复用的“标准件”
使用前提
互通性(协议)
限制:中间件技术必须遵循一定的规范和协议,例如 TCP/IP、UDP协议等等,只有遵守一定的协议才能去处理事情。
eg:MySQL 就遵循了 TCP/IP 协议,平常的开发中使用不同的编程语言比如 Java、Go、Python 等来操作 MySQL 的前提也是要遵循 TCP/IP协议
PS:TCP/IP 协议是底层的操作系统协议,它并不能满足我们业务场景中的所有需求,所以在其基础上构建一个自己请求信息来实现一个新的协议
eg: AMQP 协议就在信息头中增加消息内容tag标签、队列名、交换机名、连接定制信息等等。
eg: AMQP 协议就在信息头中增加消息内容tag标签、队列名、交换机名、连接定制信息等等。
特点
1. 满足大量应用的需要
2. 运行于多种硬件和OS平台
3. 支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互
4. 支持标准的协议
5. 支持标准的接口
6.脱离于具体设计目标,而具备提供普遍独立功能需求的模块
中间件分类
常用四类
消息中间件
ActiveMQ
开发语言
Java
适用对象
中小企业
单机吞吐
万级
状态
开源
时效性
ms
可用性
高(主从架构)
介绍
遵循JMS规范AMQP协议的消息中间件,由Java语言开发,这个中间件比较老牌,目前使用的已经比较少了。如果作为一个当下比较新潮技术的开发者的话,使用该中间件的复杂性远比RabbitMQ高
RabbitMQ
开发语言
erlang
适用对象
中小企业
单机吞吐
万级
状态
开源
时效性
us
可用性
高(主从架构)
介绍
当下流行的,是国内大厂都在使用的,其中有几个原因,因为它支持分发的模式、持久化、和对容错性等各种机制的处理比较完善,而且和spring框架是同一家公司开发的产品,因此spring框架对其的支持比较完善,因此在java领域十分广泛。
Kafka
开发语言
scala
适用对象
大型企业
单机吞吐
10万级
状态
开源
时效性
ms
可用性
非常高(分布式架构)
介绍
基于tcp/ip这种二进制传输协议进行开发,所以它的性能是最好的,最接近底层,但是它不支持事物、但是支持持久化和分发机制,也是比较完善,在大数据领域用的很多
RocketMQ
开发语言
Java
适用对象
大型企业
单机吞吐
10万级
状态
开源
时效性
ms
可用性
非常高(分布式架构)
介绍
由阿里、滴滴等联合开发出来的一款国产消息队列,因为这属于一种半开源状态,已脱apache基金会,
负载均衡中间件
Nginx
LVS
用于 Nginx 发生故障需要对其做集群架构处理
KeepAlive
以保持心跳维持高可用为目的
CDN
用于加速网页加载、渲染速度
缓存中间件
特点
遵循 tcp/ip 协议
Redis
布式架构最好使用
MemCache
代码级别的,它会将缓存写入代码中,占用 jvm 内存,在一些小项目和非特别领域可以采用
数据库中间件
MySQL
具有持久化功能但是不具有高可用性的
集群/分库分表
须要使用第三方的中间件
Mycat
ShardingJDBCD
使用形式分类
事务式中间件
事务式中间件又称事务处理管理程序,是当前用的最广泛的中间件之一,其主要功能是提供联机事务处理所需要的通信、并发访问控制、事务控制、资源管理、安全管理、负载平衡、故障恢复和其他必要的服务。事务式中间件支持大量客户进程的并发访问,具有极强的扩展性。由于事务式中间件具有可靠性高、极强的扩展性等特点,主要应用于电信、金融、飞机订票系统、证券等拥有大量客户的领域。
过程式中间件
过程式中间件又称远程过程调用中间件。过程中间件一般从逻辑上分为两部分:客户和服务器。客户和服务器是一个逻辑概念,既可以运行在同一计算机上,也可以运行在不同的计算机上,甚至客户和服务器底层的操作系统也可以不同。客户机和服务器之间的通信可以使用同步通信,也可以采用线程式异步调用。所以过程式中间件有较好的异构支持能力,简单易用,但由于客户和服务器之间采用访问连接,所以在易剪裁性和容错方面有一定的局限性。
面向消息的中间件
面向消息的中间件,简称为消息中间件,是一类以消息为载体进行通信的中间件,利用高效可靠的消息机制来实现不同应用间大量的数据交换。按其通信模型的不同,消息中间件的通信模型有两类:消息队列和消息传递。通过这两种消息模型,不同应用之间的通信和网络的复杂性脱离,摆脱对不同通信协议的依赖,可以在复杂的网络环境中高可靠、高效率的实现安全的异步通信。消息中间件的非直接连接,支持多种通信规程,达到多个系统之间的数据的共享和同步。面向消息中间件是一类常用的中间件
面向对象中间件
面向对象中间件又称分布对象中间件,是分布式计算技术和面向对象技术发展的结合,简称对象中间件。分布对象模型是面向对象模型在分布异构环境下的自然拓广。面向对象中间件给应用层提供过重不同形式的通信服务,通过这些服务,上层应用对事务处理、分布式数据访问,对象管理等处理更简单易行。OMG组织是分布对象技术标准化方面的国际组织,它制定出了CORBA等标准
Web应用服务器
Web应用服务器是Web服务器和应用服务器相结合的产物。应用服务器中间件可以说是软件的基础设施,利用构件化技术将应用软件整合到一个确定的协同工作环境中,并提供多种通信机制,事务处理能力,及应用的开发管理功能。由于直接支持三层或多层应用系统的开发,应用服务器受到了广大用户的欢迎,是目前中间件市场上竞争的热点,J2EE架构是目前应用服务器方面的主流标准
其他
新的应用需求、新的技术创新、新的应用领域促成了新的中间件产品的出现。如,ASAAC在研究标准航空电子体系结构时提出的通用系统管理GSM,属于典型的嵌入式航电系统的中间件,互联网云技术的发展云计算中间件、物流网的中间件等随着应用市场的需求应运而生。
中间件架构演变
单体架构
背景
在实际的项目中,大部分的企业项目开发中,在早期都是单体的架构模式
编程中
代码文件存放
把所有的业务和模块,源代码,静态资源文件等都放在一个工程中
动作
如果其中的一个模块升级或者迭代发生一个很小的变动都会重新编译和部署项目
影响
其中一个小错误就需要重新打包重新编译重新部署,如果服务个数太多,就需要重新发布很多次。
问题
1.耦合度太高
2.运维成本过高
3.不易维护
4.服务器的成本高
5.架构升级的复杂度加大
分布式架构
eg
高楼搭建方式:结构设计图、楼层、水泥、砖,各个环节把控
问题
1.学习成本高
2.运维成本和服务器成本增高
3.人员的成本也会增高
4.项目的复杂度也会上升
5.面临的错误和容错性也会成倍增加
6.占用的服务器端口和通讯的选择的成本高
7.安全性等各因素被迫可能选择RM/MQ相关的服务器端通讯
优势
1.服务系统的独立,占用的服务器资源减少和占用的硬件成本减少
确切的说是:以合理的分配服务资源,不造成服务器资源的浪费
确切的说是:以合理的分配服务资源,不造成服务器资源的浪费
2.系统的独立维护和部署,耦合度降低,可插拔性
3.系统的架构和技术栈的选择可以变的灵活
4.弹性的部署,不会造成平台因部罟造成的瘫痪和停服的状态
二者区别
单体架构
一个请求发起jvm调度线程(确切的是tomcat线程池)分配线程 Thread来处理请求直到释放
分布式系统
一个请求是由多个系统共同来协同完成,jvm和环境都可能是独立
衍生背景
客观原因
逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,—个企业可能同时运行着多个不同的业务系统
技术因素
这些系统可能基于不同的操作系统、不同的数据库、不同的编程语言、异构的网络环境。
问题
如何把这些信息系统结合成一个有机地协同工作的整体,真正实现企业跨平台、分布式应用。
解决方式
为解决分布异构问题 , 中间件便是解决之道,它用自己的复杂换取了企业应用的简单
简介
介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务 , 以便于软件各部件之间的沟通
基础软件三大支柱
中间件
操作系统
数据库
中间件企业级开发意义
标准化
由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已经成为许多标准化工作的主要部分。
重要性地位
应用软件开发,中间件 远比 操作系统 和 网络服务更为重要
提供的帮助
环境: 提供的程序接口定义了一个相对稳定的高层应用环境
可变:不管底层的计算机硬件和系统软件怎么更新换代,只要将中间件升级更新
不变:并保持中间件对外的接口定义不变,应用软件几乎不需要修改
带来的优势
保护了企业在应用软件开发和维护中的投资额度
引擎 or 中间件 自检
中间件
具有脱离于具体设计目标特性,而具备提供普遍独立功能需求的模块—可替换
引擎
如果一个系统设计中,中间件是不可替换的,不是架构、框架设计有问题,那么就是这个中间件,在别处可能是个中间件,在这个系统内是引擎
什么时候用
考虑技术可提供因素
各种成本投入可承担
适合互联网型公司
初创型哦那公司司建议使用单体架构
分布式、微服务系统
收藏
0 条评论
下一页