1、Nacos概述
- 阿里巴巴開(kāi)發(fā)的一款開(kāi)源框架七婴,構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)祟偷,配置管理和服務(wù)管理平臺(tái)。
- 快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)打厘、服務(wù)配置修肠、服務(wù)元數(shù)據(jù)及流量管理。
2户盯、Nacos官網(wǎng)下載
3嵌施、Nacos安裝啟動(dòng)
- 下載包(本次示例是在windows環(huán)境單機(jī),linux環(huán)境同樣操作)nacos-server-2.1.1.tar.gz莽鸭,解壓吗伤。
- 進(jìn)入bin目錄下,執(zhí)行命令
startup.cmd -m standalone
4蒋川、Nacos服務(wù)發(fā)現(xiàn)(注冊(cè)中心)配置
- 引入依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
<!-- 新版gateway 中沒(méi)有l(wèi)b牲芋,需要手動(dòng)添加依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
注:如果使用負(fù)載,則需要引入loadbalancer依賴
- 配置:
spring:
cloud:
nacos:
discovery:
#如果是集群環(huán)境捺球,server-addr 后面添加所有nacos服務(wù)IP端口缸浦,用逗號(hào)隔開(kāi)
server-addr: localhost:8848
#服務(wù)發(fā)現(xiàn)開(kāi)啟
enabled: true
#命名空間
namespace: public
#組
group: default
heart-beat-interval: 1000 #實(shí)例在客戶端上報(bào)心跳的間隔時(shí)間 單位:毫秒
heart-beat-timeout: 3000 #實(shí)例在不發(fā)送心跳后,健康超時(shí)時(shí)間 單位:毫秒
ip-delete-timeout: 3000 #實(shí)例在不發(fā)送心跳后氮兵,刪除實(shí)例的時(shí)間 單位:毫秒
watch-delay: 3000
metadata:
preserved.heart.beat.interval: 1000
preserved.heart.beat.timeout: 3000
preserved.ip.delete.interval: 3000
#連接nacos的用戶名密碼
username: nacos
password: nacos
- 負(fù)載均衡
spring:
cloud:
gateway:
routes:
- id: r01
order: 1
uri: lb://服務(wù)名
predicates:
- Method=GET,POST
- Path=/v1/*
filters:
- StripPrefix=1
loadbalancer:
ribbon:
##使用gateway官方推薦的負(fù)載均衡器ReactiveLoadBalancerClientFilter裂逐;也可以使用Ribbon的阻塞式LoadBalancerClient負(fù)載均衡器,值設(shè)置為true即可
enabled: false
cache:
#設(shè)置服務(wù)緩沖有效時(shí)間泣栈,快速上下線
ttl: 3s
health-check:
#健康檢查初始延遲值(默認(rèn)0)
initial-delay: 0
#健康檢查的時(shí)間間隔(默認(rèn)25s)
interval: 5s
#健康檢查獲取服務(wù)實(shí)例的時(shí)間間隔(默認(rèn)25s)
refetch-instances-interval: 5s
refetch-instances: true
retry:
max-retries-on-same-service-instance: 0
注: 如果使用負(fù)載卜高,則必須使用lb://服務(wù)名配置。默認(rèn)使用的輪詢策略(RoundBobinLoadBalancer)
如果使用ribbon進(jìn)行負(fù)載南片,則配置如下:
spring:
cloud:
loadbalancer:
ribbon:
enabled: true
ribbon:
ServerListRefreshInterval: 1
- 引入注解
在服務(wù)入口中引入@EnableDiscoveryClient
掺涛, 開(kāi)啟服務(wù)發(fā)現(xiàn)
5、Nacos配置管理(配置中心)配置
- 引入依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
- 配置
spring:
cloud:
nacos:
config:
#nacos服務(wù)端地址疼进,如果是集群薪缆,所有地址添加到后面用逗號(hào)分隔
server-addr: localhost:8848
#配置中心需要的文件后綴
file-extension: yaml
extension-configs:
#配置中心文件設(shè)置
- dataId: gateway.yml
group: DEFAULT_GROUP
#修改配置中心文件生效
refresh: true
#連接nacos的用戶名密碼
username: nacos
password: nacos
- 引入注解
代碼中使用到配置中心的配置時(shí),需要引入@refreshScope
,當(dāng)修改配置中心的配置時(shí)能實(shí)時(shí)生效
注:
1伞广、使用nacos作為配置中心時(shí)必須使用bootstrap.yml 或bootstrap.properties拣帽。因?yàn)閎ootstrap.yml的配置文件比application.yml的配置文件優(yōu)先級(jí)高。
2嚼锄、配置中心的命名空間和組必須和注冊(cè)中心的服務(wù)所在命名空間和組一致减拭。
3、配置中心的文件命名規(guī)則(默認(rèn)):【命名空間id】 【分組】 {spring.application.name}-{spring.profiles.active}.{file-extension}
nacos管理界面:
- 注冊(cè)中心
image.png
image.png
-
配置中心
image.png
image.png