Nacos
? ? ? ? Nacos是阿里巴巴開源的一個服務發現,配置管理和服務管理平臺。只要用于分布式系統中的微服務注冊,發現和配置管理,nacos是一個注冊中心的組件
官方倉庫:https://nacos.io/
Nacos的下載
Releases · alibaba/nacos
在官網中下載壓縮包到本地
windows下載
把壓縮包解壓到本地,將startup.cmd文件中的配置改為單機模式
將MOOE設置為standalone
?
打開startup.cmd,界面為這樣時,啟動成功
?訪問 http://127.0.0.1:8848/nacos
?
Linux下載
直接將你在官網上下載好的壓縮包拖入到Xshell中,加載完畢后進行解壓
通過這個命令進行解壓
unzip nacos-server-2.2.3.zip
解壓后輸入這個命令開啟Nacos單機模式
bash startup.sh -m standalone
?進入nacos文件的bin路徑中,執行命令,開啟Nacos,出現這個界面,代表Nacos的單機模式啟動成功
訪問自己的IP+端口號/nacos 進行訪問
?
Nacos的使用
Nacos和Eureka的區別就是,Eureka需要自己搭建一個服務,Nacos不用自己搭建服務,組件已經準備好了,只需要啟動就行了
將Nacos引入自己的項目,首先引入Nacos的依賴
<properties><spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version></properties><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency>
?注意:再父工程的pom文件中的<dependencyManagement>中引入Spring Cloud Alibaba的依賴
再分別再子項目中引入依賴
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
再引入Loadbalancer依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency>
修改自己的配置文件
將兩個子系統同時啟動
觀察Nacos,發現兩個服務都已經注冊再Nacos上
?
啟動多個服務,測試負載均衡
?
我們可以多次的訪問order-service中的接口,觀察負載均衡?
?
可以發現這三個實例訪問分配的幾乎差不多
當我們發現其中有一個節點上的性能很差的時候,我們可以對該節點進行下線
下線之后,再次請求節點,發現沒有服務進行請求了
?
配置權重
將請求均勻分配到多個服務器上,從而避免單個服務器過載
注:由于SpringCloudLoadBalancer具有自帶的負載均衡 ,所以不支持Nacos的負載均衡策略,所以需要我們自己開啟Nacos的負載均衡策略
?
同集群優先訪問
?
?給實例配置集群名稱
?
Nacos健康檢查
?
Nacos服務實例類型
臨時實例:如果實例宕機超過一定的時間,就會自動的將實例刪除
非臨時實例:就算是實例宕機,也不會從服務列表中刪除
Nacos環境隔離
?創建好namespace,就可以對文件配置
Nacos配置中??
由于多人開發時候,配置文件可能需要經常修改,使用同一個配置文件容易沖突,配置中?就是對這些配置項進?統?管理.通過配置中?,可以集中查看,修改和刪除配置,?需再逐個 修改配置?件.提?效率的同時,也降低了出錯的?險
需要引入Nacos Config依賴
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- SpringCloud 2020.*之后版本需要引?bootstrap-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>
進行配置?
?
訪問這個接口?
@RequestMapping("/config")
@RefreshScope
@RestController
public class NacosController {@Value("${nacos.test.num}")private Integer num;@RequestMapping("/get")public Integer get(){return num;}
}
?
?
Data Id?
?Data Id的完整格式
${prefix}-${spring.profiles.active}.${file-extension}
文件的優先級:product-service-dev.properties> product-service.properties>product service?
Nacos與Eureka的區別‘
Nacos除了服務發現和注冊之外,還提供了配置中?,流量管理和DNS服務等功能
Eureka遵循AP原則
Nacos根據配置識別CP或者AP模式.如果注冊Nacos的Client的節點是臨時節點,那么Nacos對這個 Client節點的效果就是AP,反之是CP.AP和CP可以同時混合存在。
Eureka:基于拉模式.EurekaClient會定期從Server拉取服務信息,有緩存,默認每30秒拉取?次. Nacos:基于推送模式.服務列表有變化時實時推送給訂閱者,服務端和客?端保持?跳連接
希望能對大家有所幫助!!!!