Kevin's blog Kevin's blog
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档

Kevin

你可以迷茫,但不可以虚度
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档
  • 微服务架构筑基础
  • Feign支持BasicAuth验证
  • Feign与OpenFeign
  • Feign请求压缩与超时等配置
  • OAUTH2.0协议
  • 分布式配置中心-apollo

    • 服务配置中心概念及使用场景
    • apollo概念功能简介
    • apollo架构详解
    • apollo分布式部署之Portal
    • apollo分布式部署之环境区分
    • apollo用户权限管理
    • apollo-java客户端基础
    • apollo与SpringCloud服务集成
    • apollo实例配置热更新
    • apollo命名空间与集群
      • 一、namespace简介
      • 二、namespace关键问题说明
      • 三、namespace配置管理
      • 四、Spring Boot应用程序使用namespace公共配置
      • 五、关联namespace
      • 六、使用集群配置
    • apollo灰度发布
    • Apollo如何实时更新配置的
  • alibaba-nacos

  • 微服务
  • 分布式配置中心-apollo
kevin
2022-06-11
目录

apollo命名空间与集群

# 一、namespace简介

我们可以把namespace理解为一个单独抽取出来的配置文件。为什么会出现namespace的概念呢?我们想象一个场景:在一个公司中,难免有一些项目组是使用公总资源的,比如:共用服务注册中心eureka、共用消息队列中间件RocketMQ等等。这就导致一些运维上的问题,例如:

  • 当我们的每个应用都要使用到eureka客户端的时候,每个应用或服务都要在apollo服务配置中心中配置eureka客户端配置。
  • 加入我们的eureka服务端ip换了,所有的应用或服务都要改一遍配置

img

为了解决公有配置的重复配置,变更之后重复修改的问题,apollo为我们提供了一种解决方案:namespace。

  • 我们可以把公共配置单独抽取出来,形成一个namespace,比如:eureka客户端配置
  • 然后所有用到eureka客户端的应用或服务关联namespace:eureka,就可以使用eureka的客户端配置。以后即使eureka服务端ip换了,我们就修改namespace:eureka的配置,就可以影响所有使用到eureka客户端配置的应用和服务。

img

# 二、namespace关键问题说明

  • 所有的spring boot应用默认有一个namespace,就是application(Spring Boot项目都有一个默认配置文件application.yml)
  • namespace配置根据获取权限分为两种
    • private 私有的namespace,私有的namespace只能被创建该namespace的apollo客户端项目关联使用。
    • public 共有的namespace,可以被所有的apollo客户端应用或服务关联使用。
  • 一个项目的配置有两部分组成:自有配置和namespace公有配置
  • namespace的名称必须全局唯一
  • 如果一个项目的自有配置和namespace公有配置的配置项发生冲突,以自有配置的配置项为准,可以覆盖namespace公有配置。(我们可以把关联关系理解为继承关系,孩子集成了父亲的配置属性,但孩子是独立个体有更改自已独立属性的权利,虽然这个属性是继承得来的)

举例说明:公共namespace有两个配置项

k1 = v1
k2 = v2
1
2

然后应用A关联了此公共Namespace,且覆盖了配置项k1,新值为v3。那么在应用A实际运行时配置为:

k1 = v3
k2 = v2
1
2

# 三、namespace配置管理

说了这么多理论,下面我们就来实际创建一个那么space 。例如:在dongbb-cloud-aservice-rbac项目中,我们使用到了eureka客户端,在该项目的管理界面我们创建namespace:yanfa.eureka-client

img

yanfa是dongbb-cloud-aservice-rbac项目所属的部门,为namespace名称设置前缀有利于保障namespace的全局唯一性。在那么space创建完成之后,我们发现dongbb-cloud-aservice-rbac项目的配置管理界面分为上下两部分:

  • 上半部分是自有配置
  • 下半部分是namespace共有配置

我们将eureka客户端的公有配置,加入到namespace:yanfa.eureka-client的配置项里面

img

eureka.instance.instance-id = ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
eureka.instance.prefer-ip-adderss = true
eureka.client.service-url.defaultZone = http://192.168.161.3:9431/eureka/,http://192.168.161.4:9431/eureka/,http://192.168.161.5:9431/eureka/
1
2
3

并且将namespace:yanfa.eureka-client的配置项发布。

img

# 四、Spring Boot应用程序使用namespace公共配置

在spring boot的配置项中,加入apollo.bootstrap.namespaces配置项即可。

img

然后启动应用程序,测试应用程序就可以正确加载namespace:yanfa.eureka-client的配置项,将服务正确的注册到eureka服务注册中心。

# 五、关联namespace

在dongbb-cloud-aservice-rbac项目中我们创建了namespace:yanfa.eureka-client,并使用其配置项。如果dongbb-cloud-aservice-sms项目也想使用namespace:yanfa.eureka-client该怎么办?关联就可以了,不需要新建namespace。 进入到apollo配置中心的dongbb-cloud-aservice-sms项目管理界面

img

将其原有的eureka配置删除,点击“添加namespace“

img

  • 在spring boot的配置项中,加入apollo.bootstrap.namespaces配置项(仿做第四小节)
  • 然后启动应用程序,测试应用程序就可以正确加载namespace:yanfa.eureka-client的配置项,将服务正确的注册到eureka服务注册中心。

# 六、使用集群配置

集群的概念要比namespace简单的多,“集群”就起到一个为应用按部署集群(机房)不同进行配置管理分类的作用。某些大型企业,为了满足异地容灾的需要,通常将应用部署在不同的机房。项目A在B机房有一套配置(IP等环境不同),在C机房有一套配置。为了能区分配置的不同,apollo衍生出了集群的概念。 所以:apollo配置中心要为项目增加集群,一定是项目在不同集群(机房)部署的时候配置不同。如果应用在不同的集群(机房)可以使用相同的配置,就没必要为项目添加集群。

img

点击添加集群,弹出集群创建页面(就是为集群起个名)

img

集群创建完成后,发现我们的DEV环境下出现了两个集群,一个是default集群,一个是我们新建的TEST集群。

img 上图显示:项目dongbb-cloud-aservice-sms在DEV环境下,TEST集群暂时没有任何配置项。(因为集群是新建的)。我们之前配置的配置项信息,都属于default集群。

如果需要删除集群,项目的负责人是没有权限的,需要使用aplollo配置中心的管理员账号:apollo进行删除。 img

Springboot项目如何使用集群配置?

apollo:
    cluster: TEST
1
2

或者

java -jar -Dapollo.cluster=TEST
1
上次更新: 2022/06/13, 18:30:58
apollo实例配置热更新
apollo灰度发布

← apollo实例配置热更新 apollo灰度发布→

最近更新
01
AI是如何学习的
06-06
02
提示词工程实践指南
06-06
03
chatGpt提示原则
06-06
更多文章>
| Copyright © 2022-2025 Kevin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式