【轉(zhuǎn)載請注明出處】:http://www.reibang.com/p/d96fe9856f75
1. Nacos介紹
1.1 Nacos關(guān)鍵特性
Nacos 致力于發(fā)現(xiàn)邪财、配置和管理微服務(wù)曹阔。Nacos 支持幾乎所有主流類型的“服務(wù)”的發(fā)現(xiàn)械巡、配置和管理:
Nacos 的關(guān)鍵特性包括:
-
服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)測
Nacos 支持基于 DNS 和基于 RPC 的服務(wù)發(fā)現(xiàn)。服務(wù)提供者使用 原生SDK昼汗、OpenAPI、或一個獨立的Agent TODO注冊 Service 后,服務(wù)消費者可以使用DNS TODO 或HTTP&API查找和發(fā)現(xiàn)服務(wù)观谦。Nacos 提供對服務(wù)的實時的健康檢查,阻止向不健康的主機(jī)或服務(wù)實例發(fā)送請求桨菜。Nacos 支持傳輸層 (PING 或 TCP)和應(yīng)用層 (如 HTTP豁状、MySQL、用戶自定義)的健康檢查倒得。 對于復(fù)雜的云環(huán)境和網(wǎng)絡(luò)拓?fù)洵h(huán)境中(如 VPC泻红、邊緣網(wǎng)絡(luò)等)服務(wù)的健康檢查,Nacos 提供了 agent 上報模式和服務(wù)端主動檢測2種健康檢查模式霞掺。Nacos 還提供了統(tǒng)一的健康檢查儀表盤谊路,幫助您根據(jù)健康狀態(tài)管理服務(wù)的可用性及流量。
-
動態(tài)配置服務(wù)
動態(tài)配置服務(wù)可以讓您以中心化菩彬、外部化和動態(tài)化的方式管理所有環(huán)境的應(yīng)用配置和服務(wù)配置缠劝。動態(tài)配置消除了配置變更時重新部署應(yīng)用和服務(wù)的需要,讓配置管理變得更加高效和敏捷骗灶。
配置中心化管理讓實現(xiàn)無狀態(tài)服務(wù)變得更簡單剩彬,讓服務(wù)按需彈性擴(kuò)展變得更容易。
Nacos 提供了一個簡潔易用的UI (控制臺樣例 Demo) 幫助您管理所有的服務(wù)和應(yīng)用的配置矿卑。Nacos 還提供包括配置版本跟蹤喉恋、金絲雀發(fā)布、一鍵回滾配置以及客戶端配置更新狀態(tài)跟蹤在內(nèi)的一系列開箱即用的配置管理特性,幫助您更安全地在生產(chǎn)環(huán)境中管理配置變更和降低配置變更帶來的風(fēng)險轻黑。
-
動態(tài) DNS 服務(wù)
動態(tài) DNS 服務(wù)支持權(quán)重路由糊肤,讓您更容易地實現(xiàn)中間層負(fù)載均衡、更靈活的路由策略氓鄙、流量控制以及數(shù)據(jù)中心內(nèi)網(wǎng)的簡單DNS解析服務(wù)馆揉。動態(tài)DNS服務(wù)還能讓您更容易地實現(xiàn)以 DNS 協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn),以幫助您消除耦合到廠商私有服務(wù)發(fā)現(xiàn) API 上的風(fēng)險抖拦。Nacos 提供了一些簡單的 DNS APIs TODO 幫助您管理服務(wù)的關(guān)聯(lián)域名和可用的 IP:PORT 列表.
服務(wù)及其元數(shù)據(jù)管理
Nacos 能讓您從微服務(wù)平臺建設(shè)的視角管理數(shù)據(jù)中心的所有服務(wù)及元數(shù)據(jù)升酣,包括管理服務(wù)的描述、生命周期态罪、服務(wù)的靜態(tài)依賴分析噩茄、服務(wù)的健康狀態(tài)、服務(wù)的流量管理复颈、路由及安全策略绩聘、服務(wù)的 SLA 以及最首要的 metrics 統(tǒng)計數(shù)據(jù)。
1.2 Nacos 生態(tài)圖
Nacos 無縫支持一些主流的開源生態(tài)耗啦,例如
使用 Nacos 簡化服務(wù)發(fā)現(xiàn)、配置管理帜讲、服務(wù)治理及管理的解決方案衅谷,讓微服務(wù)的發(fā)現(xiàn)、管理似将、共享会喝、組合更加容易。
2. 啟動Nacos服務(wù)
2.1 預(yù)備環(huán)境準(zhǔn)備
Nacos 依賴 Java 環(huán)境來運行玩郊。如果您是從代碼開始構(gòu)建并運行Nacos肢执,還需要為此配置 Maven環(huán)境,請確保是在以下版本環(huán)境中安裝使用:
- 64 bit OS译红,支持 Linux/Unix/Mac/Windows预茄,推薦選用 Linux/Unix/Mac。
- 64 bit JDK 1.8+侦厚;下載 & 配置耻陕。
- Maven 3.2.x+;下載 & 配置刨沦。
2.2 下載源碼或者安裝包
你可以通過源碼和發(fā)行包兩種方式來獲取 Nacos诗宣。
-
從 Github 上下載源碼方式
git clone https://github.com/alibaba/nacos.git cd nacos/ mvn -Prelease-nacos clean install -U ls -al distribution/target/ cd distribution/target/nacos-server-$version/nacos/bin
-
下載編譯后壓縮包方式
您可以從 最新穩(wěn)定版本 下載nacos-server-$version.zip
包。unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin
2.3 啟動服務(wù)器
Linux/Unix/Mac
啟動命令(standalone代表著單機(jī)模式運行想诅,非集群模式):
sh startup.sh -m standalone
Windows
啟動命令:
cmd startup.cmd
或者雙擊startup.cmd運行文件召庞。
2.4 關(guān)閉服務(wù)器
Linux/Unix/Mac
sh shutdown.sh
Windows
cmd shutdown.cmd
或者雙擊shutdown.cmd運行文件岛心。
2.5 控制臺
瀏覽器打開 http://127.0.0.1:8848/nacos
默認(rèn)的用戶名密碼都是nacos
3. 啟動服務(wù)發(fā)現(xiàn)
3.1 service-provider
添加依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
配置文件
server:
port: 8021
spring:
application:
name: service-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
@RestController
class EchoController {
@GetMapping(value = "/echo")
public String echo(String name) {
return "Hello " + name;
}
}
}
啟動服務(wù)即可在Nacos控制臺的服務(wù)列表中看到。
3.2 service-consumer
添加依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
配置文件
server:
port: 8011
spring:
application:
name: service-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
這里使用feign調(diào)用provider
client
@FeignClient(name = "service-provider")
public interface NacosClient {
@GetMapping(value = "/echo")
ResponseEntity<String> echo(String name) ;
}
啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
@RestController
public class TestController {
@Autowired
private NacosClient client;
@GetMapping(value = "/echo")
public ResponseEntity<String> echo(String name) {
return client.echo(name);
}
}
}
啟動Consumer篮灼,然后訪問http://localhost:8011/echo?name=zhangsan即可看到provider的響應(yīng)忘古。
4. 啟動配置管理
將service-consumer項目改成從Nacos拿配置
依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
配置文件
spring:
application:
name: service-consumer
profiles:
active: single
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
prefix: ${spring.application.name}
file-extension: yaml
為了測試方便,在TestController中添加一個配置變量
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
@RestController
@RefreshScope
public class TestController {
@Autowired
private NacosClient client;
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@GetMapping("/get")
public boolean get() {
return useLocalCache;
}
@GetMapping(value = "/echo")
public ResponseEntity<String> echo(String name) {
return client.echo(name);
}
}
}
在 Nacos Spring Cloud 中诅诱,dataId
的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
-
prefix
默認(rèn)為spring.application.name
的值髓堪,也可以通過配置項spring.cloud.nacos.config.prefix
來配置。 -
spring.profile.active
即為當(dāng)前環(huán)境對應(yīng)的 profile
注意:當(dāng)spring.profile.active
為空時娘荡,對應(yīng)的連接符-
也將不存在干旁,dataId 的拼接格式變成${prefix}.${file-extension}
-
file-exetension
為配置內(nèi)容的數(shù)據(jù)格式,可以通過配置項spring.cloud.nacos.config.file-extension
來配置炮沐。目前只支持properties
和yaml
類型争群。
打開Nacos控制臺的配置管理,添加配置項
- Data ID:
service-consumer-single.yaml
- 配置內(nèi)容:
server: port: 8011 spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 useLocalCache: false
重新啟動service-consumer央拖,訪問http://localhost:8011/echo?name=zhangsan可看到provider的響應(yīng),訪問http://localhost:8011/get鹉戚,此時返回內(nèi)容為false鲜戒。
在Nacos控制臺的配置管理更新值useLocalCache: true
,再次訪問http://localhost:8011/get抹凳,此時返回內(nèi)容為true遏餐,說明程序中的useLocalCache值已經(jīng)被動態(tài)更新了。
【轉(zhuǎn)載請注明出處】: http://www.reibang.com/p/d96fe9856f75