分布式服务器架构(服务器架构的三种模式)
如何构建一个现代分布式架构
你如何有效地构建一个分布式企业架构?这是一个艰巨的,并且有点模糊的问题,类似于问别人你如何建立一个房子?答案取决于你要建什么样的住宅。同样,你如何决定构建你的分布式系统,将在很大程度上取决于可用的资源和业务需求。分布式架构有许多方面和很多选择,每个都有它自己的目的,优缺点,以及用例。这里有一些关键元素概述:客户端和服务器客户端/服务器分布和客户本身的性质(最终用户设备),就是在理解分布式架构的重要因素。如果客户端只是提供一个用户界面,那么服务器几乎将要做所有的工作。如果客户端托管一部分或全部应用程序,甚至一些数据(例如瘦或者胖客户端),那么它代表了架构的一个重要部分。一台台式电脑通常有很多自己的内存空间和处理能力,来托管和运行应用程序,只是偶尔才从服务器更新。相比之下,移动设备(甚至是很多智能手机)没有大量资源,要严重依赖服务器来处理大部分的工作负载。在某些情况下,这似乎是一个胖客户端的安排,而实际上是一个瘦客户端。例如,一个远程桌面应用程序可能是托管在一个服务器或虚拟PC上,这样可以轻松地在本地通过用户界面来使用PC。这张前景图上缺少了什么?显然,上述示例遗漏了现代分布式架构一个非常重要组件——中间层。网络是最明显的例子,它使用一个多层次的设计。web服务器负责通过浏览器将静态或动态内容显示给终端用户。应用程序服务器托管实际应用程序,这些应用是通过浏览器来访问的。数据库服务器存储所有通过应用交付的、使用的和收集到的数据。(记住,每一层之间的连接和沟通作为架构的一个部分,和他们层次本身同样重要)。企业想向公司以外的终端用户公开应用程序,如客户、合作伙伴和供应商,通常用这种方式选择基于web的分布式架构。当然,企业数据本身可能被进一步分布到多个数据库,创建一个更不同的架构。一些数据可能位于一个传统的关系型SQL数据库中。非结构化数据可以驻留在一个或多个NoSQL数据库中,在数据管理领域相对较新的选择方案。《理解NoSQL(Making Sense of NoSQL)》一书的作者,Dan McCreary(与Ann Kelly合著)指出,大数据不仅仅改变数据库的表面。它也会慢慢影响到企业软件。“我们在管理大型数据集方面已经有了巨大的创新,并且这能够使开发人员更敏捷。我想接下来的10年,在公司构建软件的方式上,会有很大的影响。”当一个不够时使用基于网络的“即服务”模式,一部分或所有这些服务器和数据库可能位于云端。这将把我们带入下一个分布式计算主要方面中去——使用多个服务器。使用多个服务器的最大好处是没有单点故障。在“点对点”的分布式架构中,每台机器可以处理所有任务(虽然没有一台机器可以一次处理所有的任务)。工作量负载随着需求在服务器之间进行分配和重新平衡。这种方法使得资源利用率最大化,并且如果一个节点宕掉了,允许故障转移到其他仍在运行的服务器上。数据,计算工作量和沟通都是分布式的,降低影响性能瓶颈的发病率。这是一个创建分布式系统高度可扩展的方法。它比使用单一的大型服务器使用更少的昂贵设备,并且为应用程序的持续可用性提供了大量的冗余。当需要多个服务器时,他们可能会在本地或数据中心中提供。许多企业现在在因为他们分布式架构的不同方面包括软件、平台或基础设施,使用私有云或混合云。分布式架构框架和协议构建一个分布式系统涉及很多很多不同的组件,包括从API和数据库到服务器以及通信网络。在非常放大的层面,你需要一个框架,用于实现和管理这些组件,比如当前流行的Hadoop框架。在缩小层面,你需要方法和规则,从而在事务处理层确实的把事情做好。这往往是SOA(面向服务架构)及其相关协议发挥作用之处。Nice Systems公司的架构总监Arnon Rotem-Gal-Oz这样说,“SOA仅仅是我们用来构建分布式系统的一个好的方法。当你正在通过框架,比如.net,构建一个系统时,你会发现一种不错的方式来模块化和组件化你的系统,当在SOA原则基础上建议灵活性时。”他指出,实际上将SOA部署在框架(比如hadoop)的顶部来获得双方的利益是可行的。你可能会说,分布式架构“房子”的蓝图一直以来变得越来越复杂。然而,尽管功能可能改变,潜在的好处对于企业保持惊人的一致:更多的计算能力、更好的可扩展性、更多的一致性、更多的可用性、更高的速度和更少的开销。责编:罗信
什么是分布式架构
分布式架构是分布式计算技术的应用和工具,目前成熟的技术包括J2EE, CORBA和.NET(DCOM)。
一、分布式计算技术的形成
CORBA(Common Object Request Broker Architecture)是在1992年由OMG(Open Management Group)组织提出的。那时的分布式应用环境都采用Client/Server架构,CORBA的应用很大程度的提高了分布式应用软件的开发效率。
当时的另一种分布式系统开发工具是Microsoft的DCOM(Distributed Common Object Model)。Microsoft为了使在Windows平台上开发的各种应用软件产品的功能能够在运行时(Runtime)相互调用(比如在Microsoft Word中直接编辑Excel文件),实现了OLE(Linked and Embedded Object)技术,后来这个技术衍生为COM(Common Object Model)。
随着Internet的普及和网络服务(Web Services)的广泛应用, Browser/Server架构的模式逐渐体现出它的优势。于是,Sun公司在其Java技术的基础上推出了应用于B/S架构的J2EE的开发和应用平台;Microsoft也在其DCOM技术的基础上推出了主要面向B/S应用的.NET开发和应用平台。
二、使用的协议
.NET中涵盖的DCOM技术和CORBA一样,在网络传输层都采用TCP/IP协议;也都有自己的IDL规范。所不同的是,在TCP/IP之上,CORBA采用GIOP/IIOP协议,所有CORBA服务器以IIOP通信,形成了ORB软件通道;J2EE的RMI曾经采用独立的通信协议,目前已经改为RMI/IIOP,体现了J2EE的开放性;DCOM也有自己的通信协议(TCP在135端口的服务),但微软没有公开这个协议的规范;同样,CORBA的IDL采用类C++的定义,是公开的规范;DCOM的IDL的文件虽然是文本形式的,微软没有正式公布它的规范,在使用中,.NET的IDL是由开发工具生成的。
三、应用的环境
关于.NET,比尔盖茨这样说:“简单地说,.NET是以微软的各种产品为开发工具和应用平台,实现基于XML的网络服务。”由此也可以看出,.NET在Microsoft的世界里功能强大,但对于Unix和Linux这些在服务器市场占主要份额的系统,.NET显得束手无策。
因此,J2EE显示了它跨平台的优势,为网络服务商提供了很好的面向前端(front-end)的开发和应用平台,随着网络服务进一步广泛应用和服务集成度的提高,在网络服务提供商的后台会形成越来越庞大的分布式计算环境, CORBA模块结构更适合后台(back-end)的多种服务,例如网络服务的计费程序等.因此可以看出, J2EE和CORBA技术在网络服务(Web Services)这片蓝天下,各自有自己的海洋和陆地。如果在前端(front-end)使用了.NET开发平台,那么在后端(back-end)的分布式结构中,DCOM就是理想的选择。
J2EE是纯Java技术,很多测试显示RMI(Java)服务器的响应速度远远低于非Java的CORBA服务器。因此,在一些对数据处理速度和响应时间要求较高的系统开发中,要对RMI和CORBA的性能进行测试对比后再做选择。
四、应用软件的开发和维护
从应用软件的开发过程的角度看, J2EE是完全开放式的平台,体现为既面向设计人员,也面向开发人员的规范; CORBA也是一种规范,但更多体现为中间产品, CORBA产品的提供商才是这种规范的真正执行者,对应用开发的程序员而言,只要了解IDL语言的规范,不必详细知道ORB/GIOP/IIOP的协议细节。.NET作为Microsoft在网络环境的主打,体现为一系列产品化的开发工具,比如C#, C++,等。这些开发工具是直接针对应用开发人员的。其实Sun公司提供的J2EE也是由许多软件包(应用API)来面对开发人员的。
从软件开发成本与周期以及软件的维护角度看,J2EE比CORBA有以上优势。
五、应用前景
对于分布式计算技术的架构,不能绝对地说哪一个更好,只能说哪一个更合适。针对不同的软件项目需求,具体分析才是明智的选择。
从宏观市场看,CORBA产品的销售并没有想象那样给CORBA产品提供商带来可观的利润;而J2EE的呼声也高于.NET;随着J2EE中RMI/IIOP与CORBA接口的完善,再加上开发费用的考虑和使用的方便性,J2EE一揽子开放的环境会是人们首先考虑的选择;但CORBA标准的强壮的兼容性,也使这种技术在大型系统开发中会占有一席之地。
分布式系统架构有哪些
分布式系统架构有多种类型。以下是几种常见的分布式系统架构:
一、分布式客户端-服务器架构
这种架构是常见的分布式系统架构之一。它将服务和数据存储集中在一台或多台服务器上,客户端通过网络请求访问这些服务。这种架构具有良好的扩展性和灵活性,适用于处理大量并发请求和分布式数据处理场景。此外,客户端可以根据需要灵活地扩展和部署。
二、微服务架构
微服务架构是一种将应用程序拆分成多个小型服务的架构模式。每个服务都运行在独立的进程中,并使用轻量级通信机制进行通信。这种架构有助于实现系统的可扩展性、可靠性和灵活性。微服务架构中的服务可以独立部署、升级和扩展,提高了系统的整体性能和可维护性。
三.分布式事件驱动架构(DEDA)
分布式事件驱动架构是一种基于事件的分布式系统架构。在这种架构中,系统通过事件进行通信和协同工作。组件之间通过发布-订阅模式进行交互,实现了松耦合和高内聚的特性。这种架构适用于处理实时数据流和异步事件处理场景,有助于提高系统的响应速度和吞吐量。
四、分布式计算网格架构
分布式计算网格架构是一种利用大量计算机资源协同解决大规模计算问题的架构。它通过构建一个分布式的计算资源池,将计算任务分配给空闲的计算节点进行并行处理。这种架构适用于需要大规模并行计算的应用场景,如科学计算、数据挖掘等。它可以充分利用分布式的计算资源,提高计算效率和性能。此外,该架构还具有很好的灵活性和可扩展性,可以根据需求动态地调整计算资源分配。