Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。经过一些简单的注解,开发者就能够快速的在应用中配置一下经常使用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。web
教程spring
注意pom导入包的版本,版本不对没法启动app
在默认设置下,该服务注册中心也会将本身做为客户端来尝试注册它本身,因此咱们须要禁用它的客户端注册行为负载均衡
服务提供方与enreka的链接分布式
@EnableDiscoveryClient @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder( Application.class) .web(true).run(args); } }
spring.application.name=eureka-client server.port=2001 eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
消费方在pom中多了一个依赖spring-boot
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
启动的时候获取RestTemplateui
@EnableDiscoveryClient @SpringBootApplication public class EurekaConsumerApplication { [@Bean](https://my.oschina.net/bean) public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { new SpringApplicationBuilder(EurekaConsumerApplication.class).web(true).run(); } }
使用RestTemplate获取提供服务方的IP:端口,并访问返回结果url
@GetMapping("/consumer") public String dc() { ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client"); String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc"; System.out.println(url); return restTemplate.getForObject(url, String.class); }
建立好后,能够打开服务治理项目,服务提供项目,消费项目,跑一下。能够看出消费者项目是经过服务治理项目获取到服务提供方的地址的。.net
分布式项目与独立部署的几个项目有何区别?rest