分布式系统是使用微服务架构构建的,还是非分布式的单体架构?

问题描述

我们可以说 distributed system 建立在微服务架构上,非分布式系统建立在单体架构上。我认为这些条款如下,请纠正我。

  1. 分布式系统:系统由多个组件(服务)通过消息或 API 调用相互通信。
  2. 非分布式系统:构建的系统在一个地方包含了所有需要的东西。
  3. 微服务架构:我们将应用程序结构化为多个服务的方式。
  4. 单体架构:我们将应用程序构建为一个整体的方式——所有内容都包含在一个可执行文件中。

我也很好奇我们可以使用单体架构来构建分布式系统吗?

解决方法

正如@inquistive 在他的评论中所说,如果你把它移到 softwareengineering.stackexchange.com 你会得到更好的答案,但会有不同的意见。由于分布式单体的多种定义,

但我会试着专门回答你的问题,can we build a distributed system using monolithic architecture?

分布式系统是一种数据和事务处理在通过网络连接的一台或多台计算机之间划分的系统,每台计算机在系统中扮演特定的角色。因此,这与系统如何通信无关,也不限于消息传递或 API 调用。

那么考虑到上面的定义,为什么不能有分布式单体应用?

Monolith 并不意味着它不能被分发。 假设您有一个公司的多个应用程序(单体),其中一个执行所有与仓库相关的工作,另一个应用程序运行帐户活动,另一个执行与运输等相关的所有功能。因此,在下订单时,所有这些应用程序都必须在说话用于实现该功能。 (也许,这个例子至少可能会让那些正在考虑微服务并相信我这些只是微服务角度的有界上下文的人感到困惑)

现在,看看微服务和单体架构。你能在分布式系统方面比较它们吗?

还有一件事,没有称为单体架构的架构模式。这是人们为了比较微服务的优势而提出的问题,而且大多数人都在关注规模。