nacos介紹
1、Nacos簡介
Nacos 是阿里巴巴推出來的一個新開源項目,這是一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。
Nacos 致力于幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務范式、云原生范式) 的服務基礎設施。
Nacos注冊中心分為server與client,server采用Java編寫,為client提供注冊發現服務與配置服務。而client可以用多語言實現,client與微服務嵌套在一起,nacos提供sdk和openApi,如果沒有sdk也可以根據openApi手動寫服務注冊與發現和配置拉取的邏輯
2、Nacos優勢
常見的注冊中心:
Eureka(原生,2.0遇到性能瓶頸,停止維護)
Zookeeper(支持,專業的獨立產品。例如:dubbo)
Consul(原生,GO語言開發)
Nacos
相對于 Spring Cloud Eureka 來說,Nacos 更強大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以與 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。
通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實現配置的動態變更。
通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實現服務的注冊與發現。
Nacos安裝(注冊中心-服務端,使用SaaS,軟件即服務)
為了方便,這里直接使用 docker 安裝
docker run -d --name nacos -p 8848:8848 nacos/nacos-server:2.0.0
搭建nacos服務
在父項目上右擊 > new > 新建 Module…
項目起名為 spring-cloud-alibaba-2021-user
pom.xml 文件內容如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-alibaba-2021</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>spring-cloud-alibaba-2021-user</artifactId><dependencies><!-- springweb 啟動依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos 服務注冊發現(客戶端)依賴 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- nacos-config 配置中心依賴 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--spring-cloud-dependencies 2020.0.0 版本不在默認加載bootstrap.yml 文件,如果需要加載bootstrap 文件需要手動添加依賴--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency></dependencies>
</project>
application.yml 內容如下
server:port: 8089
spring:# 后面的bean會覆蓋前面相同名稱的beanmain:allow-bean-definition-overriding: true
bootstrap.yml 內容如下,bootstrap.yml 文件比 application.yml 先加載,主要用于存放一些不會改變的配置,application.yml 存放一些經常需要改動的配置;
spring:application:name: user-demoprofiles:active: yexindong_activecloud:nacos:discovery:server-addr: chn520.cn:8848 # 服務注冊中心地址namespace: public # 注冊到nacos的名稱空間,默認為publicconfig:prefix: yexindong_nacos_prefixfile-extension: yaml # 指定yaml格式的配置, 必須要放到bootstrao.yml 才會生效,放到application下不會生效server-addr: chn520.cn:8848 #配置中心地址group: DEFAULT_GROUP
父項目的 pom.xml 文件加入modules
<modules><module>spring-cloud-alibaba-2021-user</module></modules>
新建啟動類 UserApp.java
package com.alibaba.cloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableDiscoveryClient
public class UserApp {public static void main(String[] args) {SpringApplication.run(UserApp.class, args);}
}
新建controller層 UserController.java
package com.alibaba.cloud.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope // 不重啟即可刷新 nacos配置
@RequestMapping("/user")
public class UserController {@Value("${cache:default}")private String cache;/*** 獲取注冊中心的配置* @return*/@RequestMapping("/getConfig")public String getConfig(){return "config:" + cache;}
}
此時 項目結構如下
配置nacos
網頁上打開nacos,進入 配置管理 > 配置列表 ,點擊右邊的 +
號
此時會打開新建配置的頁面,
- DataId 輸入:
yexindong_nacos_prefix-yexindong_active.yaml
- 配置格式 選擇:
YAML
- 配置內容 中輸入:
cache: 123456
- 點擊 右下角的
發布
按鈕
發布成功后,就可以在列表中看到剛剛發布的配置
注冊
啟動 UserApp.java 中的main方法,然后在nacos的 服務管理 > 服務列表 中查看,發現服務已經注冊上去了
配置功能
然后訪問 地址: http://localhost:8089/getConfig
,獲取配置成功
修改配置
接下來在nacos中修改配置,將 cache改為 789
然后再次訪問 http://localhost:8089/getConfig
,配置已經更新了