Spring Cloud 是一系列框架的有序集合。它利用Spring Boot的开发便利性简化了分布式系统的开发,如服务发现、服务管理、配置管理等。
以下是一个简单的Spring Cloud微服务示例,包括服务注册与发现,使用Eureka。
- 创建Eureka服务器(注册中心):
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
application.properties:
spring.application.name=eureka-server
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
- 创建服务提供者(也称为服务):
@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceProviderApplication {
@Value("${server.port}")
private String port;
@GetMapping("/hello")
public String hello() {
return "Hello from port: " + port;
}
public static void main(String[] args) {
SpringApplication.run(ServiceProviderApplication.class, args);
}
}
application.properties:
spring.application.name=service-provider
server.port=${random.int[10000,19999]}
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
- 创建服务消费者(也称为客户端):
@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceConsumerApplication {
@Autowired
private LoadBalancerClient loadBalancer;
@GetMapping("/call")
public String callService() {
return loadBalancer.choose("service-provider").getUri().toString();
}
public static void main(String[] args) {
SpringApplication.run(ServiceConsumerApplication.class, args);
}
}
application.properties:
spring.application.name=service-consumer
server.port=8080
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
以上代码创建了一个Eureka服务注册中心,一个服务提供者和一个服务消费者。服务提供者注册到Eureka并对外提供一个简单的hello服务。服务消费者通过Eureka发现服务提供者,并通过负载均衡器调用服务提供者的hello服务。
这只是一个简单的示例,Spring Cloud还有许多其他功能,如配置管理、断路器、路由和过滤器等。