eureka server配置_SpringCloud配置中心的使用

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config组件中,分两个角色,一是config server,二是config client。下面来看看生产开发中是怎么使用的。

7aa4ae435da207c9ff7ded42845d8071.png

环境准备

git仓库上传三个配置文件到config-repo,命名分别为:config-client -dev.yml、config-client-prod.yml、config-client-test.yml分别代表开发环境,生产环境,测试环境。(这里多说一嘴:使用过nacos的朋友应该很熟悉,配置文件命名默认是有格式约束的 例  {applicationname}-{profile}.yml   其中applicationname为服务名,profile为环境标识)

fd947487766a152c5c7f2401ffc41c40.png

创建工程

ce40ea75911e021dd5a5461f33092b49.png

父工程pom文件

 <properties>        <spring.cloud.version>Greenwich.RELEASEspring.cloud.version>        <spring.boot.version>2.1.6.RELEASEspring.boot.version>    properties>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloudgroupId>                <artifactId>spring-cloud-dependenciesartifactId>                <version>${spring.cloud.version}version>                <type>pomtype>                <scope>importscope>            dependency>            <dependency>                <groupId>org.springframework.bootgroupId>                <artifactId>spring-boot-dependenciesartifactId>                <version>${spring.boot.version}version>                <type>pomtype>                <scope>importscope>            dependency>        dependencies>    dependencyManagement>    <build>        <plugins>            <plugin>                <groupId>org.springframework.bootgroupId>                <artifactId>spring-boot-maven-pluginartifactId>            plugin>        plugins>    build>

创建服务

1.创建eureka注册中心

    (1)pom文件

 <dependencies>        <dependency>            <groupId>org.springframework.cloudgroupId>            <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>        dependency>    dependencies>

    (2)bootstrap.yml

server:  port: 10086 # 端口spring:  application:    name: eureka-server # 应用名称,会在Eureka中显示eureka:  client:    service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。      defaultZone: http://127.0.0.1:${server.port}/eureka    fetch-registry: false  # 不通过eureka获取注册信息

    (3)启动类

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

2.创建config-server服务

    (1)pom文件

   <dependencies>        <dependency>            <groupId>org.springframework.cloudgroupId>            <artifactId>spring-cloud-config-serverartifactId>        dependency>        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-webartifactId>        dependency>                <dependency>            <groupId>org.springframework.cloudgroupId>            <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>        dependency>    dependencies>

    (2)bootstrap.yml

server:  port: 7001spring:  application:    name: config-server  cloud:    config:      name: config-repo      server:        git:          uri: https://github.com/DikU-16/config-repo.git          username: yourusername          password: yourpassword          searchPaths: config-repoeureka:  client:    service-url:      defaultZone: http://localhost:10086/eureka

    (3)启动类

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

到这一步,我们先不创建config-client服务,测试一下config-server

浏览器发送请求

bbeb69b645ff1e948e1d9447688a6a1e.png

说明可以读取到git仓库的配置文件

  • 可以以{.properties}和{.json}格式访问,例:

7425e149ea52c5ec6d16bdcea7b5e5f8.png

3.创建config-client服务

    (1)pom文件

<dependencies>        <dependency>            <groupId>org.springframework.cloudgroupId>            <artifactId>spring-cloud-config-clientartifactId>        dependency>        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-webartifactId>        dependency>                <dependency>            <groupId>org.springframework.cloudgroupId>            <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>        dependency>    dependencies>

    (2)bootstrap.yml

server:  port: 7002spring:  application:    name: config-client  cloud:    config:      label: master      profile: prod#      uri: http://localhost:7001/   # 如果不通过eureka拉取就用uri      discovery:        enabled: true        service-id: config-servereureka:  client:    service-url:      defaultZone: http://localhost:10086/eureka

如果我们不想注册到注册中心,可以直接使用uri获取(现在我们用的是service-id通过获取注册中心的服务名来获取)

    (3)启动类

public class CliApp {    @Value("${spring.datasource.username}")    private String username;    @Value("${spring.datasource.password}")    private String password;    @GetMapping("/hello")    public String hello() {        return "username: " +username+"------------> password: "+password;    }    public static void main(String[] args) {        SpringApplication.run(CliApp.class,args);    }}

启动服务

配置说明

ed9e5fc4957273d6c6567252bf7ad86f.png

分别启动eureka、config-server、eureka-client服务

2f66d8c953dd0d58f07be4d869b4e274.png

成功注册到eureka

当我们启动eureka-client服务时,可以看到控制台打印的两条重要信息

ConfigServicePropertySourceLocator 类调用了配置中心服务接口地址

5e2625f7efbadaeba4518911ca667656.png如果从配置中心拉取配置文件成功,会输出如下日志

57f42182ff4db2832af44fe5b08cafd1.png

测试结果

496e870a2d9a8c6b0fdbf743a96197f3.png

源码已经上传到github,地址https://github.com/DikU-16/config-repo.git

总结

使用  ConfigServer 作为服务的配置中心需要依赖第三方配置仓库,如 Gitlab、Svn等;并且  ConfigServer  没有可视化的控制台,如果需要动态刷新配置需要依赖其他的中间件,所以一旦涉及配置文件需要修改将是一件非常麻烦的事情。 而市面上如阿里的 Nacos 、携程的 Appllo 等配置中心很好的解决这个问题,像 Nacos 可以持久化配置,并且完整的保留历史的修订版本,能够实现上个版本的恢复操作,非常的友好。 所以现在针对 SpringCloud 的生态中,有些组件是可以替换的,例如:
  1. Nacos(注册中心&配置中心) 对标 Eureka、ConfigServer    

    感兴趣可以阅读  Nacos入门案例

  2. Consul 对标 ConfigServer

如果您觉得本文对你有帮助,欢迎老铁们帮忙点赞、关注、留言、分享你们的支持是我原创最大的动力

92904cd31611def0969f680aecc00f84.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值