一、概述
SpringCloud是一個基於SpringBoot開發的微服務框架,使用SpringCloud可以快速、簡單、可靠地開發、部署和管理集群的微服務。
本文將從搭建過程、功能模塊和代碼實現三個方面介紹如何使用SpringCloud構建微服務應用。
二、搭建過程
1. 創建SpringBoot項目
# 依賴
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}
2. 配置文件application.yaml
server:
port: 8080
spring:
application:
name: springcloud-demo
cloud:
# eureka註冊中心配置
discovery:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
3. 創建服務提供者
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ProviderApplication {
@Value("${server.port}")
String port;
@RequestMapping("/hello")
public String home(@RequestParam String name) {
return "hello " + name + ",i am from port:" + port;
}
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
4. 創建服務消費者
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {
@Autowired
RestTemplate restTemplate;
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@RequestMapping("/hello")
public String hello(@RequestParam String name) {
return restTemplate.getForObject("http://springcloud-demo/hello?name=" + name, String.class);
}
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
5. 創建Eureka Server
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
三、功能模塊
1. 服務註冊與發現
使用Eureka Server作為註冊中心,將服務提供者註冊到其中,服務消費者通過發現註冊中心中的服務實現負載均衡,從而實現服務間的調用。
2. 服務消費者負載均衡
RestTemplate是Spring提供的用於訪問Rest服務的客戶端,可以通過@LoadBalanced註解實現服務消費者的負載均衡。
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
3. 服務熔斷
使用Hystrix實現服務熔斷,當請求服務失敗達到一定閾值時,自動開啟熔斷保護,防止雪崩效應。
在服務提供者的介面方法上添加@HystrixCommand註解,指定降級方法。
@RestController
public class ProviderController {
@RequestMapping("/hello")
@HystrixCommand(fallbackMethod = "helloFallback")
public String hello(@RequestParam String name) {
return "Hello, " + name + "!";
}
public String helloFallback(String name) {
return "Fallback: Hello, " + name + "!";
}
}
4. 微服務鏈路追蹤
使用SpringCloud的Zipkin和Sleuth實現微服務鏈路追蹤,可以查看每個服務的請求響應時間,以及服務間調用的關係。
四、代碼實現
完整的代碼示例可以查看我的Github倉庫https://github.com/xinliangnote/SpringCloud
原創文章,作者:NIRWC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/361027.html
微信掃一掃
支付寶掃一掃