Centralized/Distributed/Service 面向 Architecture/Application

Centralized/Distributed/Service oriented Architecture/Application

我正在做一个系统架构,我的大学知识对理解集中式、分布式服务之间的细微差别没有帮助面向 architecture/application.

如果我采用典型的client/server架构,客户端发送请求到服务器,然后服务器发送对客户的回应。那是一个集中式架构

同时处理服务器端客户端的应用程序将是分布式应用程序(因为在不同的平台上工作),但这仍然是一个 集中式架构

因此,分布式架构必须涉及分布式应用程序

问题:我说的对吗? 面向服务的架构/应用程序会变成什么?

分布式:将一个计算任务涉及的整个过程切分给多个计算节点。每个节点在执行其部分处理时无法访问实现全局优化结果所需的系统的全部信息。来自多个节点的结果的聚合将通过通常分布在多个节点上的多次计算迭代收敛到全局最优结果。

一个很好的例子是路由器系统,其中每个路由器只有它与邻居交换的信息。一开始,邻居只知道整个网络系统的一部分。一旦路由器从其邻居那里获得更多信息,它就会将新信息合并到整个系统的视图中,然后将其视图传播到邻居。通过这些步骤的多次迭代,每个步骤都由单独的路由器单独计算,所有路由器将确定整个网络系统的一致全局视图。

另一个示例可能是网络订购系统,其中浏览器最初获取常用订购商品的列表。浏览器可能具有跟踪用户浏览行为的逻辑,并决定从服务器获取不同类别的商品列表,但不会将所有用户行为参数发送给服务器。在这个图像示例中,浏览器知道一些服务器不知道的东西,而服务器也知道。因此整个应用程序将是一个分布式系统。除了这部分分布式性质之外,用户身份验证可以在其中一台服务器上完成,库存在另一台服务器上完成,并在另一台服务器上进行预订。所涉及的每个服务器都不会拥有特定用户浏览和订购实例的全部信息。但是来自所有这些节点的聚合工作将满足销售更多商品和满足更多客户的业务需求。

与分布式相反的是集中式,计算逻辑总能得到全局的信息。

鉴于此观点,如果您认为客户端涉及重要的决策制定,则 客户端-服务器 应用程序可以被视为分布式系统。或者,如果您认为客户很笨,也可以是集中式系统。

面向服务这个术语更多的是关于如何将功能处理能力集成到系统中。在面向服务的系统中,新的能力可能会在运行时通过新的API功能发现,或未改变的API背后的新逻辑能力发现被引入系统。想一想,您可以构建一个最初没有太多内置功能的应用程序,然后它通过发现和整合服务提供者的新功能来扩展其功能。相比之下,传统系统需要在构建时构建,通常是由于涉及人的讨论-设计-文档 activity。面向服务的设计非常适合分布式系统。