springcloud nacos的賦值均衡和動(dòng)態(tài)刷新
一 nacos
1.1 nacos作用介紹
nacos是一個(gè)分布式的配置中心和注冊(cè)發(fā)現(xiàn)中心。
nacos是 dynamic naming configuration service
nacos=config+bus 實(shí)現(xiàn)動(dòng)態(tài)刷新;nacos=consul
1.2 各個(gè)注冊(cè)中心對(duì)比
注冊(cè)中心 | CAP模型 | 控制臺(tái)管理 | 社區(qū)活躍度 |
Eureaka | Ap | 支持 | 低 |
zk | cp | 不支持 | 中 |
consul | cp | 支持 | 高 |
nacos | AP,和cp | 支持 | 高 |
二 Nacos的安裝
2.1 nacos的安裝搭建
1.本次安裝版本為2.2.3,下載軟件包,進(jìn)行解壓?jiǎn)?dòng),輸入命令
E:\nacos-server2.2.3\bin>startup.cmd -m standalone
2.截圖
3.訪問地址
三 服務(wù)端的注冊(cè)到Nacos
3.1 流程說明以及注意事項(xiàng)
1.客戶端:ms-alibaba-provider8081
2.服務(wù)端:ms-alibaba-provider9091
3.注意事項(xiàng):請(qǐng)求服務(wù)端的地址 不能只寫 服務(wù)名稱:ms-alibaba-provider9091,否則請(qǐng)求不成功
需要改成如下:http://ms-alibaba-provider9091
3.2 客戶端配置
1.pom
<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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.jurf.ms</groupId> <artifactId>mscloud-demo-2024</artifactId> <version>1.0-SNAPSHOT</version> </parent> <groupId>com.jurf.ms.alibaba.consumer8081</groupId> <artifactId>ms-alibaba-consumer-8081</artifactId> <packaging>jar</packaging> <name>ms-alibaba-consumer-8081</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- 引入自己定義的api通用包 --> <!-- <dependency>--> <!-- <groupId>com.jurf.ms.api</groupId>--> <!-- <artifactId>ms-api-commons</artifactId>--> <!-- <version>1.0-SNAPSHOT</version>--> <!-- </dependency>--> <!--openfeign--> <!-- <dependency>--> <!-- <groupId>org.springframework.cloud</groupId>--> <!-- <artifactId>spring-cloud-starter-openfeign</artifactId>--> <!-- </dependency>--> <!--nacos-discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--loadbalancer--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> <!--web + actuator--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- <dependency>--> <!-- <groupId>org.springframework.boot</groupId>--> <!-- <artifactId>spring-boot-starter-actuator</artifactId>--> <!-- </dependency>--> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> </project>
2.application配置
server: port: 8081 spring: application: name: ms-alibaba-consumer-8081 cloud: nacos: discovery: server-addr: localhost:8848 #消費(fèi)者將要去訪問的微服務(wù)名稱(nacos微服務(wù)提供者叫什么你寫什么) service-url: nacos-user-service: http://ms-alibaba-provider9091
3.業(yè)務(wù)
a)controller
package com.jurf.ms.alibaba.consumer8081.controller; import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; /** * @auther zzyy * @create 2024-01-01 15:43 */ @RestController public class OrderNacosController { @Resource private RestTemplate restTemplate; @Value("${service-url.nacos-user-service}") private String serverURL; @GetMapping(value = "/consumer/pay/nacos/{id}") public String paymentInfo(@PathVariable("id") Integer id) { System.out.println("進(jìn)來了要。。。。。"); // String serverUrl="http://localhost:9091"; String result = restTemplate.getForObject(serverURL + "/pay/nacos/"+id, String.class); return result+"\t"+" 我是OrderNacosController83調(diào)用者。。。。。。"; // return "\t"+" 我是OrderNacosController83調(diào)用者。。。。。。"; } }
b)config
package com.jurf.ms.alibaba.consumer8081.config; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; /** * @auther zzyy * @create 2024-01-01 15:42 */ @Configuration public class RestTemplateConfig { @Bean @LoadBalanced //賦予RestTemplate負(fù)載均衡的能力 public RestTemplate restTemplate() { return new RestTemplate(); } }
4.啟動(dòng)類
package com.jurf.ms.alibaba.consumer8081; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * Hello world! * */ @EnableDiscoveryClient @SpringBootApplication public class App8081 { public static void main( String[] args ) { SpringApplication.run(App8081.class,args); System.out.println( "Hello World!" ); } }
3.3 服務(wù)端
1.pom
<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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.jurf.ms</groupId> <artifactId>mscloud-demo-2024</artifactId> <version>1.0-SNAPSHOT</version> </parent> <groupId>com.jurf.ms.alibaba.provider9091</groupId> <artifactId>ms-alibaba-provider-9091</artifactId> <packaging>jar</packaging> <name>ms-alibaba-provider-9091</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!--nacos-discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--web + actuator--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> </project>
2.application配置
server: port: 9091 spring: application: name: ms-alibaba-provider9091 cloud: nacos: discovery: server-addr: localhost:8848
3.業(yè)務(wù)
package com.jurf.ms.alibaba.provider9091.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; /** * @auther zzyy * @create 2024-01-01 15:31 */ @RestController public class PayAlibabaController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/pay/nacos/{id}") public String getPayInfo(@PathVariable("id") Integer id) { return "nacos registry, serverPort: "+ serverPort+"\t id"+id; } }
4.啟動(dòng)類
package com.jurf.ms.alibaba.provider9091; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * Hello world! * */ @EnableDiscoveryClient @SpringBootApplication public class Nacos9091App { public static void main( String[] args ) { SpringApplication.run(Nacos9091App.class,args); System.out.println( "Hello World!" ); } }
3.4 調(diào)試
1啟動(dòng)服務(wù)
2.調(diào)試:http://localhost:8081/consumer/pay/nacos/456
四 nacos模擬負(fù)載均衡
4.1 模擬操作
1.在服務(wù)9091的基礎(chǔ)上,復(fù)制一份服務(wù)
2.進(jìn)行配置:配置端口為:9092,在vm parmater參數(shù)項(xiàng)配置如下:-DServer.port=9092
3.進(jìn)行啟動(dòng)
1.查看nacos
2.查看
3.動(dòng)態(tài)不停刷新訪問
提供服務(wù)為9091
提供服務(wù)為9092
五 nacos的動(dòng)態(tài)刷新
5.1 動(dòng)態(tài)刷新配置邏輯
1.配置規(guī)則:
2.配置對(duì)應(yīng)關(guān)系
5.2 配置操作
5.2.1 pom配置文件
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> <!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
5.2.2 修改bootstrap和application配置文件
1.bootstrap配置文件
# nacos配置 spring: application: name: ms-alibaba-consumer-8081 cloud: nacos: discovery: server-addr: localhost:8848 #Nacos服務(wù)注冊(cè)中心地址 config: server-addr: localhost:8848 #Nacos作為配置中心地址 file-extension: yaml #指定yaml格式的配置 # group: DEFAULT_GROUP # namespace: c364e76c-e133-4bc0-951e-205cf732a19f # nacos端配置文件DataId的命名規(guī)則是: # ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 本案例的DataID是:nacos-config-client-dev.yaml nacos-config-client-test.yaml
2.application配置文件
server: port: 8081 app: appid: 94933 spring: profiles: #active: dev # 表示開發(fā)環(huán)境 active: prod # 表示生產(chǎn)環(huán)境 #active: test # 表示測(cè)試環(huán)境 #消費(fèi)者將要去訪問的微服務(wù)名稱(nacos微服務(wù)提供者叫什么你寫什么) service-url: nacos-user-service: http://ms-alibaba-provider9091
5.2.3 在nacos進(jìn)行文件配置
1.新建namespace
2.新建文件:注意配置文件后族為yaml,不能寫成yml,否則無法識(shí)別
5.2.4 驗(yàn)證
1.啟動(dòng)服務(wù)
2.驗(yàn)證:http://localhost:8081/consumer/pay/nacos/456
3.修改配置文件
4.再次查看
到此這篇關(guān)于springcloud nacos的賦值均衡和動(dòng)態(tài)刷新的文章就介紹到這了,更多相關(guān)springcloud nacos賦值均衡和動(dòng)態(tài)刷新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springCloud集成nacos config的過程
- SpringCloud-Nacos服務(wù)注冊(cè)與發(fā)現(xiàn)方式
- SpringCloud連接不上遠(yuǎn)程N(yùn)acos問題排查
- Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的解決方案
- SpringCloud Nacos集群搭建過程詳解
- SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問題解決方法
- springcloud+nacos實(shí)現(xiàn)灰度發(fā)布示例詳解
- springCloud集成nacos啟動(dòng)時(shí)報(bào)錯(cuò)原因排查
- Spring Cloud Nacos配置管理方案
相關(guān)文章
Mybatis 實(shí)現(xiàn)一個(gè)搜索框?qū)Χ鄠€(gè)字段進(jìn)行模糊查詢
這篇文章主要介紹了Mybatis 實(shí)現(xiàn)一個(gè)搜索框?qū)Χ鄠€(gè)字段進(jìn)行模糊查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01Java深入講解instanceof關(guān)鍵字的使用
instanceof 是 Java 的一個(gè)二元操作符,類似于 ==,>,< 等操作符。instanceof 是 Java 的保留關(guān)鍵字。它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類的實(shí)例,返回 boolean 的數(shù)據(jù)類型2022-05-05總結(jié)Java常用到的六個(gè)加密技術(shù)和代碼
大家要記住現(xiàn)代密碼學(xué)最重要的原則柯克霍夫原則:數(shù)據(jù)的安全基于密鑰而不是算法的保密。也就是說即使密碼系統(tǒng)的任何細(xì)節(jié)已為人悉知,只要密匙未洩漏,它也應(yīng)是安全的。這篇文章給大家介紹了6個(gè)常用的加密技術(shù)和代碼。2016-07-07淺談MyBatis-Plus學(xué)習(xí)之Oracle的主鍵Sequence設(shè)置的方法
這篇文章主要介紹了淺談MyBatis-Plus學(xué)習(xí)之Oracle的主鍵Sequence設(shè)置的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08如何使用Spring MVC的消息轉(zhuǎn)換器設(shè)置日期格式
這篇文章主要介紹了如何使用Spring MVC的消息轉(zhuǎn)換器設(shè)置日期格式,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07SpringBoot應(yīng)用War包形式部署到外部Tomcat的方法
這篇文章主要介紹了SpringBoot應(yīng)用War包形式部署到外部Tomcat的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08java項(xiàng)目中的絕對(duì)路徑和相對(duì)路徑用法說明
這篇文章主要介紹了java項(xiàng)目中的絕對(duì)路徑和相對(duì)路徑用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08Java獲取兩個(gè)集合List的交集、補(bǔ)集、并集(相加)和差集(相減)的不同方式
這篇文章主要給大家介紹了關(guān)于Java獲取兩個(gè)集合List的交集、補(bǔ)集、并集(相加)和差集(相減)的不同方式,在一般操作中對(duì)于list集合取交集、差集、并集,比較簡(jiǎn)單,需要的朋友可以參考下2023-08-08