首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分布式系统的严格定义

分布式系统的严格定义
EN

Software Engineering用户
提问于 2018-08-30 14:38:53
回答 2查看 158关注 0票数 1

我正在上一门关于分布式系统的入门课程,在阅读入门教程时,作者讨论了

单个负载均衡器后面的5台Rails服务器都连接到一个数据库,不是分布式系统的一个例子。

原因是:

只有当节点相互通信以协调它们的操作时,系统才是分布式的。

这让我思考了什么是真实世界的例子,它们实际上符合分布式系统的定义。我找到了一个列表这里,并发现电子银行实际上是一个例子,但我似乎不知道为什么。根据我的理解,自动取款机不能与每台机器通信,对吗?他们将与某种集中式服务器进行通信,以通信和协调他们的操作。那么,这又如何成为一个例子呢?

还有谁能给我一个更好的分布式系统的定义?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2018-08-30 18:00:57

当你更正式地使用严格的定义时,你应该系统地观察每个术语背后的确切内容。

在您的例子中,关键是术语系统:您为定义考虑的系统是什么,更确切地说,它的边界是什么。

以下是一些例子:

  • 如果您的系统是一组应用服务器,那么系统实际上并不是分布式的:每个系统节点与不属于系统的外部节点(数据库、负载均衡器)交互,但是节点之间不协调(没有应用服务器与应用服务器通信)。
  • 如果您的系统是后端系统,由数据库服务器、负载均衡器和应用服务器组成,那么它显然是一个分布式系统,因为负载平衡器将请求处理与应用服务器协调,应用服务器与数据库协调。数据库甚至可以用来协调两个应用服务器(例如,通过锁或在数据库中写入的技术数据)。

另一个术语是模棱两可的:“相互交流”。我理解几个节点之间的一些通信。可以作出更严格的解释,但不现实:

  • 这是否意味着所有节点都必须与所有其他节点通信?许多复杂的分布式系统使用排队中介来避免双向链路的指数增长,并且将被任意从该定义中删除。
  • 这是否意味着双向沟通?那么,这取决于通信级别,因为任何TCP/IP交换实际上都是双向的,因为ACK的存在。
票数 1
EN

Software Engineering用户

发布于 2018-08-30 14:54:45

像这样的计算机科学术语每隔一天重新定义一次。你最好问:“人们对”标准“系统之上的分布式系统有什么期望?”

他们期望的是没有一个人能够摧毁这个系统。“谁能摧毁一件东西,谁就能控制一件事。”

在标准负载平衡web场的情况下,通常由一个人控制所有的部件。即使我们在技术上尽可能地分割所有的东西,仍然有一个人拥有DNS记录。

理想情况下,分布式系统允许用户信任其继续存在,可能允许他们运行系统,即使其他所有人都停止运行。

显然,一旦我们有了理想的分布式系统的概念,我们就可以开始将其他事物称为“分布式”,即使它们没有完全实现理想。

如果我将我的服务扩展到两个物理位置,那么如果我的服务继续运行,那么对我来说,它是“分布式的”。我不在乎我决定不经营这项服务。

但对我的用户来说,这不是,他们依赖于一个人,我,继续运行这项服务。如果我“下去”,他们就被困住了。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/377706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档