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

时间:2019-03-14 12:59:42

标签: java spring-boot microservices spring-cloud

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

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

也可以对参数值进行版本控制。

3 个答案:

答案 0 :(得分:5)

如果您处于Spring生态系统中,最好的方法是使用 Spring Cloud Config Server 。您也可以轻松轻松地获得在Spring Cloud Config Server guidehere中设置配置服务器的步骤。该文档非常简单。

您甚至可以将 Zookeeper 用作Spring Cloud的集中式配置服务。在此article中对此有更多详细信息。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

现在特定于您的用例,几个微服务共享一些共同的可配置值(我故意将单词从CONSTANT更改为CONFIGURABLE,因为根据定义,常量不是应该被认为是更改),最佳实践在春季使用配置文件如下:

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

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

最佳做法是,您应在各个级别维护配置文件-

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

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

  • application.properties –此属性文件包含所有微服务或多个微服务(您的用例)通用的那些属性,例如帐单和产品服务都需要一些可配置的属性。

属性/配置分辨率:

从微服务(例如计费服务)的角度出发,将首先根据您在服务启动时指定的环境在首先提到的属性文件(billing-test.properties或billing-dev.properties)中搜索任何属性。按属性(see here in detail)

进行配置
spring.profiles.active

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

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

解析