Nacos註冊中心
服務註冊中心本質上是爲了解耦服務提供者和服務消費者。對於任何一個微服務,原則上都應存在或者支持多個提供者,這是由微服務的分佈式屬性決定的。
1、CAP理論
CAP理論是分佈式架構中的重要理論。
- C:一致性(Consistency) (所有節點在同一時間具有相同的數據)
- A:可用性(Availability) (保證每個請求不管成功或者失敗都有響應)
- P:分隔容忍(Partition tolerance) (系統中任意信息的丟失或失敗不會影響系統的繼續運作)
2、主流注冊中心對比
Nacos | Eureka | Consul | CoreDNS | Zookeeper | |
---|---|---|---|---|---|
一致性協議 | CP+AP | AP | CP | — | CP |
健康檢查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | — | Keep Alive |
負載均衡策略 | 權重/metadata/Selector | Ribbon | Fabio | RoundRobin | — |
雪崩保護 | 有 | 有 | 無 | 無 | 無 |
自動註銷實例 | 支持 | 支持 | 不支持 | 不支持 | 支持 |
訪問協議 | HTTP/DNS | HTTP | HTTP/DNS | DNS | TCP |
監聽支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
多數據中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
跨註冊中心同步 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
Dubbo集成 | 支持 | 不支持 | 不支持 | 不支持 | 支持 |
K8S集成 | 支持 | 不支持 | 支持 | 支持 | 不支持 |
Nacos除了服務的註冊發現之外,還支持動態配置服務。
一句話概括就是Nacos = Spring Cloud註冊中心 + Spring Cloud配置中心。
3、集成到SpringCloud中
創建好SC父工程,添加子模塊
1)添加pom
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2)主啓動類添加註解
@EnableDiscoveryClient
3)添加application.yml配置文件
spring:
application:
name: user
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoints:
web:
exposure:
include: '*'
如果不想使用 Nacos 作爲您的服務註冊與發現,可以將spring.cloud.nacos.discovery
設置爲 false
4)啓動項目
以nacos/nacos,登錄到127.0.0.1:8848/nacos
,可以看到user服務已經註冊成功:
5)服務的 EndPoint
spring-cloud-starter-alibaba-nacos-discovery 在實現的時候提供了一個EndPoint
,EndPoint
的訪問地址爲 http://ip:port/actuator/nacos-discovery。 EndPoint 的信息主要提供了兩類:
1、subscribe: 顯示了當前有哪些服務訂閱者
2、NacosDiscoveryProperties: 顯示了當前服務實例關於 Nacos 的基礎配置
至此,Spring Cloud使用Nacos作爲註冊中心已經初步完成,其他配置根據自身業務修改即可。