什么是Nacos?Nacos注册配置中心介绍
一、什么是Nacos
英文全稱Dynamic Naming and Configuration Service,Na為naming/nameServer即注冊中心,co為configuration即注冊中心,service是指該注冊/配置中心都是以服務為核心。服務在nacos是一等公民
二、Nacos原理
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nacos簡單介紹
Nacos注冊中心分為server與client,server采用Java編寫,為client提供注冊發現服務與配置服務。而client可以用多語言實現,client與微服務嵌套在一起,nacos提供sdk和openApi,如果沒有sdk也可以根據openApi手動寫服務注冊與發現和配置拉取的邏輯
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nacosnacos服務領域模型
Nacos服務領域模型主要分為命名空間、集群、服務。在下圖的分級存儲模型可以看到,在服務級別,保存了健康檢查開關、元數據、路由機制、保護閾值等設置,而集群保存了健康檢查模式、元數據、同步機制等數據,實例保存了該實例的ip、端口、權重、健康檢查狀態、下線狀態、元數據、響應時間。這些數據的作用會在第三章講到
2.1注冊中心原理
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nacos服務注冊原理
服務注冊方法:以Java nacos client v1.0.1 為例子,服務注冊的策略的是每5秒向nacos server發送一次心跳,心跳帶上了服務名,服務ip,服務端口等信息。同時 nacos server也會向client 主動發起健康檢查,支持tcp/http檢查。如果15秒內無心跳且健康檢查失敗則認為實例不健康,如果30秒內健康檢查失敗則剔除實例。
2.2 配置中心原理
三、 Nacos使用方法
3.1創建命名空間
不同的命名空間邏輯上是隔離的,不特殊設置的情況下,服務不會跨命名空間請求,命名空間主要的作用是區分服務使用的范圍,比如開發、測試、生產、灰度可以分別設置四個命名空間來互相隔離。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nacos新建命名空間
如圖所示,在控制臺的 按鈕可以創建新的命名空間,命名空間創建后,會在列表顯示,這個ID后面會用在服務的配置文件中
3.2在服務上配置注冊、配置中心
以springcloud為例,首先用maven導入nacos clinet的依賴:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>0.2.1.RELEASE</version><exclusions><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>0.2.1.RELEASE</version><exclusions><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency>先導入springcloud的alibaba-nacos-config和alibaba-nacos-discovery兩個依賴,這兩個依賴是用于nacos clinet與cloud結合的工具,0.2.x對應springboot 2.x.x ,0.1.x對應springboot 1.x.x。這兩個組件可以和各種版本的nacos-client結合。把其中的nacos-clinet依賴給排除,引入想要引入的nacosclinet版本,如下:
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client --><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>1.0.1</version></dependency>在bootstrap.properties上添加配置中心的配置
spring.cloud.nacos.config.server-addr=nacos.e.189.cn:80 spring.cloud.nacos.config.namespace=命名空間id在application-xxx.properties新增如下配置
spring.cloud.nacos.discovery.server-addr=nacos.e.189.cn:80 spring.cloud.nacos.discovery.namespace=命名空間id如果springboot啟動類沒有@EnableDiscover注解則加上
完成如上更改,即可使用Nacos注冊/配置服務
3.3服務間使用feign調用
演示:
使用Feign、Ribbon均可,在這不做過多介紹
3.4通過配置更改動態刷新參數
普通application參數在配置中心直接配置皆可,如果需要可以動態刷新的配置,需要在相應類上加上@RefreshScope注解,示例如下,當在nacos配置中心更改配置后,方法getId的值也會刷新。
@RefreshScope public class IdEntity {@Value("${id}")private int id;public int getId(){return this.id;} }配置中心參數修改/設置
如下兩張圖:在nacos控制臺的配置管理-配置列表中頂部選擇相應的命名空間,點擊列表右上角的加號新增配置,Data ID 為 項目名-{spring.profiles.active}.properties,Group如果在bootstrap.properties中不指定則填默認的DEFAULT_GROUP,描述寫該配置的描述,配置內容填寫Properties格式或者Yaml格式。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nacosnacos控制臺-配置管理
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nacosnacos控制臺-新建配置
3.5 nacos其他功能使用與介紹
控制臺手動上下線實例
在控制臺的服務管理-服務列表選擇一個服務點擊詳情,在下方的集群列表可以看到有上線/下線按鈕,點擊即可以對該實例執行上線/下線操作,下線后的實例不會被請求
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nacos控制臺手動上下線
配置實例權重
可以通過手動配置權重來控制流量,當一個集群內兩個實例,權重越高,到達該實例的請求比例越多。
權重的初始值是1
配置保護閾值
保護閾值的范圍是0~1
服務的健康比例=服務的健康實例/總實例個數
當服務健康比例<=保護閾值時候,無論實例健不健康都會返回給調用方
當服務健康比例>保護閾值的時候,只會返回健康實例給調用方
在服務管理-服務列表選擇一個服務點擊詳情可以配置
總結
以上是生活随笔為你收集整理的什么是Nacos?Nacos注册配置中心介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员法律考试(7)-民法(4)
- 下一篇: 工业用微型计算机(26)-伪操作(2)