通讯 Microservices/Microfrontend 架构
Communication Microservices/Microfrontend Architecture
在阅读有关微前端的文献时,我总是看到前端是由不同团队开发的微前端组成的。每个微前端至少有一个后端。我看不到的是后端相互通信。那正确吗?他们是否以这种方式分开,以至于他们可以在后端之间没有任何通信的情况下完全生活?
微前端的好处:
- 能够在 teams/domains
之间独立部署 UI 代码
- 每个团队使用不同技术的能力
- 该域的 UI 个难 boundaries/encapsulation 代码
- 在较小的代码库中构建、测试、部署时间更快
最佳微前端架构:
- 假设单个用户面向 webapp:
- “平台”微前端服务于“骨架”页面
- 从用户的角度来看,它是一个具有一个域名的站点(避免 CORS 问题)
- “骨架”页面根据命名空间路由调出团队特定的前端,通常这种基于路径的路由是通过入口或反向代理处理的(例如
/namespace/accounting
转到会计前端)
- 前端服务(微前端)严格负责呈现问题,并经常调用对各种数据拥有所有权的其他后端服务。
- 前端服务包含服务静态 assets/components 和处理 ajax requests/composing UI 特定数据的逻辑。
总结:
您的前端服务通常必须调出后端服务来组合数据以供展示。例如,如果您需要显示用户数据,您可能需要调用某些 UserService 或 AccountService 以获取有关该用户的其他详细信息。我不建议尝试使用特定于前端服务的复制数据构建单独的数据存储。
前端服务通常不应包含业务逻辑;但是,有一个论点认为,对于较小的 apps/earlier 来说,拥有一个同时处理同一域的 UI 和业务逻辑的服务是有意义的。服务太宽泛比太窄通常危害较小。
但是,在微服务架构中,将服务之间的必要依赖性保持在最低限度仍然很重要。一个常见的问题是 运行 陷入“依赖”地狱,你调用服务 A,它需要调用服务 B 等等,这使得架构缓慢而脆弱。前端服务通常会调用仅“一层深”的服务,然后将这些响应组合到单个显示中 data/payload.
最后,明智地选择前端的边界非常重要 service/domain。您不应该有许多前端服务都需要频繁调用相同的后端服务。最好从一个广泛的前端服务开始,随着您对边界的信心越来越强,将其进一步分解。
在阅读有关微前端的文献时,我总是看到前端是由不同团队开发的微前端组成的。每个微前端至少有一个后端。我看不到的是后端相互通信。那正确吗?他们是否以这种方式分开,以至于他们可以在后端之间没有任何通信的情况下完全生活?
微前端的好处:
- 能够在 teams/domains 之间独立部署 UI 代码
- 每个团队使用不同技术的能力
- 该域的 UI 个难 boundaries/encapsulation 代码
- 在较小的代码库中构建、测试、部署时间更快
最佳微前端架构:
- 假设单个用户面向 webapp:
- “平台”微前端服务于“骨架”页面
- 从用户的角度来看,它是一个具有一个域名的站点(避免 CORS 问题)
- “骨架”页面根据命名空间路由调出团队特定的前端,通常这种基于路径的路由是通过入口或反向代理处理的(例如
/namespace/accounting
转到会计前端) - 前端服务(微前端)严格负责呈现问题,并经常调用对各种数据拥有所有权的其他后端服务。
- 前端服务包含服务静态 assets/components 和处理 ajax requests/composing UI 特定数据的逻辑。
总结:
您的前端服务通常必须调出后端服务来组合数据以供展示。例如,如果您需要显示用户数据,您可能需要调用某些 UserService 或 AccountService 以获取有关该用户的其他详细信息。我不建议尝试使用特定于前端服务的复制数据构建单独的数据存储。
前端服务通常不应包含业务逻辑;但是,有一个论点认为,对于较小的 apps/earlier 来说,拥有一个同时处理同一域的 UI 和业务逻辑的服务是有意义的。服务太宽泛比太窄通常危害较小。
但是,在微服务架构中,将服务之间的必要依赖性保持在最低限度仍然很重要。一个常见的问题是 运行 陷入“依赖”地狱,你调用服务 A,它需要调用服务 B 等等,这使得架构缓慢而脆弱。前端服务通常会调用仅“一层深”的服务,然后将这些响应组合到单个显示中 data/payload.
最后,明智地选择前端的边界非常重要 service/domain。您不应该有许多前端服务都需要频繁调用相同的后端服务。最好从一个广泛的前端服务开始,随着您对边界的信心越来越强,将其进一步分解。