日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

细致教程:从安装到实战手把手教你玩懂Nacos

發(fā)布時(shí)間:2024/3/7 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 细致教程:从安装到实战手把手教你玩懂Nacos 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

什么是Nacos

Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡(jiǎn)單易用的特性集,幫助您快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。

Nacos 幫助您更敏捷和容易地構(gòu)建、交付和管理微服務(wù)平臺(tái)。 Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu) (例如微服務(wù)范式、云原生范式) 的服務(wù)基礎(chǔ)設(shè)施。

簡(jiǎn)單來(lái)說(shuō),Nacos給我們提供了服務(wù)的注冊(cè)與發(fā)現(xiàn)、配置中心、服務(wù)總線等,Nacos一個(gè)組件相當(dāng)于Eureka、Config、Bus三個(gè)組件

Nacos安裝

版本選擇

進(jìn)入 github.com/alibaba/nac… 后選擇相應(yīng)的版本后下載。

這里我采用的是1.3.1的Windows版本

修改配置

1、打開(kāi)conf/application.properties文件

將33-41行配置修改為自己的數(shù)據(jù)庫(kù)配置

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 復(fù)制代碼

2、導(dǎo)入SQL

將conf/nacos-mysql.sql的sql導(dǎo)入到上面配置的nacos數(shù)據(jù)庫(kù)中

3、啟動(dòng)

配置完成后,進(jìn)入到bin/startup.cmd,雙擊運(yùn)行

出現(xiàn)這個(gè)界面,如果沒(méi)有報(bào)錯(cuò),說(shuō)明啟動(dòng)成功

我們?cè)L問(wèn)Console的地址

用戶名和密碼都是:nacos

登陸成功后即可看到下圖效果

服務(wù)提供者

搭建工程

搭建父工程:spring-cloud

我們需要在父工程中管理所有子項(xiàng)目的依賴版本

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 服務(wù)網(wǎng)關(guān) --><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> 復(fù)制代碼

搭建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> 復(fù)制代碼

application.yml

spring:application:name: spring-cloud-alibaba-nacos-discovery-providercloud:nacos:discovery:server-addr: 127.0.0.1:8848 server:port: 8888 復(fù)制代碼

NacosDiscoveryProviderApplication.java

我們這里使用了 @EnableDiscoveryClient注解來(lái)開(kāi)啟服務(wù)注冊(cè)與發(fā)現(xiàn)

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 //開(kāi)啟服務(wù)注冊(cè)與發(fā)現(xiàn) public class NacosDiscoveryProviderApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryProviderApplication.class, args);} } 復(fù)制代碼

測(cè)試啟動(dòng)

啟動(dòng)后,我們查看Nacos中的服務(wù)列表

可以看到,我們的服務(wù)已經(jīng)成功的注冊(cè)進(jìn) nacos中

服務(wù)消費(fèi)者

搭建工程: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> 復(fù)制代碼

application.yml

spring:application:name: spring-cloud-alibaba-nacos-discovery-consumercloud:nacos:discovery:server-addr: 127.0.0.1:8848 server:port: 8899 復(fù)制代碼

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 //開(kāi)啟服務(wù)注冊(cè)與發(fā)現(xiàn) @EnableFeignClients // 開(kāi)啟OpenFeign public class NacosDiscoveryConsumerApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryConsumerApplication.class, args);} } 復(fù)制代碼

ConsumerClient.java

這里我們調(diào)用上面寫(xiě)的服務(wù)提供者的echo接口

@FeignClient中的value填入${spring.application.name}即可,openfeign底層采用了ribbon做負(fù)載均衡

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);} 復(fù)制代碼

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);}} 復(fù)制代碼

測(cè)試

訪問(wèn)localhost:8899/get/123

查看打印的數(shù)據(jù)

配置中心

搭建工程

在父工程下搭建子工程:spring-cloud-alibaba-nacos-config

pom

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 服務(wù)注冊(cè) --><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> 復(fù)制代碼

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} 復(fù)制代碼

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 //開(kāi)啟服務(wù)注冊(cè)與發(fā)現(xiàn) public class NacosConfigApplication {public static void main(String[] args) {SpringApplication.run(NacosConfigApplication.class, args);}@RestController@RefreshScope // 動(dòng)態(tài)刷新配置信息class ConfigController {@Value("${config.version}")private String configVersion;@RequestMapping("/get")public String get() {return configVersion;}} } 復(fù)制代碼

添加配置

訪問(wèn)Nacos面板,進(jìn)入到:配置管理->配置列表->+

其中Data ID一般為${prefix}-${spring.profiles.active}.${file-extension}

簡(jiǎn)單理解為:工程名稱 + profile + 文件名稱

例如上圖中所展示:spring-cloud-alibaba-nacos-config-dev.yaml

分為了三部分

第一部分是:spring-cloud-alibaba-nacos-config為工程名稱

第二部分是:dev即開(kāi)發(fā)環(huán)境

第三部分是:yaml就是配置格式

注意:配置格式一般根據(jù)${spring.cloud.nacos.config.file-extension}決定

注意:后綴的yaml不要簡(jiǎn)寫(xiě)成yml,剛剛測(cè)試出錯(cuò)。

設(shè)置完畢后點(diǎn)擊發(fā)布即可

測(cè)試

啟動(dòng)工程

訪問(wèn)url(忽略數(shù)據(jù)不一樣,這是之前測(cè)試的圖)

這里可以不斷的修改nacos中配置的值,然后刷新測(cè)試是否可以拿到最新的配置

NAMESPACE & GROUP

在Nacos中有一個(gè)命名空間和分組的概念。

其中命名空間幫助我們實(shí)現(xiàn)了多租戶的隔離作用

這里有很多種方案

命名空間以不同的環(huán)境進(jìn)行管理,而分組以項(xiàng)目區(qū)分管理,

也可以將命名空間以項(xiàng)目作為管理,分組作為不同環(huán)境管理

添加命名空間

添加一個(gè)新在命名空間

其中ID一般留空即可,Nacos會(huì)使用UUID生成

命名空間名:我這里就以不同環(huán)境作為隔離,所以添加一個(gè)dev

描述:一些描述,避免一覺(jué)醒來(lái)忘記了

添加配置文件

首先要選擇上方的dev環(huán)境,然后點(diǎn)擊加號(hào)

這里的Group可以自定義,一般大寫(xiě)。

其他參考上面寫(xiě)的配置添加Demo

修改工程配置

  • namespace:這里是命名空間的ID,可以在命名空間列表中看到
  • group:就是剛剛在添加的時(shí)候自定義的,填進(jìn)去就好了
server:port: 9999 spring:application:name: spring-cloud-alibaba-nacos-configprofiles:active: devcloud:nacos:config:server-addr: 127.0.0.1:8848 # nacos addressfile-extension: yamlnamespace: c686d204-8595-4bcb-acad-fad2693bc5aegroup: SPRINGCLOUDALIBABA_GROUP 復(fù)制代碼

以上配置表示:在${namespace}命名空間中找到${group}分組中的${prefix}-${spring.profiles.active}.${file-extension}配置文件

測(cè)試

啟動(dòng)測(cè)試。

源碼地址:gitee.com/aumu/spring…


原文地址:https://juejin.cn/post/7050702231628152846


如果你覺(jué)的本文對(duì)你有幫助,麻煩點(diǎn)贊關(guān)注支持一下


?

總結(jié)

以上是生活随笔為你收集整理的细致教程:从安装到实战手把手教你玩懂Nacos的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。