当前位置: 百科首页 > 生活小常识

浅谈中间件

2021-10-20 15:12:58|来源:网络|1211 ℃|移动端

中间件分类(IDC分类):大致可以分为6类:终端仿真/屏幕转换中间件、数据访问中间件、远程过程调用中间件、消息中间件、事务中间件、对象中间件。

中间件涵盖的范围很广,针对不同的应用需求,出现了各种独特的中间件产品。但是到目前为止,中间件还没有一个精确的定义,所以中间件的分类会从不同的角度或层次有所不同。因为中间件需要屏蔽分布式环境下的异构操作系统和网络协议,所以必须能够在分布式环境下提供通信服务,我们称之为平台。根据目的和实现机制的不同,我们将平台分为以下几大类:

远程过程调用中间件(远程过程调用)

面向消息的中间件

对象请求代理(对象请求代理)

它们可以提供不同形式的通信服务,包括同步、排队、订阅和发布、广播等。在这些基本的通信平台上,可以构建各种框架来为应用程序提供不同领域的服务,如事务监控、分布式数据访问、对象事务管理器OTM等。平台为上层应用屏蔽了异构平台之间的差异,其上的框架定义了相应领域应用的系统结构和标准服务组件。用户只需要说出框架关心的事件,然后提供处理这些事件的代码。当事件发生时,框架调用用户的代码。用户代码不需要调用框架,用户程序不需要关心框架结构、执行流程、调用系统级API等。这些都是框架做的。因此,基于中间件开发的应用具有良好的可扩展性、可管理性、高可用性和可移植性。

远程过程得

远程过程调用是一种广泛使用的分布式应用处理方法简单介绍。应用程序使用RPC“远程”执行位于不同地址空间的过程,效果与执行本地调用相同。实际上,一个RPC应用程序分为两部分:server和Client。服务器提供一个或多个远程过程;客户端对服务器进行远程调用。服务器和客户端可以位于同一台计算机上,也可以位于不同的计算机上,甚至可以运行在不同的操作系统上。他们通过网络交流。相应的存根和操作支持提供数据转换和通信服务,从而屏蔽不同的操作系统和网络协议。RPC通信在这里是同步的。使用线程可以进行异步调用。

在RPC模型中,只要客户端和服务器有相应的RPC接口和RPC运行支持,就可以完成相应的互操作,而不局限于特定的服务器。因此,RPC为客户机/服务器分布式计算提供了强大的支持。同时,远程过程调用RPC提供基于过程的服务访问。客户端与服务器直接相连,没有中间代理来处理请求,因此也有一定的局限性。比如RPC通常需要一些网络细节来定位服务器;在客户端发出请求的同时,服务器必须是活动的,以此类推。

面向消息的中间件

MOM是指使用高效可靠的消息传递机制的独立于平台的数据交换,以及基于数据通信的分布式系统的集成。通过提供消息传递和消息队列模型,它可以扩展分布式环境中进程之间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。流行的MOM中间件产品包括IBM的MQSeries和BEA的MessageQ。消息传递和排队技术有以下三个主要特征:

通信程序可以在不同的时间运行

程序在网络上不直接相互对话,而是间接把消息放入消息队列,因为程序之间没有直接的连接。它们不必同时运行。当消息被放入适当的队列时,目标程序甚至根本不需要运行;即使目标程序正在运行,也不意味着应该立即处理消息。

对应用程序的结构没有限制

在复杂的应用中,通信程序不仅可以有一对一的关系,还可以有一对多和多对一的方法简单介绍,甚至是上述方法简单介绍的组合。多种通信模式的构建不会增加应用的复杂性。

程序与网络复杂性无关

程序将消息放入或取出消息队列进行通信。与此相关的所有活动,如维护消息队列、维护程序和队列之间的关系、处理网络重启和移动网络中的消息,都是MOM的任务。程序不与其他程序直接对话,也不涉及网络通信的复杂性。

对象请求代理

随着对象技术和分布式计算技术的发展,它们结合形成了分布式对象计算,成为软件技术的主流。1990年底,OMG首次引入了OMA(对象管理架构),对象请求代理(Object Request Broker)是该模型的核心组件。它的功能是提供一个通信框架,在异构分布式计算环境中透明地传输对象请求。CORBA规范包含了ORB的所有标准接口。1991年引入的CORBA 1.1定义了接口描述语言OMGILD和支持特定ORB上客户机/服务器对象互操作性的API。CORBA 2.0规范描述了不同厂商提供的orb之间的互操作性。

对象请求代理(Object Request Broker,ORB)是一种对象总线,在CORBA规范中起着核心作用。它定义了异构环境中对象透明地发送请求和接收响应的基本机制,是建立对象间客户机/服务器关系的中间件。ORB使对象能够透明地向其他对象发送请求或从其他对象接收响应,这些对象可以位于本地或远程。ORB截获请求调用,负责寻找能完成请求的对象,传输参数,调用相应的方法简单介绍,返回结果。客户端对象不知道与服务器对象通信、激活或存储服务器对象的机器制,也不必知道server对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分。

值得指出的是client和server角色只是用来协调对象之间的相互作用,根据相应的场合,ORB上的对象可以是client,也可以是server,甚至兼有两者。当对象发出一个请求时,它是处于client角色;当它在接收请求时,它就处于server角色。大部分的对象都是既扮演client角色又扮演server角色。另外由于ORB负责对象请求的传送和server的管理,client和server之间并不直接连接,因此,与RPC所支持的单纯的Client/Server结构相比,ORB可以支持更加复杂的结构。

事务处理监控

事务处理监控(Transaction processing monitors)最早出现在大型机上,为其提供支持大规模事务处理的可靠运行环境。随着分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控界于client和server之间,进行事务管理与协调、负载平衡、失败恢复等,以提高系统的整体性能。它可以被看作是事务处理应用程序的”操作系统”。总体上来说,事务处理监控有以下功能:

进程管理,包括启动server进程、为其分配任务、监控其执行并对负载进行平衡。

事务管理,即保证在其监控下的事务处理的原子性、一致性、独立性和持久性。

通讯管理,为client和server之间提供了多种通讯机制,包括请求响应、会话、排队、订阅发布和广播等。

事务处理监控能够为大量的client提供服务,比如飞机定票系统。如果server为每一个client都分配其所需要的资源的话,那server将不堪重负(如图2所示)。但实际上,在同一时刻并不是所有的client都需要请求服务,而一旦某个client请求了服务,它希望得到快速的响应。事务处理监控在操作系统之上提供一组服务,对client请求进行管理并为其分配相应的服务进程,使server在有限的系统资源下能够高效地为大规模的客户提供服务。

这一节我们主要来学习一下浅谈中间件,为什么使用中间件和主要中间件的分类。

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。

中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,交易中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。

具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。

1. Hadoop

当一个大的任务由一台机器在规定的时间内不能完成时,人们就要采用分布式计算,即很多台机器联合起来共同完成任务。换句话说,就是把大任务拆分成许多个小任务,然后再把这些小任务分配给多台计算机去完成。参与计算的多台计算机组成一个分布式系统,需要运行一系列的分布式基础算法。

Hadoop 就是一个分布式计算平台,用 Java 语言开发,包含 Common、MapReduce 和 HDFS 三个核心部件(HDFS 和 MapReduce 是最核心的两个部件)。其中:

Common 为 Hadoop 的其他项目提供了一些常用工具,主要包括系统配置工具 Configuration、远程过程调用 RPC、序列化机制和 Hadoop 抽象文件系统等。

MapReduce 是处理海量数据的计算模型。

而 HDFS 用于存储海量数据,它具备高度容错性,能在低成本的通用硬件机器上稳定运行。

Hadoop 实现了分布式计算中的基础算法(如一致算法、选举算法、故障检测、快照等),同时为用户提供了编程和命令接口。程序员调用这些函数能轻松写出分布式应用程序,我们都知道,如果一切从头开始,要完成一个分布式程序的编写是异常艰难的。

Hadoop 在海量非结构化数据处理方面能充分展示它的优势,如消费者购买行为分析、商品推荐、关键词检索、信贷风险评估等。

如图 1 所示,Hadoop 其实就是一个分布式计算平台,它“覆盖”在操作系统之上,向上提供函数调用(API)和命令接口,在水平方向完成分布式系统的基础算法。作为编程人员和用户,只要了解 API 和命令即可。

图 1 Hadoop

基于 Hadoop 平台衍生出来的开源项目主要有 Yarn、HBase、Hive、ZooKeeper、Avro、Sqoop、Mahout、Crossbow 等。

以 Hadoop 为基础的生态目前已经成为大数据的标准方案,被广泛用于金融、市场、电信、交通等行业的海量数据分析,在即将到来的大数据时代,它将会发挥更大的作用。

在中国,很多行业(如银行、电信、移动、电力、石油、交通等)沉淀了大量的业务数据,对这些海量数据进行挖掘和分析,将会带来巨大的价值。

用 Hadoop 构建的应用实例对于计算资源的消耗具备两个明显的特征:

资源需求大:表明 Hadoop 需要大量的存储、计算和网络带宽。

资源需求具备季节性:表明除存储需求是经常性占用外,在运行 Mapreduce 时才需要大量的计算和网络资源,而分析大量数据的工作并不是经常性的――称为季节性

因此,云计算是大数据天生的计算资源供应途径,云计算的资源弹性很好地满足了大数据的季节性计算资源需求。也就是说,大数据是云计算经典的应用案例。当然,也可以按照大数据对计算资源的波峰需求静态配给计算资源,但是这种方案会造成资源的巨大浪费。

2. LVS

LVS 是 Linux Virtual Server 的首字母缩写,意为 Linux 虚拟服务器,即把许多台物理 Linux 计算机逻辑上整合成一台超级计算机,对用户来说感觉只有一台计算能力很强的服务器,如图 2 所示。

LVS 就是一个由软件实现的负载均衡器,工作在网络 OSI 的第四层(应用层),是中国人章嵩开发的,代码已经并入了 Linux 内核。利用它,再加上一台廉价的计算机,就能构建一台企业级的负载均衡器。而那些外国大公司的负载均衡器,售价都要十几万元,甚至几十万元,便宜的也要几万元,LVS 出来后,这些产品都不得不降价。

负载均衡器的作用就是把任务分配给最合适的服务器。比如一个大型购物网店,有 100 台同样配置的服务器在运行,如果某一时刻有 10 万用户在线购物,那么通过负载均衡器,每台服务器差不多承担 1000 个在线购物用户。

LVS 的官网网站是 http://另外,两个较为流行的第七层负载均衡器是 Nginx 和 HAProxy,针对应用做均衡,所以能适应的负载种类没有 LVS 多。

图 2 LVS原理图

3. Linux-HA

也许有读者会问:“负载均衡器本身故障应该如何处理?”是的,如果负载均衡器出现故障,那么整个系统(如网店)将会瘫痪。所以人们开发了各种集群软件,如 Linux-HA 和 Keepalive 等,而微软干脆就在 Windows 服务器版中集成故障转移集群软件。

集成故障转移集群软件的核心思想是,实时检测故障机器并及时让好的机器接管工作,对外提供高可用性。Linux-HA 意为 Linux 高可用性项目,此项目具体包含如下几个组件。

名称

作用

Heartbeat

负责维护集群中各节点的信息及它们之间的心跳通信。

Pacemaker

集群资源管理器,是核心组件,客户端通过 Pacemaker 来配置、管理并监控整个集群。此组件的社区网站为 http://clusterlabs.org/。OpenStack 高可用性部署实例中一般都采用 Pacemaker 和 HAProxy。

Resource Agent

为用于控制服务启停、监控服务状态的脚本集合,本地资源管理器(LRM)调用这些脚本来启动、停止、监控各种集群资源。

Cluster Glue

包含一套函数库和工具,在集群栈中,除集群消息传输(由 Heartbeat 承担)、集群资源管理(由 Pacemaker 承担)和资源代理(由 Resource Agent 承担)功能外,其他功能都由 Cluster Glue 来完成。它包含的两个主要部分是 LRM 和 Stonith,前者是本地资源管理器,后者的任务是隔离故障机器。

通过心跳信号(Heartbeat)检测故障,一台好的计算机会不断向其他计算机发送心跳信号,也会接收其他计算机发送过来的心跳信息。当在规定的时间内没有收到对方计算机的心跳信号时,就启动应急预案,进一步确认故障并准备接管那台计算机的任务。

例如,我们采用两台 LVS 计算机,并分别安装和配置 Linux-HA,一台 LVS 计算机作为工作机,另一台作为备份机,两台 LVS 计算机互相监督对方的运行状态。当工作机故障时,备份机接管负载均衡任务并报警。相反,当备份机出故障时,只报警,提醒技术员维修备份机。

两台LVS计算机同时出故障是比较糟糕的情况,不过这种情况发生的概率很小,除非机房断电或者遭到雷击。对于一些非常关键的应用,可以增加参与负载均衡的服务器数量来提高可靠性,如民航飞机上采用 5 台服务器。

4. 静态网站服务器

我们浏览一家公司的网站时,很可能就是跟那家公司服务器上的 Apache 程序打交道,网页浏览器与 Apache 成了标准的 C/S 模式,浏览器是客户端,而 Apache 是服务端。Apache 首先把主页对应的文件 index.html 发给我们,我们看到主页内容后,点击主页上的某个链接,它又把该链接对应的文件发给我们,过程如图 3 所示。

图 3 访问静态网页的过程

配合 PHP 引擎,Apache 也支持 PHP 动态网页。过程为:

1)当 Apache 收到用户要浏览的 PHP 文件后,把这个 PHP 文件发给 PHP 执行引擎。

2)PHP 执行引擎执行该 PHP 文件,产生一个临时的静态网页文件并发回给 Apache。

3)最后 Apache 把这个临时的静态网页文件发给用户。

采用 Perl、Python 和 Ruby 脚本语言编写的动态网页,其工作过程与 PHP 类似。

Apache 是最流行的开源网站服务器,在世界排名前 100 万的网站中,有 60.6% 的网站采用 Apache;在排名前 1000 的大型网站中,Apache 占到了 34.5%,而 Ngnix 占到了 34.9%,略胜于 Apache。

5. 动态应用服务器

开源的动态应用服务器有 JBoss、Tomcat、Geronimo、JOnAS,关于这些项目更详细的介绍,请参考相应的官方网站。

标签: 分布式, 分类, 对象, 平台, 远程, 通信

相关推荐

2022七夕找对象开大奖动物卡牌每天可以赠送多少张

白银有哪些交易平台

底特律变人需要哪些副本任务

正品DW手表多少钱一个

点淘新用户当然可以砍几次

版权申明

本文"浅谈中间件":https://www.jtmc.com.cn/6633.html内容来自网络,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们admin@jtmc.com.cn,我们会及时处理和回复。

本文共计6363个字,预计阅读时长43分钟

本栏目推荐

ai工具箱

中国生僻字大全

栏目标签

颜色 微信 民俗方言 女性 生僻字成语 中国汉字大全 成语典故 分手 衣服 养鱼知识 生僻字 中华语言 中华方言习俗 游戏 宝宝 谈恋爱 中国生僻字大全 丰胸 治疗 男人 成语大全 皮肤 网络梗 男生 食物 女人 手术 中国民间方言 女生 朋友