zoukankan      html  css  js  c++  java
  • spring-cloud-part 7 : 高可用的服务配置中心(spring

         前面spring - cloud - config  : 从远程 git 仓库中读取文件(config-client-dev.properties), 然后 config - client 从config - service 中读取文件。即一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件;

      在微服务架构中,宗旨就是要实现服务的高可用,配置中心也必须满足这个条件;所以我们将配置中心也注册到注册中心,这样,服务端就可以以调用服务的方式来访问配置中心的配置了。

         当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用。

    案例练习

    一    在上一篇的基础上,加入服务注册和发现组件eureka(创建注册中心 eureka-server

      1. 新建一个spring boot 的 module,命名为 eureka-server;(导包eureka-server ; web )

      2. 在程序的主入口类上加上注解@EnableEurekaServer

      3. 配置文件的配置(端口号:8761;register-with-eureka:false;fetch-register:false;等)

    二    修改config-server(将配置中心注册到注册中心

      1. 将config - server 注册到eureka上去,这里的config-server就是一个eureka-client 了;新加包 spring - cloud - starter - eureka

      2. 在程序的注入口类上加上注解@EnableDiscoveryClient ; 

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

      3. 配置配置文件:---将其注册到eureka服务上去;

      

    三  改造 config - client(将客户端注册到注册中心,并且以服务的形式访问配置中心

      1. 导包  spring - cloud - starter - eureka 

      2. 主类上加上注解  @EnableEurekaClient

    @SpringBootApplication
    @EnableEurekaClient
    @RestController
    public class ConfigClientApplication {
    
    	@Value("${foo}")
    	private String foo;
    
    	@RequestMapping("/hi")
    	public String getHi(){
    		return foo;
    	}
    
    	public static void main(String[] args) {
    		SpringApplication.run(ConfigClientApplication.class, args);
    	}
    
    }

      3. 修改配置文件

    server:
      port: 8881
    
    spring:
      application:
        name: config-client
      cloud:
        config:
          label: master
          profile: dev
          discovery:
            enabled: true                # spring.cloud.discovery.enabled  从配置中心读取文件
            service-id: config-server   #  配置中心的serviceId, 即服务名
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    

      ##  这时发现,在读取配置文件不再写ip地址,而是服务名,这时如果配置服务部署多份,通过负载均衡,从而高可用。

    四  依次启动  eureka-server,config-server;config-client;

      访问 http://localhost:8761    有两个服务注册到eureka上面去了

      访问  http://localhost:8881/hi     页面显示得到  foo version 2

  • 相关阅读:
    微信小程序之遮罩功能实现
    微信小程序之获取点击软键盘搜索按钮(confirm-type="search")之后的值
    python之路——闭包函数
    python之路——装饰器函数
    Python中的单例模式的几种实现方式及优化
    08-函数
    14-定时器
    13-JS中的面向对象
    12-关于DOM操作的相关案例
    17-案例
  • 原文地址:https://www.cnblogs.com/zdj-/p/8288300.html
Copyright © 2011-2022 走看看