📅  最后修改于: 2020-12-14 04:02:11             🧑  作者: Mango
在分布式体系结构中,组件呈现在不同的平台上,并且几个组件可以通过通信网络相互协作,以实现特定的目的或目标。
在这种体系结构中,信息处理不限于一台机器,而是分布在几台独立的计算机上。
客户端-服务器体系结构可以证明分布式系统,该体系结构构成了多层体系结构的基础。替代方案是诸如CORBA之类的代理体系结构和面向服务的体系结构(SOA)。
有几种支持分布式体系结构的技术框架,包括.NET,J2EE,CORBA,.NET Web服务,AXIS Java Web服务和Globus Grid服务。
中间件是一种基础结构,可以适当地支持分布式应用程序的开发和执行。它在应用程序和网络之间提供了一个缓冲区。
它位于系统中间,管理或支持分布式系统的不同组件。例如事务处理监视器,数据转换器和通信控制器等。
中间件作为分布式系统的基础架构
分布式体系结构的基础是其透明性,可靠性和可用性。
下表列出了分布式系统中透明性的不同形式-
Sr.No. | Transparency & Description |
---|---|
1 |
Access Hides the way in which resources are accessed and the differences in data platform. |
2 |
Location Hides where resources are located. |
3 |
Technology Hides different technologies such as programming language and OS from user. |
4 |
Migration / Relocation Hide resources that may be moved to another location which are in use. |
5 |
Replication Hide resources that may be copied at several location. |
6 |
Concurrency Hide resources that may be shared with other users. |
7 |
Failure Hides failure and recovery of resources from user. |
8 |
Persistence Hides whether a resource ( software ) is in memory or disk. |
资源共享-共享硬件和软件资源。
开放性-使用不同供应商的硬件和软件的灵活性。
并发-并发处理以提高性能。
可扩展性-通过添加新资源来提高吞吐量。
容错-发生故障后继续运行的能力。
复杂性-它们比集中式系统复杂。
安全性-更容易受到外部攻击。
可管理性-系统管理需要付出更多努力。
不可预测性-不可预测的响应取决于系统组织和网络负载。
Criteria | Centralized system | Distributed System |
---|---|---|
Economics | Low | High |
Availability | Low | High |
Complexity | Low | High |
Consistency | Simple | High |
Scalability | Poor | Good |
Technology | Homogeneous | Heterogeneous |
Security | High | Low |
客户端-服务器体系结构是最常见的分布式系统体系结构,它将系统分解为两个主要的子系统或逻辑流程-
客户端-这是向第二个进程(即服务器)发出请求的第一个进程。
服务器-这是接收请求,执行请求并向客户端发送回复的第二个过程。
在此体系结构中,将应用程序建模为服务器提供的一组服务以及使用这些服务的一组客户端。服务器不需要知道客户端,但是客户端必须知道服务器的身份,并且处理器到进程的映射不一定是1:1。
根据客户端的功能,客户端-服务器体系结构可以分为两个模型-
在瘦客户端模型中,所有应用程序处理和数据管理均由服务器承担。客户只需负责运行演示软件。
在将遗留系统迁移到客户端服务器体系结构时使用,在该体系结构中,遗留系统通过在客户端上实现的图形界面自行充当服务器
一个主要的缺点是它给服务器和网络都带来了沉重的处理负担。
在胖客户端模型中,服务器仅负责数据管理。客户端上的软件实现了应用程序逻辑以及与系统用户的交互。
最适合预先知道客户端系统功能的新C / S系统
比瘦客户机模型更复杂,尤其是对于管理而言。必须在所有客户端上安装该应用程序的新版本。
职责分离,例如用户界面表示和业务逻辑处理。
服务器组件的可重用性和潜在的并发性
简化分布式应用程序的设计和开发
它使将现有应用程序迁移或集成到分布式环境中变得容易。
当大量客户端访问高性能服务器时,它还可以有效利用资源。
缺乏异构基础架构来处理需求变更。
安全并发症。
服务器可用性和可靠性有限。
可测试性和可扩展性有限。
胖客户具有演示和业务逻辑。
多层体系结构是一种客户端-服务器体系结构,其中物理上分离了诸如表示,应用程序处理和数据管理之类的功能。通过将应用程序分成多个层,开发人员可以选择更改或添加特定的层,而不用重新处理整个应用程序。它提供了一个模型,开发人员可以通过该模型创建灵活且可重用的应用程序。
多层体系结构最普遍的用途是三层体系结构。三层体系结构通常由表示层,应用程序层和数据存储层组成,并且可以在单独的处理器上执行。
表示层是应用程序的最高层,用户可以直接访问该层,例如网页或操作系统GUI(图形用户界面)。该层的主要函数是将任务和结果转换为用户可以理解的内容。它与其他层进行通信,以便将结果放置到浏览器/客户端层以及网络中的所有其他层。
应用程序层协调应用程序,处理命令,做出逻辑决策,评估并执行计算。它通过执行详细处理来控制应用程序的功能。它还在两个周围的层之间移动和处理数据。
在这一层中,信息从数据库或文件系统中存储和检索。然后将信息传递回进行处理,然后再返回给用户。它包括数据持久性机制(数据库服务器,文件共享等),并为应用程序层提供API(应用程序编程接口),该应用程序层提供了管理已存储数据的方法。
好处
比瘦客户端方法具有更好的性能,比瘦客户端方法更易于管理。
增强可重用性和可伸缩性-随着需求的增加,可以添加额外的服务器。
提供多线程支持,并减少网络流量。
提供可维护性和灵活性
缺点
由于缺少测试工具,因此可测试性不佳。
更重要的服务器可靠性和可用性。
代理体系结构样式是一种中间件体系结构,用于分布式计算中,以协调并启用注册的服务器和客户端之间的通信。在这里,对象通信通过称为对象请求代理(软件请求)的中间件系统进行。
客户端和服务器不直接相互交互。客户端和服务器直接与其代理进行连接,该代理与中介代理进行通信。
服务器通过注册和发布它们与代理的接口来提供服务,并且客户端可以通过查找从静态或动态向代理请求服务。
CORBA(公共对象请求代理体系结构)是代理体系结构的一个很好的实现示例。
经纪人建筑风格的组成部分通过以下主题进行讨论:
经纪人
经纪人负责协调通信,例如转发和调度结果和异常。它可以是面向调用的服务,也可以是客户端向其发送消息的面向文档或面向消息的代理。
它负责代理服务请求,定位适当的服务器,传输请求以及将响应发送回客户端。
它保留服务器的注册信息,包括其功能和服务以及位置信息。
它为客户端提供请求,服务器响应,注册或注销服务器组件,传输消息以及定位服务器的API。
存根
存根在静态编译时生成,然后部署到客户端,该客户端用作客户端的代理。客户端代理充当客户端与代理之间的中介,并在它们与客户端之间提供额外的透明性;远程对象看起来像本地对象。
代理在协议级别隐藏IPC(进程间通信),并执行参数值的编组和来自服务器的结果的编组。
骨架
骨架是由服务接口编译生成的,然后部署到服务器端,用作服务器的代理。服务器端代理封装了低级特定于系统的网络功能,并提供了高级API在服务器和代理之间进行中介。
它接收请求,解压缩请求,解组方法参数,调用适当的服务,并在将结果发送回客户端之前对结果进行封送。
桥
网桥可以基于不同的通信协议连接两个不同的网络。它调解了不同的代理,包括DCOM,.NET远程和Java CORBA代理。
桥是可选组件,当两个代理进行互操作并以一种格式获取请求和参数并将它们转换为另一种格式时,桥将隐藏实现细节。
CORBA中的Broker实施
CORBA是对象请求代理的国际标准,中介代理是管理由OMG(对象管理组)定义的分布式对象之间的通信的中间件。
服务是业务功能的组成部分,它是定义明确,自包含,独立,已发布并且可以通过标准编程接口使用的功能。服务之间的连接由通用和通用的面向消息的协议(例如SOAP Web服务协议)进行,该协议可以松散地在服务之间传递请求和响应。
面向服务的体系结构是一种客户/服务器设计,它支持业务驱动的IT方法,其中应用程序由软件服务和软件服务使用者(也称为客户端或服务请求者)组成。
面向服务的体系结构提供以下功能-
分布式部署-将企业数据和业务逻辑公开为松散的,耦合的,可发现的,结构化的,基于标准的,粗粒度的,无状态的功能单元(称为服务)。
可组合性-通过良好定义,发布和标准的投诉界面,以所需的粒度公开来自现有服务的新流程。
互操作性-跨网络共享功能并重用共享服务,而不管底层协议或实施技术如何。
可重用性-选择服务提供商并访问作为服务公开的现有资源。
下图说明了SOA如何运行-
好处
服务导向的松散耦合为企业提供了极大的灵活性,使企业可以利用所有可用的服务资源,而不受平台和技术限制。
由于无状态服务功能,每个服务组件都独立于其他服务。
只要不更改公开接口,服务的实现就不会影响服务的应用。
客户端或任何服务都可以访问其他服务,而不管其平台,技术,供应商或语言实现如何。
资产和服务的可重用性,因为服务的客户只需要知道其公共接口,服务组成即可。
就时间和成本而言,基于SOA的业务应用程序开发效率更高。
增强可伸缩性并提供系统之间的标准连接。
高效有效地使用“业务服务”。
集成变得更加容易,并改善了固有的互操作性。
开发人员的抽象复杂性,并激发了更接近最终用户的业务流程。