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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring cloud alibaba nacos

發布時間:2024/3/7 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring cloud alibaba 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:就是剛剛在添加的時候自定義的,填進去就好了
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 復制代碼

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

測試

啟動測試。

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


作者:潘潘同學
鏈接:https://juejin.cn/post/7050702231628152846
?

總結

以上是生活随笔為你收集整理的spring cloud alibaba nacos的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。