Products
GG网络技术分享 2025-08-16 22:22 4
SpringCloud, 作为一款基于SpringBoot的微服务框架,以其飞迅速、轻巧松、可靠的特点,成为开发、部署和管理微服务集群的利器。本文将详细介绍怎么利用SpringCloud搭建一个微服务应用, 涵盖搭建过程、功能模块和代码实现等方面。
先说说创建一个SpringBoot项目。
# 依赖dependencies
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
接着, 配置文件application.yaml如下所示:
server:
port: spring:
application:
name: springcloud-demo
cloud:
# eureka注册中心配置
discovery:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
创建服务给者,用@EnableDiscoveryClient注解来启用服务找到功能,并用@RestController注解创建一个RESTful API:
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ProviderApplication {
@Value
String port;
@RequestMapping
public String home {
return "hello " + name + ",i am from port:" + port;
}
public static void main {
SpringApplication.run;
}
}
创建服务消费者,用@EnableDiscoveryClient注解,并通过RestTemplate进行服务调用:
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {
@Autowired
RestTemplate restTemplate;
@Bean
public RestTemplate restTemplate {
return new RestTemplate;
}
@RequestMapping
public String hello {
return restTemplate.getForObject;
}
public static void main {
SpringApplication.run;
}
}
创建Eureka Server,用@EnableEurekaServer注解来启用Eureka服务注册中心:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main {
SpringApplication.run;
}
}
用Eureka Server作为注册中心,服务给者注册到其中,服务消费者通过找到注册中心中的服务实现负载均衡,实现服务间的调用。RestTemplate是Spring给的用于访问Rest服务的客户端,通过@LoadBalanced注解实现服务消费者的负载均衡。
@Bean
@LoadBalanced
public RestTemplate restTemplate {
return new RestTemplate;
}
用Hystrix实现服务熔断, 当求服务输了达到一定阈值时自动开启熔断护着,别让雪崩效应。在服务给者的接口方法上添加@HystrixCommand注解,指定降级方法。
@RestController
public class ProviderController {
@RequestMapping
@HystrixCommand
public String hello {
return "Hello, " + name + "!";
}
public String helloFallback {
return "Fallback: Hello, " + name + "!";
}
}
用SpringCloud的Zipkin和Sleuth实现微服务链路追踪, 能查看个个服务的求响应时候,以及服务间调用的关系。完整的代码示例能查看我的Github仓库:https://github.com/xinliangnote/SpringCloud
Demand feedback