(1)中间件分类A
中间件是指位于操作系统和应用程序之间的软件层。它们提供了一种通信机制,使不同的应用程序或系统能够相互交互和协作。中间件可以按照不同的标准进行分类。
常见的中间件分类包括:
消息队列中间件:用于在应用程序之间进行异步消息传递。消息队列中间件包括RabbitMQ、Apache Kafka、ActiveMQ等。
数据库中间件:用于管理和访问数据库。数据库中间件包括MySQL Proxy、PostgreSQL PgBouncer等。
缓存中间件:用于加速数据访问,减轻数据库负载。缓存中间件包括Redis、Memcached等。
Web服务器中间件:用于处理HTTP请求和响应。常见的Web服务器中间件包括Nginx、Apache等。
应用服务器中间件:用于托管和管理应用程序的执行环境。常见的应用服务器中间件包括Tomcat、Jboss等。
API网关中间件:用于管理和控制API的访问和调用。常见的API网关中间件包括Kong、Apigee等。
它们在不同的领域和场景中发挥重要作用。根据具体的需求和应用场景,选择合适的中间件是非常重要的。
(2)中间件分类B
中间件是指位于应用程序和基础设施(如操作系统、网络和数据库)之间的软件层或服务集合,为分布式系统或组件的通信、集成和管理提供标准化和可重用的基础设施。它充当不同软件组件之间的中介,使它们能够以无缝和高效的方式进行交互和数据交换。
以上的定义已经相当严谨,但是据此,你可以将很多东西归类为中间件;但是,并没有必要,归类只是为了方便描述和管理而已。
传统意义上的中间件类型有:(后五种并非传统意义上的中间件,我们平时也不以中间件称呼)
应用服务器中间件:应用服务器中间件为应用程序提供运行环境。它支持应用程序组件,如Web服务、Servlet和Enterprise JavaBeans (EJB)。示例包括Apache Tomcat、JBoss和IBM WebSphere。
消息导向中间件(MOM):MOM通过消息队列实现分布式系统之间的异步通信。它确保可靠的消息传递,并支持发布/订阅和点对点消息模型。示例包括Apache Kafka、RabbitMQ和IBM MQ。
Web中间件:Web中间件提供面向基于Web的应用程序的服务,包括处理HTTP请求、会话管理和安全性。示例包括Apache HTTP Server、Nginx和Microsoft Internet Information Services (IIS)。
分布式中间件:分布式中间件实现分布式系统和组件之间的通信和协调。它包括远程过程调用(RPC)框架和对象请求代理(ORB)。示例包括gRPC、Apache Thrift和CORBA。
事务中间件:事务中间件管理涉及多个系统的分布式事务,确保原子性、一致性、隔离性和持久性(ACID属性)。示例包括Java事务API(JTA)、Microsoft分布式事务协调器(MSDTC)和IBM WebSphere Application Server。
集成中间件:集成中间件促进异构系统和数据格式的集成。它包括企业服务总线(ESB),提供路由、转换和中介功能。示例包括MuleSoft Anypoint Platform、Apache Camel和IBM Integration Bus。
数据库中间件:数据库中间件在应用程序和数据库之间提供服务,如连接池、缓存和查询优化。它提高数据库性能并管理数据访问。示例包括Hibernate、Oracle TimesTen和Microsoft Entity Framework。
缓存中间件:用于管理和提供缓存服务,以加快数据访问速度并减轻后端系统的负载。例如,Memcached和Redis可以被视为缓存中间件。
安全中间件:提供安全性功能,例如身份验证、授权、加密和访问控制,用于保护应用程序和数据的安全。例如,OAuth和OpenID Connect可以被视为安全中间件。
搜索中间件:用于构建搜索功能和实现全文搜索。这些中间件提供索引和搜索引擎功能,以便快速搜索和检索数据。例如,Elasticsearch和Apache Solr可以被视为搜索中间件。
虚拟化中间件:提供虚拟化技术,将物理资源抽象为虚拟资源,以实现资源的灵活管理和利用。例如,VMware和KVM可以被视为虚拟化中间件。
流程中间件:用于管理和协调业务流程和工作流程。这些中间件提供流程引擎和工作流引擎,用于定义、执行和监控流程。例如,Activiti和Camunda可以被视为流程中间件。
需要注意的是,中间件的类型和分类并不是固定的,随着技术的发展和创新,新的中间件类型可能会出现。因此,中间件的分类是一个不断演变的领域,可以根据实际需求和技术发展进行扩展和调整。
归类只是为了方便管理和描述,如果不能带来管理上的便捷以及不能准确描述的话,我们极可能不要什么都往“中间件”上归类,比如:Docker有人将其归类为容器中间件、Kubernetes将其归为容器编排中间件;深以为没有必要,因为这两个称呼跟它们本身的功能及定位相去甚远。Docker其实是作为容器引擎存在的,提供了容器全生命周期的管理外,还有镜像全生命周期管理;Kubernetes就是容器云平台或称之为框架,远远比“中间件”的概念要高。
(3)中间件分类C
1、事务式中间件
事务式中间件又称事务处理管理程序,是当前用的最广泛的中间件之一,其主要功能是提供联机事务处理所需要的通信、并发访问控制、事务控制、资源管理、安全管理、负载平衡、故障恢复和其他必要的服务。事务式中间件支持大量客户进程的并发访问,具有极强的扩展性。由于事务式中间件具有可靠性高、极强的扩展性等特点,主要应用于电信、金融、飞机订票系统、证券等拥有大量客户的领域。
2、过程式中间件
过程式中间件又称远程过程调用中间件。过程中间件一般从逻辑上分为两部分:客户和服务器。客户和服务器是一个逻辑概念,既可以运行在同一计算机上,也可以运行在不同的计算机上,甚至客户和服务器底层的操作系统也可以不同。客户机和服务器之间的通信可以使用同步通信,也可以采用线程式异步调用。所以过程式中间件有较好的异构支持能力,简单易用,但由于客户和服务器之间采用访问连接,所以在易剪裁性和容错方面有一定的局限性。
3、面向消息的中间件
面向消息的中间件,简称为消息中间件,是一类以消息为载体进行通信的中间件,利用高效可靠的消息机制来实现不同应用间大量的数据交换。按其通信模型的不同,消息中间件的通信模型有两类:消息队列和消息传递。通过这两种消息模型,不同应用之间的通信和网络的复杂性脱离,摆脱对不同通信协议的依赖,可以在复杂的网络环境中高可靠、高效率的实现安全的异步通信。消息中间件的非直接连接,支持多种通信规程,达到多个系统之间的数据的共享和同步。面向消息中间件是一类常用的中间件。
4、面向对象中间件
面向对象中间件又称分布对象中间件,是分布式计算技术和面向对象技术发展的结合,简称对象中间件。分布对象模型是面向对象模型在分布异构环境下的自然拓广。面向对象中间件给应用层提供各种不同形式的通信服务,通过这些服务,上层应用对事务处理、分布式数据访问,对象管理等处理更简单易行。OMG组织是分布对象技术标准化方面的国际组织,它制定出了CORBA等标准。
5、Web应用服务器
Web应用服务器是Web服务器和应用服务器相结合的产物。应用服务器中间件可以说是软件的基础设施,利用构件化技术将应用软件整合到一个确定的协同工作环境中,并提供多种通信机制,事务处理能力,及应用的开发管理功能。由于直接支持三层或多层应用系统的开发,应用服务器受到了广大用户的欢迎,是目前中间件市场上竞争的热点,J2EE架构是目前应用服务器方面的主流标准。
6、其他
新的应用需求、新的技术创新、新的应用领域促成了新的中间件产品的出现。如,ASAAC在研究标准航空电子体系结构时提出的通用系统管理GSM,属于典型的嵌入式航电系统的中间件,互联网云技术的发展云计算中间件、物流网的中间件等随着应用市场的需求应运而生。
(4)中间件分类D
目前,针对不同的应用涌现出各具特色的中间件产品。从不同的角度和层次对中间件有不同的分类。根据中间件在系统中所起的作用和采用的技术不同,可以把中间件大致划分为以下几种:
1.数据访问中间件(Data Access Middieware)
在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型、复合文档型、具有各种存放格式的多媒体型,或者是经过加密或压缩存放的,数据访问中间件是在这种系统中建立数据应用资源互操作的模式,实现异构环境下的数据库联接或文件系统联接的中间件,从而为在网络上虚拟缓冲存取、格式转换、解压等带来方便。数据访问中间件在所有的中间件中是应用最广泛、技术最成熟的一种。一个最典型的例子就是ODBC,ODBC是一种基于数据库的中间件标准,它允许应用程序和本地或者异地的数据库进行通信,并提供了一系列的应用程序接口API,当然,在多数情况下这些API都是隐藏在开发工具中,不被程序员直接使用。不过在数据访问中间件处理模型中,数据库是信息存贮的核心单元,中间件完成通信的功能,这种方式虽然是灵活的,但是并不适合于一些要求高性能处理的场合,因为它需要大量的数据通信,而且当网络发生故障时,系统将不能正常工作。
2.远程过程调用中间件(RPC)
远程过程调用是另外一种形式的中间件,它在客户/服务器计算方面,比数据库中间件又迈进了一步。通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程。它的工作方式如下:当一个应用程序A需要与远程的另一个应用程序B交换信息或要求B提供协助时,A在本地产生一个请求,通过通讯链路通知B接收信息或提供相应的服务,B完成相关处理后将信息或结果返回给A。RPC的灵活特性使得它有比数据库中间件更广泛的应用,它可以应用在更复杂的客户/服务器计算环境中。远程过程调用的灵活性还体现在它的跨平台性方面,它不仅可以调用远端的子程序,而且这种调用是可以跨不同操作系统平台的,而程序员在编程时并不需要考虑这些细节。RPC也有一些缺点,主要是因为RPC一般用于应用程序之间的通信,而且采用的是同步通信方式,因此对于比较小型的简单应用还是比较适合的,因为这些应用通常不要求异步通信方式。但是对于一些大型的应用,这种方式就不是很适合了,因为此时程序员需要考虑网络或者系统故障,处理并发操作、缓冲、流量控制以及进程同步等一系列复杂问题。
3.面向消息中间件(MOM)
消息中间件能在不同平台之间通信,实现分布式系统中可靠的、高效的、实时的跨平台数据传输,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同;其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。另外消息中间件不会占用大量的网络带宽,可以跟踪事务,并且通过将事务存储到磁盘上实现网络故障时系统的恢复。当然和远程过程调用相比,消息中间件不支持程序控制的传递。消息中间件适用于需要在多个进程之间进行可靠的数据传送的分布式环境。它是中间件中唯一不可缺少的,也是销售额最大的中间件产品,目前在Windows2000操作系统中已包含了其部分功能。
4.面向对象的中间件
面向对象的中间件(Object Oriented Middieware)。当前开发大型应用软件通常采用基于组件技术,在分布系统中,还需要集成各节点上的不同系统平台上的组件或新老版本的组件;组件的含义通常指的是一组对象的集成,其种类有数百万种,但这些组件面临着缺乏标准而不能相互操作,各厂家的组件只能在各自的平台上运行。为此,连接这些组件环境的面向对象的中间件便应运而生。面向对象的中间件是对象技术和分布式计算发展的产物,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。在这些面向对象的中间件中,功能最强的是CORBA,可以跨任意平台,但是太庞大;JavaBeans较灵活简单,很适合于作浏览器,但运行效率差;DCOM模型主要适合Windows平台,已广泛使用。但是DCOM和CORBA这两种标准相互竞争,而且两者之间有很大的区别,这在一定程度上阻碍了面向对象中间件的标准化进程。当前国内新建系统实际上主要是UNIX(包括LINUX)和Windows,因此针对这两个平台建立标准的面向对象中间件是很有必要的。
5.事务处理中间件(TPM)
事务处理中间件是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;它是针对复杂环境下分布式应用的速度和可靠性要求而实现的。它给程序员提供了一个事务处理的API,程序员可以使用这个程序接口编写高速而且可靠的分布式应用程序——基于事务处理的应用程序。事务处理中间件向用户提供一系列的服务,如应用管理、管理控制、已经应用于程序间的消息传递等。常见的功能包括全局事务协调、事务的分布式两段提交(准备阶段和完成阶段)、资源管理器支持、故障恢复、高可靠性、网络负载平衡等等。
6.网络中间件
它包括网管、接入、网络测试、虚拟社区、虚拟缓冲等,也是当前研究的热点。 终端仿真/屏幕转换中间件 它的作用在于实现客户机图形用户接口与已有的字符接口方式的服务器应用程序之间的互操作。
版权归原作者 赵哥代码客栈 所有, 如有侵权,请联系我们删除。