【发布时间】:2020-05-20 15:48:42
【问题描述】:
我希望能够回答“您使用微服务吗?”这个问题。我不知道“微服务”的具体含义。基本上我在“什么是微服务?”中读过的所有内容。要么是一堆无用的术语,例如“松散耦合”、“细粒度”和“轻量级”,要么听起来像是管理顾问为企业高管写的,没有真正的内容。
我目前的理解是:
-
monolithic application是将所有内容(数据库除外)都集成到单个代码库中。例如,我编写了一个带有模型、视图和控制器的 ASP.NET MVC 应用程序。它是一个运行在 IIS 之上并连接到 MSSQL 的单一代码库。 -
API-driven application是业务逻辑与应用程序逻辑分离的一个; API 定义/实现业务逻辑,应用程序通过调用 API 与用户交互并执行业务逻辑。例如,我将我的 ASP.NET MVC 应用程序转换为 A) 在一个容器中运行的 API 和 B) 在单独的容器中运行并在客户端执行 API 调用的单页应用程序 (SPA)。
后来,当我开始编写其他应用程序时,每个应用程序都有自己的 SPA 和 API,我决定将身份验证和授权分解到自己的 API 中。后来,我决定将每个 API 共有但与 authn/authz 无关的一些业务逻辑分解到另一个 API 中。所以现在每个 SPA 都与(至少)三个 API 独立通信。 (每个 API 是一个单独的容器,每个 SPA 是一个单独的容器。)
这些是微服务吗?什么是微服务?每个应用程序都有一个 API,在大多数情况下,我可以将它们分解为多个较小的 API。那么这些是单体 API 还是微服务?
【问题讨论】:
标签: architecture microservices api-design