github - 如何在不同的存储库和不同的管道中同步客户端和后端
问题描述
这不是我遇到的实际问题,但我想知道人们为了解决一个非常常见的场景而采取的不同方法是什么。
您有一个或多个微服务,每个微服务都有模式和客户端用来消耗资源的接口。
我们在不同的存储库中有一个网站,它使用来自这些微服务之一的数据,比如说 REST API。
就像是
微服务(API):我改变接口意味着 JSON 响应不同。前端:我在前端进行更改以适应来自微服务的响应。
如果我们在部署前端之前部署微服务,您将阻止前端站点。
所以你需要确保有的已经部署了新版本,然后再部署微服务。
这是手动方法,但 hos 是以自动方式跟踪的人,例如在没有部署正确版本的前端的情况下无法进行部署。
解决方案
最安全的方法之一是通过在服务级别上使用版本控制来尝试始终向后兼容,这意味着当您需要引入向后不兼容的更改时,具有相同服务的不同版本。让我们假设您有一个微服务,它在这样的休息端点中提供产品
/api/v1/产品
当您进行向后不兼容的更改时,您应该通过保持现有版本仍在工作来引入新版本
/api/v1/products
/api/v2/products
您应该为您的第一个服务端点设置日落并与您的客户进行沟通。在您的情况下,它是前端部分,但在其他情况下,可能会有很多其他客户端(不同的前端服务,不同的后端服务等)
这种方法的缺点是您可能需要支持同一服务的多个版本,这可能很棘手,但这是不可避免的。在许多情况下,与客户的沟通也很棘手。
另一方面,它为您提供了微服务隔离和自由的真正力量。
推荐阅读
- android - 安卓 Cmake 3.18.1 配置
- python - 如何舍入列表中的下一个数字?
- javascript - 禁用在 selenium (Node.js) 中打开的选项卡
- python - 带有 Google 表格的 Python 无法写入 Col B
- python - 为什么不识别 praw 模块?
- javascript - 无法使用设置变量javascript
- java - 在java中将数据存储在字节数组中
- django - 如果过期,PasswordResetConfirmView 的 PASSWORD_RESET_TIMEOUT 消息
- haskell - 源自不应到达的 where 语句的函数距离错误的非详尽模式
- javascript - 在中继分页graphql上滚动时合并以前的数据