2

我的任务包括将 API 网关从 Zuul 迁移到 Spring Cloud Gateway。目前有两个主要版本:1.0.1.RELEASE 和 2.0.0.RC1。第一个版本非常基础,我必须手动实现与速率限制、身份验证等相关的过滤器......

而第二个版本具有我们需要的所有功能,并具有完整的 YML 支持。我们公司有严格的规定,永远不要使用 beta 或 RC,而且我们需要在几周内投入生产网关的第一个版本,所以没有足够的时间等待版本 2 的最终发布。

我的团队负责人特别要求我制作 2 个版本,分别使用 SCG 的 1.0.1 和 2.0.0 版本。您如何实现模块以实现最大的可重用性?我的意思是我希望在两个版本之间切换尽可能简单,并且我想尽可能多地重用逻辑。我想到的第一件事就是创建两个独立的项目。你怎么看?

4

1 回答 1

0

据我了解,您希望从版本轻松过渡1.0.1.RELEASE2.0.0.RC1某些依赖项。

我会按如下方式处理它:

创建 3 个模块(或项目):

  • api
  • bindings-1
  • bindings-2

api模块包含您将定义以访问依赖项函数的 API。

bindings-1bindings-2都实现了 中定义的内容,api但基于版本1.0.1.RELEASE2.0.0.RC2相应的。

您的代码将仅通过api. 不能直接访问依赖项提供的类和方法。我什至不会将依赖项包含为编译时依赖项。然后,您将导入bindings-1bindings-2根据您要使用的版本。

有一个单独的api将需要一定的努力。它会显得过度设计。但是,如果您不这样做,对依赖项的绑定将在您的代码中扩散,并且从一个版本切换到另一个版本将更加困难。

使用专用的api,您将被迫以与api版本无关的方式从依赖项中明确您需要的一切。

我也不会开发bindings-1/bindings-2作为 SCM 分支。这不像你会合并它们,那么为什么要分支呢?

于 2018-05-11T17:34:45.363 回答