细致教程:从安装到实战手把手教你玩懂Nacos
什么是Nacos
Nacos 致力于幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務范式、云原生范式) 的服務基礎設施。
簡單來說,Nacos給我們提供了服務的注冊與發現、配置中心、服務總線等,Nacos一個組件相當于Eureka、Config、Bus三個組件
Nacos安裝
版本選擇
進入 github.com/alibaba/nac… 后選擇相應的版本后下載。
這里我采用的是1.3.1的Windows版本
修改配置
1、打開conf/application.properties文件
將33-41行配置修改為自己的數據庫配置
spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.password=root 復制代碼2、導入SQL
將conf/nacos-mysql.sql的sql導入到上面配置的nacos數據庫中
3、啟動
配置完成后,進入到bin/startup.cmd,雙擊運行
出現這個界面,如果沒有報錯,說明啟動成功
我們訪問Console的地址
用戶名和密碼都是:nacos
登陸成功后即可看到下圖效果
服務提供者
搭建工程
搭建父工程:spring-cloud
我們需要在父工程中管理所有子項目的依賴版本
pom.xml
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.10.RELEASE</version> </parent> <properties><spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version><spring-cloud-gateway.version>2.2.5.RELEASE</spring-cloud-gateway.version><spring-cloud-openfeign.version>2.2.5.RELEASE</spring-cloud-openfeign.version> </properties><dependencyManagement><dependencies><!-- spring cloud alibaba --><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><!-- gateway 服務網關 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-gateway-dependencies</artifactId><version>${spring-cloud-gateway.version}</version><type>pom</type><scope>import</scope></dependency><!-- openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-dependencies</artifactId><version>${spring-cloud-openfeign.version}</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement> 復制代碼搭建provider工程:spring-cloud-alibaba-nacos-discovery-provider
pom.xml 文件加入以下依賴
<parent><artifactId>spring-cloud-alibaba</artifactId><groupId>io.mvvm</groupId><version>1.0-SNAPSHOT</version> </parent> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency> </dependencies> 復制代碼application.yml
spring:application:name: spring-cloud-alibaba-nacos-discovery-providercloud:nacos:discovery:server-addr: 127.0.0.1:8848 server:port: 8888 復制代碼NacosDiscoveryProviderApplication.java
我們這里使用了 @EnableDiscoveryClient注解來開啟服務注冊與發現
package io.mvvm;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController;@SpringBootApplication @EnableDiscoveryClient //開啟服務注冊與發現 public class NacosDiscoveryProviderApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryProviderApplication.class, args);} } 復制代碼測試啟動
啟動后,我們查看Nacos中的服務列表
可以看到,我們的服務已經成功的注冊進 nacos中
服務消費者
搭建工程:spring-cloud-alibaba-nacos-discovery-consumer
pom
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> </dependencies> 復制代碼application.yml
spring:application:name: spring-cloud-alibaba-nacos-discovery-consumercloud:nacos:discovery:server-addr: 127.0.0.1:8848 server:port: 8899 復制代碼NacosDiscoveryConsumerApplication.java
package io.mvvm;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 //開啟服務注冊與發現 @EnableFeignClients // 開啟OpenFeign public class NacosDiscoveryConsumerApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryConsumerApplication.class, args);} } 復制代碼ConsumerClient.java
這里我們調用上面寫的服務提供者的echo接口
@FeignClient中的value填入${spring.application.name}即可,openfeign底層采用了ribbon做負載均衡
package io.mvvm.client;import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable;@FeignClient("spring-cloud-alibaba-nacos-discovery-provider") public interface ConsumerClient {@GetMapping("/echo/{string}")String echo(@PathVariable String string);} 復制代碼ConsumerController.java
package io.mvvm.controller;import io.mvvm.client.ConsumerClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController public class ConsumerController {@Resourceprivate ConsumerClient consumerClient;@GetMapping("/get/{str}")public String echo(@PathVariable("str") String string){return consumerClient.echo(string);}} 復制代碼測試
訪問localhost:8899/get/123
查看打印的數據
配置中心
搭建工程
在父工程下搭建子工程:spring-cloud-alibaba-nacos-config
pom
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 服務注冊 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency> </dependencies> 復制代碼bootstrap.yml
server:port: 9999 spring:application:name: spring-cloud-alibaba-nacos-configprofiles:active: devcloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yaml# 配置中心文件名稱拼接方式 # ${prefix}-${spring.profiles.active}.${file-extension} 復制代碼NacosConfigApplication.java
package io.mvvm;import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@SpringBootApplication @EnableDiscoveryClient //開啟服務注冊與發現 public class NacosConfigApplication {public static void main(String[] args) {SpringApplication.run(NacosConfigApplication.class, args);}@RestController@RefreshScope // 動態刷新配置信息class ConfigController {@Value("${config.version}")private String configVersion;@RequestMapping("/get")public String get() {return configVersion;}} } 復制代碼添加配置
訪問Nacos面板,進入到:配置管理->配置列表->+
其中Data ID一般為${prefix}-${spring.profiles.active}.${file-extension}
簡單理解為:工程名稱 + profile + 文件名稱
例如上圖中所展示:spring-cloud-alibaba-nacos-config-dev.yaml
分為了三部分
第一部分是:spring-cloud-alibaba-nacos-config為工程名稱
第二部分是:dev即開發環境
第三部分是:yaml就是配置格式
注意:配置格式一般根據${spring.cloud.nacos.config.file-extension}決定
注意:后綴的yaml不要簡寫成yml,剛剛測試出錯。
設置完畢后點擊發布即可
測試
啟動工程
訪問url(忽略數據不一樣,這是之前測試的圖)
這里可以不斷的修改nacos中配置的值,然后刷新測試是否可以拿到最新的配置
NAMESPACE & GROUP
在Nacos中有一個命名空間和分組的概念。
其中命名空間幫助我們實現了多租戶的隔離作用
這里有很多種方案
命名空間以不同的環境進行管理,而分組以項目區分管理,
也可以將命名空間以項目作為管理,分組作為不同環境管理
添加命名空間
添加一個新在命名空間
其中ID一般留空即可,Nacos會使用UUID生成
命名空間名:我這里就以不同環境作為隔離,所以添加一個dev
描述:一些描述,避免一覺醒來忘記了
添加配置文件
首先要選擇上方的dev環境,然后點擊加號
這里的Group可以自定義,一般大寫。
其他參考上面寫的配置添加Demo
修改工程配置
- namespace:這里是命名空間的ID,可以在命名空間列表中看到
- group:就是剛剛在添加的時候自定義的,填進去就好了
以上配置表示:在${namespace}命名空間中找到${group}分組中的${prefix}-${spring.profiles.active}.${file-extension}配置文件
測試
啟動測試。
源碼地址:gitee.com/aumu/spring…
原文地址:https://juejin.cn/post/7050702231628152846
如果你覺的本文對你有幫助,麻煩點贊關注支持一下
?
總結
以上是生活随笔為你收集整理的细致教程:从安装到实战手把手教你玩懂Nacos的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天没有写的,唱首歌吧。。
- 下一篇: Qt Quick 3D模块初探