Spring Cloud简介
Spring Cloud是一个分布式的整体解决方案。Spring Cloud为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局琐, leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
Spring Boot整合Spring Cloud
打开IDEA,创建一个空工程。
接下面再通过Spring Initializr分别创建三个模块:注册中心、生产者、消费者。
先是我们的第一个模块:eureka注册中心,为其添加一个Eureka Server依赖。
接着是我们的第二个模块:生产者,为其添加Web和Eureka Discovery依赖
再创建最后一个模块:消费者,所需依赖和生产者相同,就不赘述了。
三个模块都创建好了就像上面图片那样。要注意三个模块都是在同级的目录的。
接下来配置每一个模块,首先是注册中心模块:
注册中心相关文件
application.properties
server.port = 8000
spring.application.name = eureka-server
eureka.client.service-url.defaultZone = http://localhost:8000/eureka
EurekaServerApplication.java
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
运行该模块,访问http://localhost:8000,即可访问Eureka的注册中心。
生产者模块相关文件
application.properties
server.port = 8100
spring.application.name = provider
eureka.instance.prefer-ip-address = true
eureka.client.service-url.defaultZone = http://localhost:8000/eureka
ProviderController.java
@RestController
public class ProviderController {
@GetMapping("hello")
public String SayHello() {
return "Hello!";
}
}
消费者模块相关文件
application.properties
server.port = 8200
spring.application.name = consumer
eureka.instance.prefer-ip-address = true
eureka.client.service-url.defaultZone = http://localhost:8000/eureka
ConsumerApplication.java
@SpringBootApplication
@EnableDiscoveryClient // 启用服务发现功能
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@LoadBalanced // 使用负载均衡机制,如果有多个生产者,轮询每个每产者。
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
ConsumerController.java
@RestController
public class ConsumerController {
@Autowired
RestTemplate restTemplate;
@GetMapping("greet")
public String greet(String name) {
// 这里消费者的名字必须用大写
String str = restTemplate.getForObject("http://PROVIDER/hello", String.class);
return str + " " + name;
}
}
最后,把这三个模块都运行起来,访问http://localhost:8000/,即可看到当前注册到注册中心的三个实例
接着再访问http://localhost:8200/greet?name=James,应该就能看到如下的输入了。