在微服务架构中存储常量字段的最佳方式是什么?

What is the best way to store constant field in microservice architecture?

许多服务器使用相同的常量,有必要组织一个集中更改它们。在微服务架构中存储常量参数的最佳方式是什么。

比如我们存储static final int MAX_PEOPLE_COUNT = 100;该领域使用不​​同的微服务。如果我们更改此值,所有微服务都应该看到它。

如果参数值也有版本控制就好了。

存储跨微服务配置的方案有很多。从所有公共数据库开始。我们专门使用 consul by HashiCorp 来存储我们的跨微服务配置。

如果您在 Spring 生态系统中,最好的方法是使用 Spring Cloud Config Server。您也可以很容易地获得在 Spring Cloud Config Server guide and here 中设置配置服务器的步骤。文档非常简单。

您甚至可以将 Zookeeper 用作 Spring 云的集中配置服务。 article.

中的更多详细信息

扩展@Madhu Bhat 的论点,我认为最好的方法也是使用 Spring Cloud Config Server (getting started)

现在针对您的用例,几个微服务共享一些共同的可配置值(我有意将这个词从 CONSTANT 更改为 CONFIGURABLE,因为根据定义常量不是什么东西应该更改),最佳实践 在 spring 中使用配置文件如下:

假设您的生态系统中有 3 个微服务(假设场景)

  • 计费服务
  • 购物车服务
  • 产品服务

作为最佳实践,您应该在各个级别维护配置文件 -

  • 微服务+特定环境配置文件,例如计费-dev.properties 或计费-test.properties 此 属性 文件将包含特定于特定服务的特定环境的属性。计费服务可能具有某些属性,这些属性对于您的 dev 环境和 test 环境都不同。您可以拥有与您的环境一样多的 properties/configuration 个文件。

  • 微服务级别 – 特定微服务的所有环境共有的属性,例如billing.properties

  • application.properties – 此 属性 文件包含所有微服务或多个微服务共有的属性(您的使用- case) 例如计费和产品服务都需要一些可配置的 属性.

Property/configuration分辨率:

从微服务的角度来看(比如计费服务),任何 属性 将首先在第一个提到的 属性 文件(billing-test.properties 或 billing-dev.properties) 根据属性(see here in detail)

配置服务启动时指定的环境
spring.profiles.active

如果在特定环境属性中找不到所需的属性,则要搜索的后备配置文件将是所有环境的第二个文件通用服务配置文件( billing.properties).

如果在上述两个文件中找不到属性,将由application.yml文件

解决