干货分享微服务spring-cloud(8.服务治理和配置中心Spring-cloud-zooke)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货分享微服务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
以上是关于干货分享微服务spring-cloud(8.服务治理和配置中心Spring-cloud-zooke)的主要内容,如果未能解决你的问题,请参考以下文章
干货分享微服务spring-cloud(6.Api网关服务zuul)
干货分享微服务spring-cloud(4.负载均衡ribbon与熔断器hystrix)
干货分享微服务spring-cloud(7.配置中心spring-cloud-config)