Apollo公共配置与集群

2019-10-08  本文已影响0人  烂融小菜花

以我们目前的项目来做考量,每个项目存在很多相同的配置,如:数据库连接、mongoDB连接、MQ连接等。

在接入Apollo后,我们应如何配置这些相同的配置项,以达到最少的配置实现最好的效果?

每个开发人员本地开发环境都不一样(假设本地装有数据库、mongoDB、MQ),又应该怎样进行自己的配置而不影响其他人?

下面来讲讲Apollo的公共配置和集群,这两个东西可以解决我们的问题。

一、公共配置

为了方便管理公共配置,我登录Apollo管理界面,新建了一个common项目。

1.创建新的Namespace

创建Namespace需要项目管理员权限,如果发现没有添加Namespace按钮,可以找项目管理员授权。

Apollo-namespace1.png Apollo-namespace2.png

2.添加公共配置项,并发布

在公共的Namespace下添加的是各应用项目统一的配置项。采用文本方式更加简单快速。

Apollo-namespace3.png

3.应用关联以及覆盖公共配置

Apollo-namespace4.png

关联成功后,会在原来的默认application配置下面多出公共配置。

Apollo-namespace5.png

4.更改应用项目使用的Namespace

apollo.bootstrap.namespaces=application,rscenter.common

5.测试

@RestController
@RequestMapping("test")
public class TestController {
    @Value("${testname:}")
    private String testName;

    @GetMapping("testApollo")
    public String testApollo() {
        return "hello: " + testName;
    }
}

启动项目后访问,即可获取到公共配置中testname的值

二、集群

在有些特殊情况下,应用有需求对不同的集群做不同的配置,比如部署在A机房的应用连接的es服务器地址和部署在B机房的应用连接的es服务器地址不一样。

在这种情况下,可以通过在Apollo创建不同的集群来解决。

当然我们也可以用Apollo的集群来解决我们各开发人员在自己本地开发时,需要配置不同的配置的问题。而这些不同的配置大致都是些公共配置,如:数据库连接、MongoDB连接、MQ连接等。所以我们一般只需要进行公共配置集群就可以了。

1. 创建集群

创建集群需要项目管理员权限,如果发现没有添加集群按钮,可以找项目管理员授权。我这里只进行公共配置的集群。所以直接进入common项目首页进行操作。

Apollo-cluster.png

2.更改应用项目所需要的集群

Apollo支持多种集群配置方式,这里只选择了server.properties的配置方式进行讲解。其他方式请看后面

env=DEV
#apollo.meta=http://192.168.10.126:8080
idc=caishihua

访问cas的测试接口进行验证:

注意Apollo中cas项目的testname公共配置不能被覆盖,否则不会读取到common公共配置的caishihua集群配置。或者需要在cas项目中新建集群。

Apollo-cluster-result.png

三、集群的所有配置方式

Apollo支持以下方式集群,按照优先级从高到低分别为:

1. 通过Java System Property
apollo.cluster

可以通过Java的System Property apollo.cluster来指定

在Java程序启动脚本中,可以指定

-Dapollo.cluster=SomeCluster

如果是运行jar文件,需要注意格式是java -Dapollo.cluster=SomeCluster -jar xxx.jar

也可以通过程序指定,如System.setProperty("apollo.cluster", "SomeCluster");

2. 通过Spring Boot的配置文件

可以在Spring Boot的application.propertiesbootstrap.properties中指定apollo.cluster=SomeCluster

3. 通过Java System Property

可以通过Java的System Property idc来指定环境

在Java程序启动脚本中,可以指定

-Didc=xxx

如果是运行jar文件,需要注意格式是java -Didc=xxx -jar xxx.jar
注意key为全小写

4. 通过操作系统的System Environment

还可以通过操作系统的System Environment IDC来指定
注意key为全大写

5. 通过server.properties 配置文件

可以在server.properties配置文件中指定idc=xxx
对于Mac/Linux,文件位置为/opt/settings/server.properties
对于Windows,文件位置为C:\opt\settings\server.properties

四、Cluster Precedence(集群顺序)

  1. 如果apollo.clusteridc同时指定:
    • 我们会首先尝试从apollo.cluster指定的集群加载配置

    • 如果没找到任何配置,会尝试从idc指定的集群加载配置

    • 如果还是没找到,会从默认的集群(default)加载

  2. 如果只指定了apollo.cluster
    • 我们会首先尝试从apollo.cluster指定的集群加载配置

    • 如果没找到,会从默认的集群(default)加载

  3. 如果只指定了idc
    • 我们会首先尝试从idc指定的集群加载配置

    • 如果没找到,会从默认的集群(default)加载

  4. 如果apollo.clusteridc都没有指定:
    • 我们会从默认的集群(default)加载配置
上一篇 下一篇

猜你喜欢

热点阅读