如何构建一个现代分布式架构

日期: 2013-03-11 作者:Jason Tee翻译:谨萱 来源:TechTarget中国 英文

你如何有效地构建一个分布式企业架构?这是一个艰巨的,并且有点模糊的问题,类似于问别人你如何建立一个房子?答案取决于你要建什么样的住宅。同样,你如何决定构建你的分布式系统,将在很大程度上取决于可用的资源和业务需求。分布式架构有许多方面和很多选择,每个都有它自己的目的,优缺点,以及用例。这里有一些关键元素概述:   客户端和服务器   客户端/服务器分布和客户本身的性质(最终用户设备),就是在理解分布式架构的重要因素。

如果客户端只是提供一个用户界面,那么服务器几乎将要做所有的工作。如果客户端托管一部分或全部应用程序,甚至一些数据(例如瘦或者胖客户端),那么它代表了架构的一个重要部分。一台台式电脑通……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

你如何有效地构建一个分布式企业架构?这是一个艰巨的,并且有点模糊的问题,类似于问别人你如何建立一个房子?答案取决于你要建什么样的住宅。同样,你如何决定构建你的分布式系统,将在很大程度上取决于可用的资源和业务需求。分布式架构有许多方面和很多选择,每个都有它自己的目的,优缺点,以及用例。这里有一些关键元素概述:

  客户端和服务器

  客户端/服务器分布和客户本身的性质(最终用户设备),就是在理解分布式架构的重要因素。如果客户端只是提供一个用户界面,那么服务器几乎将要做所有的工作。如果客户端托管一部分或全部应用程序,甚至一些数据(例如瘦或者胖客户端),那么它代表了架构的一个重要部分。一台台式电脑通常有很多自己的内存空间和处理能力,来托管和运行应用程序,只是偶尔才从服务器更新。相比之下,移动设备(甚至是很多智能手机)没有大量资源,要严重依赖服务器来处理大部分的工作负载。在某些情况下,这似乎是一个胖客户端的安排,而实际上是一个瘦客户端。例如,一个远程桌面应用程序可能是托管在一个服务器或虚拟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)的顶部来获得双方的利益是可行的。

  你可能会说,分布式架构“房子”的蓝图一直以来变得越来越复杂。然而,尽管功能可能改变,潜在的好处对于企业保持惊人的一致:更多的计算能力、更好的可扩展性、更多的一致性、更多的可用性、更高的速度和更少的开销。

相关推荐