SpringCloudAlibaba專案之Nacos搭建及服務註冊
SpringCloudAlibaba隨筆目錄
二、SpringCloudAlibaba專案之Nacos搭建及服務註冊
三、SpringCloudAlibaba專案之生產者與消費者
四、SpringCloudAlibaba專案之Ribbon負載均衡
五、SpringCloudAlibaba專案之OpenFeign遠端呼叫
六、SpringCloudAlibaba專案之
七、SpringCloudAlibaba專案之
SpringCloud專案之Nacos搭建及服務註冊
1、Nacos簡介
Nacos 是阿里巴巴推出來的一個新開源專案,這是一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺。
Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元資料及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務正規化、雲原生正規化) 的服務基礎設施。
Nacos註冊中心分為server與client,server採用Java編寫,為client提供註冊發現服務與配置服務。而client可以用多語言實現,client與微服務巢狀在一起,nacos提供sdk和openApi,如果沒有sdk也可以根據openApi手動寫服務註冊與發現和配置拉取的邏輯2、Nacos優勢
常見的註冊中心:
Eureka(原生,2.0遇到效能瓶頸,停止維護)
Zookeeper(支援,專業的獨立產品。例如:dubbo)
Consul(原生,GO語言開發)
Nacos
相對於 Spring Cloud Eureka 來說,Nacos 更強大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以與 Spring, Spring Boot, Spring Cloud 整合,並能代替 Spring Cloud Eureka, Spring Cloud Config。
通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實現配置的動態變更。
通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實現服務的註冊與發現。
>> | Nacos | Eureka | Consul | CoreDNS | Zookeeper |
---|---|---|---|---|---|
一致性協議 | CP+AP | AP | CP | / | CP |
健康檢查 | TCP/HTTP/Mysql/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | / | Client Beat |
負載均衡 | 權重/DSL/metadata/CMDB | Ribbon | Fabio | RR | / |
雪崩保護 | 支援 | 支援 | 不支援 | 不支援 | 不支援 |
自動登出例項 | 支援 | 支援 | 不支援 | 不支援 | 支援 |
訪問協議 | HTTP/DNS/UDP | HTTP | HTTP/DNS | DNS | TCP |
監聽支援 | 支援 | 支援 | 支援 | 不支援 | 支援 |
多資料中心 | 支援 | 支援 | 支援 | 不支援 | 不支援 |
跨註冊中心 | 支援 | 不支援 | 支援 | 不支援 | 不支援 |
SpringCloud | 支援 | 支援 | 支援 | 不支援 | 不支援 |
Dubbo整合 | 支援 | 不支援 | 不支援 | 不支援 | 支援 |
K8s整合 | 支援 | 不支援 | 支援 | 支援 | 不支援 |
3、Nacos安裝(註冊中心-服務端,使用SaaS,軟體即服務)
nacos官網:https://nacos.io/zh-cn/index.html
下載地址:https://github.com/alibaba/nacos/releases
Linux:sh startup.sh
Windows:startup.cmd
根據對應版本關係,Nacos選擇版本:2.0.3
演示系統為:windows
Nacos預設為叢集模式(cluster),首先我們修改startup.cmd中模式為單機模式(standalone)
我們執行Nacos看看效果,
訪問:http://127.0.0.1:8848/nacos,預設賬號:nacos,密碼:nacos,可以進入Nacos的服務管理頁面:
4、SpringCloud整合Nacos客戶端(註冊中心-客戶端)
專案目錄:
父工程pom檔案新增:
<modules> <module>service-nacos</module> </modules>
service-nacos專案pom檔案新增依賴:
<!-- springweb 啟動依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- nacos 服務註冊發現(客戶端)依賴 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
application.properties
# 應用名稱(nacos會將應用名稱當作服務名稱)
spring.application.name=service-nacos
# 應用服務 WEB 訪問埠
server.port=8020
# Nacos幫助文件: https://nacos.io/zh-cn/docs/concepts.html
# Nacos認證資訊
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服務發現與註冊配置,其中子屬性 server-addr 指定 Nacos 伺服器主機和埠
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 註冊到 nacos 的指定 namespace,預設為 public
spring.cloud.nacos.discovery.namespace=public
啟動類
@SpringBootApplication @EnableDiscoveryClient //從Spring Cloud Edgware開始,@EnableDiscoveryClient可省略。只需加上相關依賴,並進行相應配置,即可將微服務註冊到服務發現元件上。 public class ServiceNacosApplication { public static void main(String[] args) { SpringApplication.run(ServiceNacosApplication.class, args); } }
訂單服務介面:
/** * 訂單服務 */ @RestController @RequestMapping("/order") public class OrderController { /** * 下單 * @return */ @RequestMapping("/add") public String addOrder(){ System.out.println("下單成功"); return "訂單服務"; } }
nacos註冊成功效果圖: