SpringCloudAlibaba隨筆目錄
二、SpringCloudAlibaba項目之Nacos搭建及服務注冊
三、SpringCloudAlibaba項目之生產者與消費者
四、SpringCloudAlibaba項目之Ribbon負載均衡
五、SpringCloudAlibaba項目之OpenFeign遠程調用
六、SpringCloudAlibaba項目之Nacos-config配置中心
七、SpringCloudAlibaba項目之Sentinel流量控制
八、SpringCloudAlibaba項目之Seata分布式事務
九、SpringCloudAlibaba項目之GateWay網關
十、SpringCloudAlibaba項目之SkyWalking鏈路追蹤
SpringCloud項目之Nacos搭建及服務注冊
1、Nacos簡介
Nacos 是阿里巴巴推出來的一個新開源項目,這是一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平台。
Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平台。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務范式、雲原生范式) 的服務基礎設施。

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注冊成功效果圖:

