我正在做一个系统架构,当我理解集中式,分布式和面向服务的架构/应用程序之间的微妙差异时,我对大学的了解并没有帮助我
如果我采用典型的客户端/服务器架构,客户端将请求发送到服务器,则服务器会将响应发送到客户端。这是一个集中式架构。
处理服务器和客户端的应用程序将是分布式应用程序(因为在不同平台上工作),但仍然是集中式架构。
因此,分布式架构必须涉及分布式应用。
问题:我是对的吗?当涉及面向服务的体系结构/应用程序时,会发生什么?
答案 0 :(得分:4)
分布式:计算任务中涉及的整个过程被分成几部分并分配给多个计算节点。在执行其部分处理时,每个节点都无法访问实现全局优化结果所必需的系统的整个信息。来自多个节点的结果的聚合将通过通常在多个节点上分布的多次计算迭代而朝向全局最优结果收敛。
一个很好的例子是路由器系统,其中每个路由器只有它与邻居交换的信息。在开始时,邻居只知道整个网络系统的一部分。一旦路由器从其邻居获得更多信息,它就将新信息合并到其整个系统的视图中,然后将其视图传播到其邻居。通过这些步骤的多次迭代,每个步骤由各个路由器分别计算,所有路由器将建立在整个网络系统的一致全局视图上。
另一个例子可能是网络订购系统,其中浏览器最初获得常见订单商品的列表。浏览器可以具有跟踪用户观看行为的逻辑,并且决定从服务器获取不同类别的商品列表,但是不将所有用户行为参数发送到服务器。在这个成像的例子中,浏览器知道serer不知道的东西,服务器也知道。因此整个应用程序将是一个分布式系统。除了这部分分布式性质之外,用户身份验证可以在其中一个服务器上完成,库存在另一个服务器上完成,而预留在另一个服务器上。所涉及的每个服务器都不具有特定用户浏览和排序实例的全部信息。但是,所有这些节点的总体工作将满足销售更多商品和满足更多客户的业务需求。
与分布式相反,是集中式,因为计算逻辑总是能够获得整个图像的信息。
鉴于此观点,如果您认为客户端涉及非平凡的决策,则客户端 - 服务器应用程序可以被视为分布式系统。如果您认为客户端是愚蠢的,也可以是集中式系统。
面向服务的术语更多地是关于如何将功能处理能力集成到系统中。在面向服务的系统中,可以通过新的API功能发现或在未更改的API后面的新逻辑功能发现在运行时将新功能引入系统。考虑一下,您可以构建一个最初没有太多内置功能的应用程序,然后通过发现和整合服务提供商的新功能来扩展其功能。相比之下,传统系统需要在构建时构建,通常是涉及人工讨论 - 设计 - 文档活动的结果。面向服务的设计非常适合分布式系统。