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