干货分享微服务spring-cloud(8.服务治理和配置中心Spring-cloud-zooke)

8.1.    服务治理

Spring-cloud-zookeeper提供的模式包括服务发现和配置,配置动态更新不需要手动请求/refresh端点。该项目通过自动配置并绑定到Spring环境和其他Spring编程模型成语,为Spring Boot应用程序提供Zookeeper集成。通过几个简单的注释,您可以快速启用和配置应用程序中的常见模式,并使用基于Zookeeper的组件构建大型分布式系统。Feign,Turbine,Ribbon和Zuul均与Spring Cloud Zookeeper合作。

创建工程demo-springcloud-zookeeper,添加主要依赖spring-cloud-starter-zookeeper-config

启用服务治理功能,添加主要依赖spring-cloud-starter-zookeeper-discovery启用配置中心功能。顺带说一下添加依赖org.springframework.boot:spring-boot-configuration-processor是为了

启用Type-safe Configuration Properties

新建启动类ZookeeperApplication,@EnableDiscoveryClient启用服务注册和发现,@EnableFeignClients启用feignClients,注意@FeignClient("demo-springcloud-zookeeper")这里的name要与spring.application.name相同,也即服务名。

@Configuration @SpringBootApplication @EnableDiscoveryClient @RestController @EnableFeignClients public class ZookeeperApplication {

     @Value("${spring.application.name}")     private String appName;

     @Autowired     private LoadBalancerClient loadBalancer;

     @Autowired     private DiscoveryClient discovery;

     @Autowired     private Environment env;

     @Autowired     private AppClient appClient;

     @Autowired     private OwnerProperties ownerProperties;

     @RequestMapping("/")     public ServiceInstance lb() {         return this.loadBalancer.choose(this.appName);     }

     @RequestMapping("/hi")     public String hi() {         return "Hello World! from " + this.discovery.getLocalServiceInstance();     }

     @RequestMapping("/self")     public String self() {         return this.appClient.hi();     }

     @RequestMapping("/getFromEnv")     public String getFromEnv(@RequestParam("prop") String prop) {         return new RelaxedPropertyResolver(this.env).getProperty(prop, "Not Found");     }

     @RequestMapping("/getFromArchaius")     public String getFromArchaius(@RequestParam("prop") String prop){         return DynamicPropertyFactory.getInstance().getStringProperty(prop,"null").get();     }

     @RequestMapping("/getFromConfigProperties")     public String getFromConfigProperties(){         return ownerProperties.getFirstName();     }

     @FeignClient("demo-springcloud-zookeeper")     interface AppClient {         @RequestMapping(path = "/hi", method = RequestMethod.GET)         String hi();     }

     @Autowired     RestTemplate rest;

     public String rt() {         return this.rest.getForObject("http://" + this.appName + "/hi", String.class);     }

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

     @Bean     @LoadBalanced     RestTemplate loadBalancedRestTemplate() {         return new RestTemplate();     } }

配置文件application.properties配置spring.cloud.zookeeper.discovery.register开启注册服务,spring.cloud.zookeeper.config.enabled开启配置服务,spring.cloud.zookeeper.connectString

配置连接zk地址

启动zookeeper,启动应用,服务注册成功后位于zookeeper的services节点,get该节点查看数据验证是否成功注册服务

浏览器访问http://localhost:8080/self接口,通过feign客户端appClient访问绑定的自己提供的rest接口服务/hi

8.2.    配置中心

Zookeeper提供了一个分层命名空间,允许客户端存储任意数据,如配置数据。Spring Cloud Zookeeper Config是Config Server和Client的替代方案。在特殊的“引导”阶段,配置被加载到Spring环境中。默认情况下,配置存储在/config命名空间中。根据应用程序的名称和模拟解析属性的Spring Cloud Config顺序的活动配置文件,创建多个PropertySource实例。例如,名为“testApp”的应用程序和“dev”配置文件将创建以下属性源:

config/testApp,dev
config/testApp
config/application,dev
config/application

Properties是config/application命名空间适用于使用zookeeper进行配置的所有应用程序。config/testApp命名空间中的Properties仅适用于名为“testApp”的服务实例。

创建zk节点/config并配置子节点/test并设置值为“点融借款”和子节点person.first-name (person.firstName, person.first_name, PERSON_FIRST_NAME也可以)并设置值为“点融理财”

浏览器访问http://localhost:8080/getFromEnv?prop=test

浏览器访问http://localhost:8080/getFromConfigProperties

原文地址:http://blog.51cto.com/11290909/2071526

时间: 2024-11-08 12:04:43

干货分享微服务spring-cloud(8.服务治理和配置中心Spring-cloud-zooke)的相关文章

Spring Cloud(九):配置中心(消息总线)【Finchley 版】

Spring Cloud(九):配置中心(消息总线)[Finchley 版] 发表于 2018-04-19 |  更新于 2018-05-07 | 我们在 Spring Cloud(七):配置中心(Git.Refresh) 中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用 Webhook 的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案就不太适合了.使用 Spring Cloud Bus 可以完美解决这一问题. Sp

业余草 SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一.准备工作 继续使用上一篇文章的工程,创建一个eureka-server工程,用作服务注册中心. 在其pom.xml文件引入Eureka的起步依赖spring-cloud-starter-netflix- eureka-server,代码如下: 1 <?xml version="1.0

SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一.准备工作 继续使用上一篇文章的工程,创建一个eureka-server工程,用作服务注册中心. 在其pom.xml文件引入Eureka的起步依赖spring-cloud-starter-netflix- eureka-server,代码如下: <?xml version="1.0&q

史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

最新Finchley版本请访问:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f7-config/或者http://blog.csdn.net/forezp/article/details/81041045 上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 继续使用上一篇文章的工程

业余草 SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)

在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server

史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)

在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二是co

企业级 SpringCloud +SpringBoot(六) 分布式配置中心(Spring Cloud Config)

一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二是config client. 二.构建Config Server 创建一个spring-boot项目,取名为config-s

JAVA springboot ssm b2b2c多用户商城系统源码(六) 分布式配置中心(Spring Cloud Config)

一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二是config client. 二.构建Config Server 创建一个spring-boot项目,取名为config-s

SpringCloud学习(六)分布式配置中心(Spring Cloud Config)(Finchley版本)

在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二

Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二是config client,业界也有些知名的同类开源产品,比如百度的disconf. 相比较同类产品,SpringCloudConfig