springcloud配置中心是指什么?如何实现?

2020-05-02 07:46:45 java常见问答 9652

现在只要一提起微服务分布式,那么可能我们第一反应会想到的就是springcloud了,那么你了解springcloud吗?知道springcloud配置中心是指什么吗?怎么去实现呢?

springcloud配置中心即Spring Cloud Config,该项目是一个解决分布式系统的配置的管理方案。它包含了Client和Server两个部分,server是提供配置文件的存储、以接口的形式把配置文件的内容提供出去,client是通过接口获取数据、并依据此数据初始化自己的应用。

在确认了开发环境之后,我们来添加相关的pom依赖。(JDK:1.8,SpringBoot:2.2.5.RELEASE,SpringCloud:Finchley,版本也不一定要是它们)

org.springframework.cloud
spring-cloud-config
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server

首先是服务端这块,我们首先创建一个注册中心,那么为了进行区分,创建一个springcloud-config-eureka的项目。

application.properties配置信息:

spring.application.name=springcloud-hystrix-eureka-server
server.port=8005
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/

服务端这边的话只需要在SpringBoot启动类添加@EnableEurekaServer注解就可以了,该注解表示此服务是一个服务注册中心服务。

代码示例:

@SpringBootApplication
@EnableEurekaServer
public class ConfigEurekaApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(ConfigEurekaApplication.class, args);
        System.out.println("config 注册中心服务启动...");
    }
}

创建好了注册中心之后,我们再来创建一个配置中心,用于管理配置。

创建一个springcloud-config-server的项目。然后在application.properties配置文件添加如下配置:

spring.application.name=springcloud-config-server
server.port=9005
eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/
spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/
spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo
spring.cloud.config.server.git.username =
spring.cloud.config.server.git.password =

为了进行本地配置文件测试,这里我们新建一个configtest.properties配置文件,添加如下内容:

word=hello world

码这块也不难,在程序主类中,另外添加@EnableConfigServer注解,该注解表示启用config配置中心功能。代码如下:

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(ConfigServerApplication.class, args);
        System.out.println("配置中心服务端启动成功!");
    }
}

完成上述代码之后,我们的配置中心服务端就已经构建完成了。

客户端部分呢,我们新建一个springcloud-config-client的项目,用于做读取配置中心的配置。pom依赖还是和配置中心一样,不过需要新增一个配置,用于指定配置的读取。

创建一个bootstrap.properties文件,并添加如下信息:

spring.cloud.config.name=configtest
spring.cloud.config.profile=pro
spring.cloud.config.label=master
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=springcloud-config-server
eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/
application.properties配置
spring.application.name=springcloud-config-client
server.port=9006

下面程序主类代码,和之前的基本一致。代码如下:

代码示例:

@EnableDiscoveryClient
@SpringBootApplication
public class ConfigClientApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(ConfigClientApplication.class, args);
        System.out.println("配置中心客户端启动成功!");
    }
}

代码示例:

@RestController
public class ClientController
{
    @Value("${word}")
    private String word;
    @RequestMapping("/hello")
    public String index(@RequestParam String name)
    {
        return name + "," + this.word;
    }
}

到此为止,客户端项目也就构建完成了。

本地测试环节,首先我们把springcloud-config-server项目的application.properties配置文件添加spring.profiles.active=native配置,注释掉spring.cloud.config.server.git相关的配置,然后在src/main/resources目录下新建一个configtest.properties文件,然后在里面添加一个配置word=hello world。

添加完成之后,我们再来依次启动springcloud-config-eureka、springcloud-config-server、springcloud-config-client这三个项目。然后来调用客户端的接口,去查看是否能够获取配置信息。在浏览器上输入:

http://localhost:9006//hello?name=Shawnee

界面返回:

Shawnee,hello world

那么以上就是有关springcloud的所有内容了,还想了解更多java架构师相关信息,就记得来关注本站消息哦。