美文网首页程序员一个Java码农眼中的技术世界
Spring Cloud 使用 Nacos 做配置中心,读取多个

Spring Cloud 使用 Nacos 做配置中心,读取多个

作者: 邪影oO | 来源:发表于2018-11-21 13:34 被阅读0次

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
    依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

    使用 Spring Cloud Alibaba 可以方便的把 Nacos 作为注册中心,具体配制可以参考官方文档:
    Spring Cloud Alibaba Nacos Config
    Nacos Config Example

    本文主要介绍如何读取多个配制文件,官方文档没有提及

    通过配制 spring.cloud.nacos.config.prefix 可以指定配制文件的前缀,也可以不指定,默认使用 spring.application.name, 下面我们统称为 prefix

    Spring Cloud Alibaba Nacos Config 的官方文档中没有提及如何读取多个配制文件,实际上会默认读取:
    (${sprefix}.properties) 和 (${sprefix}-${profile}.properties) 这两个文件(只指定一个profile的情况下)
    而 spring.profiles.active 是可以指定多个 profile 的,用逗号隔开就行,这样的话实际读取的就是profile数量+1 个配制文件了

    实际中可能有这样的需求: 有A,B两个(更多)服务,它们有些配制是一样的,我们希望把这些一样的配制提取到一个公共配制中,那我们可以这样玩:
    因为是两个不同的服务,所以 spring.application.name 我们希望是不同的名称, 那么这个时候我们就需要指定 spring.cloud.nacos.config.prefix 了,大概是这样子:
    服务A:

    spring.application.name=serviceA
    spring.cloud.nacos.config.prefix=service
    

    服务B:

    spring.application.name=serviceB
    spring.cloud.nacos.config.prefix=service
    

    服务A和服务B使用相同的 spring.cloud.nacos.config.prefix , 这个时候我们需要指定 profile , 大概是这个样子:
    服务A:

    spring.application.name=serviceA
    spring.profiles.active=serviceA
    spring.cloud.nacos.config.prefix=service
    

    服务B:

    spring.application.name=serviceB
    spring.profiles.active=serviceB
    spring.cloud.nacos.config.prefix=service
    

    那么我们的配制文件是这样子:

    • service.properties #全局配制
    • service-serviceA.properties #serviceA的配制
    • service-serviceB.properties #serviceB 的配制

    另一种玩法: 充分利用多个 profile 的特性:

    服务A:

    spring.application.name=serviceA
    spring.profiles.active=serviceA, public
    spring.cloud.nacos.config.prefix=service
    

    服务B:

    spring.application.name=serviceB
    spring.profiles.active=serviceB, public
    spring.cloud.nacos.config.prefix=service
    

    这个时候我们可以不使用 service.properties 文件,而变成:

    • service-public.properties #全局配制
    • service-serviceA.properties #serviceA的配制
    • service-serviceB.properties #serviceB 的配制

    更多玩法: 充分发挥你的想象力吧.

    相关文章

      网友评论

        本文标题:Spring Cloud 使用 Nacos 做配置中心,读取多个

        本文链接:https://www.haomeiwen.com/subject/wntcqqtx.html