【SpringCloud】SpringCloud 和 微服务(七)

这个章节是关于 SpringCloud :高可用的分布式配置中心

 

在我们之前的配置文件中,都是定义的本地的位置,例如说我之前写的这个

 

可以看到他定义了一个本地地址,那假如说我们想启用多个相同的服务又不想冲突,是怎么做到的,像上面做的,改一个ip地址再运行一遍,假如说我们可以用名字来代替ip地址,多个服务在上面叫做同一个名字,到时候也不用改IP地址,这样在做负载均衡的时候是不是就会好很多,这就是高可用的一个体现

 

事实上,如果引用都在本地上,服务之间相互引用,当服务足够多的时候,会出大问题

假如说把配置放到网上呢,那我能想到的好处有三个

1、容易管理,专门建一个仓库管理配置文件肯定比你的那个好看

2、不用重启生效,在网上的配置文件修改你在下一次获取的时候(可手动)就能生效,用不着重启服务

3、就是可以用一些其他人的配置吧,像什么七牛的短信服务啊等等

 

 

好处说了这么多,怎么做呢?

1、git仓库里头写配置文件

2、建一个config-server

3、建一个config-client

4、把这两个东西作为Eureka-Client注入到server里头

 

 

github上新建配置文件仓库  https://github.com/Crecendow/SpringcloudConfig

例如说这个文件 config-client-dev,之后我们会获取到它。

foo = foo version 21
democonfigclient.message=hello spring io

 

 

新建config-server

写主程序

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;


@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {

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

 

写配置文件

spring.application.name=config-server
server.port=8888

spring.cloud.config.server.git.uri=https://github.com/Crecendow/SpringcloudConfig
spring.cloud.config.server.git.searchPaths=respo
spring.cloud.config.label=master
spring.cloud.config.server.git.username=liubiubiu123@qq.com
spring.cloud.config.server.git.password=**************
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/

 

这是个什么东西类,

spring.cloud.config.server.git.uri  仓库地址

spring.cloud.config.server.git.searchPaths  仓库的具体文件夹

spring.cloud.config.label 指定了分支

然后是你登录的用户名和用户密码

最后一个是  你注册到本地的server的地址,这个前面的项目也有

 

 

新建Config-Client

写主程序

@SpringBootApplication
@RestController
@EnableDiscoveryClient
@EnableEurekaClient
public class ConfigClientApplication {

   public static void main(String[] args) {
      SpringApplication.run(ConfigClientApplication.class, args);
   }

   @Value("${foo}")
   String foo;
   @RequestMapping(value = "/hi")
   public String hi(){
      return foo;
   }
}

 

写配置文件

spring.application.name=config-client

spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server



server.port=8881
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/

可以看到这边不再使用uri, 那uri也是配置的一种方式,git远程配置也是配置的一种方式,两种方式都可以达到最后的目的,而uri就没有像我们这个一样的优点了。

 

 

像往常一样建一个Eureka-Server

写主程序

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

 

写配置文件

server:
  port: 8889

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

 

我们可以运行  localhost://8889

 

 

再运行 localhost://8881/hi

 

 

 

 

 

纵观整个项目

我们将配置文件的写入的方式从本地的地址变成了 网上仓库的配置的形式,服务之间相互调用也不再是依靠地址而是依靠 application的名称。除此之外,微服务启动的顺序也有讲究,它们依次是

Eureka Server ---> Config  Server ----> Client Server , 启动顺序错误,是会报错的

Git仓库的命名不要乱写,否则会找不到相关的配置文件

你像这个,

config-client-dev.properties

 

 

就很nice

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值