SpringCloud-Alibaba之Nacos服務註冊中心
學習SpringCloud的日常Demo
Springcloud-Alibaba元件基本介紹
- 服務限流降級: 預設支援Servlet. Feign. RestTemplate、 Dubbo 和RocketMQ限流降級功能的接入,可以在執行時通過控制檯實時修改限流降級規則,還支援檢視限流降級Metrics監控。
- 服務註冊與發現: 適配Spring Cloud服務註冊與發現標準,預設整合了Ribbon的支援。
- 分散式配置管理: 支援分散式系統中的外部化配置,配置更改時自動重新整理。
- 訊息驅動能力: Spring Cloud Stream為微服務應用構建訊息驅動能力。阿里雲物件儲存:阿里雲提供的海量、安全、低成本、可靠的雲端儲存服務。支援在任何應用、任何時間、任何地點儲存和訪問任意型別的資料。
- 分散式任務排程: 提供秒級、精準、可靠可用的定時(基於Cron表示式)任務排程服務。同時提供分散式的任務執行模型,如網格任務。網格任務支援海量子任務均勻分配到所有Worker (schedulerx- client). 上執行。
- **阿里雲物件儲存:**阿里雲提供的海量、安全、低成本、高可靠的雲端儲存服務。支援在任何應用、任何時間、任何地點儲存和訪問任意型別的資料。
- **阿里雲簡訊服務:**覆蓋全球的簡訊服務,友好、高效、智慧的互聯化通訊能力,幫助企業迅速搭建客戶觸達通道。
啟動Nacos
cloudalibaba-provider-payment9001模組構建
目錄結構
POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.mineok.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mineok.springcloud</groupId>
<artifactId>cloudalibaba-provider-payment9001</artifactId>
<dependencies>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web元件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*' #監控
主啟動類
@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain9001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain9001.class, args);
}
}
Controller
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@GetMapping(value = "/payment/nacos/{id}")
public String getPayment(@PathVariable("id") Integer id) {
return "nacos registry, serverPort: " + serverPort + "\t id" + id;
}
}
注:cloudalibaba-provider-payment9002模組構建步驟同上,不再贅述
測試
9002也註冊進去
cloudalibaba-consumer-nacos-order83模組構建
目錄結構
POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.mineok.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mineok.springcloud</groupId>
<artifactId>cloudalibaba-consumer-nacos-order83</artifactId>
<dependencies>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 引入自己定義的api通用包,可以使用Payment支付Entity -->
<dependency>
<groupId>com.mineok.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!-- SpringBoot整合Web元件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 83
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消費者將要去訪問的微服務名稱(註冊成功進nacos的微服務提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
主啟動類
@EnableDiscoveryClient
@SpringBootApplication
public class OrderNacosMain83 {
public static void main(String[] args) {
SpringApplication.run(OrderNacosMain83.class, args);
}
}
Nacos天生支援負載均衡(整合了Ribbon)
因此採用RestTemplate+Ribbon呼叫Payment9001,9002叢集服務
Config
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
Controller
@RestController
@Slf4j
public class OrderNacosController {
@Resource
private RestTemplate restTemplate;
// 從yml中讀取service-url配置
@Value("${service-url.nacos-user-service}")
private String serverURL;
@GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id) {
return restTemplate.getForObject(serverURL + "/payment/nacos/" + id, String.class);
}
}
測試
註冊中心小結
GitHub:SpringCloud日常Demo
相關文章
- nacos 服務註冊原理
- Springcloud-alibaba學習實踐(2)- nacos&Eureka Server服務註冊實踐SpringGCCloudServer
- Nacos服務註冊與發現
- Spring Cloud Alibaba 使用Nacos作為服務註冊中心SpringCloud
- Nacos服務註冊與發現原理
- lms框架服務註冊中心框架
- Spring Cloud 微服務實戰——nacos 服務註冊中心搭建(附原始碼)SpringCloud微服務原始碼
- 微服務架構 | 3.2 Alibaba Nacos 註冊中心微服務架構
- 微服務註冊中心 Nacos 比 Eureka的優勢微服務
- Spring Cloud Alibaba---服務註冊、發現、管理中心NacosSpringCloud
- Spring Cloud Alibaba Nacos搭建服務註冊發現和配置中心SpringCloud
- Nacos註冊中心+配置管理
- Nacos(二)原始碼分析Nacos服務端註冊示例流程原始碼服務端
- Nacos - 服務端處理註冊請求服務端
- Nacos 的安裝與服務的註冊
- Nacos 服務註冊與發現原理分析
- Nacos服務註冊與發現的原理
- 服務治理平臺-註冊中心
- SpringBoot使用Nacos作為配置中心服務和服務註冊中心Spring Boot
- nacos註冊中心原始碼流程分析原始碼
- Getway實現nacos註冊及服務轉發
- apisix~整合服務發現註冊中心API
- 初探Nacos(二)-- SpringCloud使用Nacos的服務註冊與發現SpringGCCloud
- 【SpringBoot】服務對註冊中心的註冊時機Spring Boot
- 服務治理->搭建服務註冊中心: Spring Cloud EurSpringCloud
- springboot整合nacos註冊中心和配置中心Spring Boot
- silky微服務框架服務註冊中心介紹微服務框架
- 圖解Nacos,註冊中心演變 + Nacos核心功能圖解
- SpringBoot整合Dubbo,註冊中心nacosSpring Boot
- Nacos註冊與配置中心:使用詳講
- Dubbo+Nacos實現服務註冊和發現
- 微服務框架 Go-Micro 整合 Nacos 實戰之服務註冊與發現微服務框架Go
- SpringCloud之服務註冊SpringGCCloud
- SpringCloud進行nacos的服務註冊和服務管理案例SpringGCCloud
- 微服務學習小結-Eureka如何實現註冊中心,以及服務之間的註冊、呼叫微服務
- SpringCloud Alibaba實戰(7:nacos註冊中心管理微服務)SpringGCCloud微服務
- 微服務實戰系列(五)-註冊中心Eureka與nacos區別微服務
- 微服務實戰系列(四)-註冊中心springcloud alibaba nacos微服務SpringGCCloud