cloud-配置中心

前言

每个spring-boot程序都依赖于一些特定的第三方数据源,在一个分布式系统中,需要有一个这样的数据源服务器,其他的微服务能够从这个数据源拿到最新的数据。spring cloud中实现这个功能的组件就是spring cloud config server。

spring cloud config server

Spring Cloud配置服务器为外部配置(名称-值对或等效的YAML内容)提供了基于HTTP资源的API。通过使用@EnableConfigServer注释,服务器可以嵌入到Spring引导应用程序中。因此,下面的应用程序是一个配置服务器:

application.properties

@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
  public static void main(String[] args) {
    SpringApplication.run(ConfigServer.class, args);
  }
}

与所有Spring引导应用程序一样,默认情况下它运行在端口8080上,但是您可以通过各种方式将其切换到更传统的端口8888。最简单的方法是使用spring.config.name=configserver(Config Server jar中有一个configserver.yml)启动配置库,这也是设置默认配置库的方法。另一种方法是使用自己的application.properties,如下例所示:

server.port: 8888
spring.cloud.config.server.git.uri: file://${user.home}/config-repo

其中${user.home}/config-repo是一个包含YAML和属性文件的git存储库。

在Windows上,如果文件是带有驱动器前缀的绝对文件,则需要在文件URL中额外添加一个“/”(例如,file:///${user.home}/config-repo)。

环境库

配置服务器的配置数据应该存储在哪里?管理这种行为的策略是为Environment对象服务的EnvironmentRepository。这个Environment是来自Spring Environment的域的浅拷贝(包括propertySources作为主要特性)。环境资源由三个变量参数化:

  • {application},它映射到客户端spring.application.name。
  • {profile},它映射到客户端的spring.profiles.active的客户端(逗号分隔列表)。
  • {label},它是一个服务器端特性,用于标记配置文件的“版本化”集。

存储库实现的行为通常类似于Spring引导应用程序,从等于{application}参数的spring.config.name和spring.profiles.active等于{profiles}加载配置文件参数。概要文件的优先规则与常规Spring引导应用程序中的相同:活动概要文件优先于默认配置文件,并且,如果有多个概要文件,最后一个优先(类似于向Map中添加条目)。

下面的示例客户端应用程序有这样的引导配置:

bootstrap.yml

spring:
  application:
    name: foo
  profiles:
    active: dev,mysql

(与Spring引导应用程序一样,这些属性也可以由环境变量或命令行参数设置)。

如果存储库是基于文件的,则服务器从application.yml创建环境(在所有客户端之间共享)和foo.yml (foo.yml采取优先)。如果YAML文件中有指向Spring概要文件的文档,则应用这些文件的优先级更高(按照列出的概要文件的顺序)。如果存在特定于配置文件的YAML(或属性)文件,也会以高于默认值的优先级应用这些文件。较高的优先级将转换为环境中较早列出的PropertySource。(这些规则同样适用于独立的Spring引导应用程序。)

可以设置spring.cloud.config.server.accept-empty到false,这样如果没有找到应用程序,服务器将返回HTTP 404状态。默认情况下,此标志设置为true。

Git后端

环境存储库的默认实现使用一个Git后端,它对于管理升级和物理环境以及审核更改非常方便。要更改存储库的位置,可以设置spring.cloud.config.server.git。配置服务器中的uri配置属性(例如application.yml中)。如果您将其设置为file:前缀,那么它应该在本地存储库中工作,这样您就可以在不使用服务器的情况下快速而轻松地入门。然而,在这种情况下,服务器直接在本地存储库上操作而不克隆它(如果它不是裸的也没关系,因为配置服务器从不更改“远程”存储库)。要扩展配置服务器并使其高可用性,您需要让该服务器的所有实例指向同一个存储库,这样只有共享文件系统才能工作。即使在这种情况下,最好还是为共享的文件系统存储库使用ssh:协议,这样服务器就可以克隆它并使用本地工作副本作为缓存。

这个存储库实现将HTTP资源的{label}参数映射到一个git标签(提交id、分支名称或标记)。如果git分支或标记名称包含斜杠(/),那么HTTP URL中的标签应该使用特殊字符串(_)指定(以避免与其他URL路径产生歧义)。例如,如果标签是foo/bar,替换斜杠将产生以下标签:foo(_)bar。包含特殊字符串(_)也可以应用于{application}参数。如果使用curl之类的命令行客户机,请注意URL中的括号,应该使用单引号(")将它们从shell中转义。

Git搜索路径中的占位符

Spring Cloud Config Server还支持带有占位符的{application}和{profile}搜索路径(如果需要还支持{label}),如下面的示例所示:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          searchPaths: '{application}'	#注意单引号

上面的清单导致在存储库中搜索同名(名称为{application})目录中的文件(以及顶层)。通配符在带有占位符的搜索路径中也有效(搜索中包括任何匹配的目录)。

推送通知和Spring Cloud Bus

许多源代码库提供商(如Github、Gitlab、Gitea、Gitee、Gogs或Bitbucket)通过webhook通知你库中的更改。您可以通过提供者的用户界面将webhook配置为一个URL和一组您感兴趣的事件。例如,Github使用一个JSON主体,其中包含一个提交列表和一个设置为push的头(X-Github-Event)。如果您在Spring-Cloud添加一个spring-cloud-config-monitor依赖项,并在配置服务器中激活Spring云总线,那么就启用了一个/monitor端点。

参考spring cloud bus

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DHCP配置 4 静态路由 6 浮动静态路由 6 向网络中注入一条默认路由 7 RIP 8 RIP的基本配置 8 被动接口与单播更新 10 RIPv2的基本配置 11 RIPv 2的手动汇总 13 RIPv2认证和触发更新 13 EIGRP配置 17 Eigrp的基本配置 17 eigrp路由汇总 19 eigrp的负载均衡 21 eigrp认证 23 OSPF 26 OSPF 基本配置 26 OSPF广播多路访问 28 OSPF基本认证 29 OSPF基于MD5的认证 30 OSPF基于链路的MD5认证 31 OSPF基于链路的简单口令认证 32 ospf 注入一条默认路由 33 多区域OSPF 35 多区域OSPF基本配置 36 多区域OSPF手动汇总 38 Ospf 末节区域和完全末节区域 40 Ospf NSSA区域 42 Ospf虚链路 44 不连续区域0的虚连接 46 IS-IS 49 Is-is的基本配置 49 多区域集成的IS-IS 50 BGP 52 BGP地址聚合 57 BGP属性控制选路 60 用BGP AS-PATH属性控制选路 63 BGP LOCAL_PREF属性控制选路 66 BGP WEIGHT属性控制选路 69 路由反射器配置 71 BGP联邦配置 74 BGP团体配置 77 路由重分布 81 Rip、OSPF、eigrp之间的路由重分布 81 ISIS 和OSPF 重分布 83 Vlan间路由 86 传统的vlan间路由 86 单臂路由器vlan间路由 88 三层交换实现vlan间路由 90 ACL 91 标准ACL 91 扩展ACL1 92 扩展ACL2 95 命名ACL 97 基于时间的ACL 99 动态ACL 100 自反ACL 102 Nat地址转换 104 静态nat地址转换 104 动态Nat地址转换 105 NAT重载 107 PPP的配置实验 108 PAP验证 113 帧中继配置 115 帧中继静态映射 115 帧中继子接口单点对多点 117 帧中继点到点子接口配置 119 把一台cisco路由器配置为帧中继交换机 122 帧中继上的RIP 124 帧中继上集成IS-IS 126 帧中继上点到点子接口下集成的IS-IS 127 帧中继上的OSPF 129 IPV6 131 IPv6 静态路由 131 IPv6 RIPng 131 OSPFv3 133 IPv6 EIGRP 135 组播 136 PIM Dense 137 PIM Sparse-Dense 140 路由优化 142 分布控制列表控制路由更新 142 策略路由 144 基于报文大小的策略路由 145 基于应用的策略路由 147 网关冗余和负载均衡 148 HSRP 148 VRRP 150 GLBP 151 IOS 153 IOS更新 153 交换机的IOS恢复 154 路由器的密码恢复和ios恢复 154 计算机端口安全 155 交换机的密码恢复 156 清除交换机配置并重启 156 stp 157 STP+VTP 157 Trunk 配置 159 RSTP 160 MST 160 STP 保护 162 链路聚合 163 QOS 164 PQ 165 CQ 165 WFQ 166 CBWFQ 166 LLQ 167 WRED 168 CAR 168 NBAR 168 综合练习1 170 综合练习2 177

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值