springcloud nacos的賦值均衡和動態(tài)刷新
一 nacos
1.1 nacos作用介紹
nacos是一個分布式的配置中心和注冊發(fā)現(xiàn)中心。
nacos是 dynamic naming configuration service
nacos=config+bus 實現(xiàn)動態(tài)刷新;nacos=consul
1.2 各個注冊中心對比
注冊中心 | CAP模型 | 控制臺管理 | 社區(qū)活躍度 |
Eureaka | Ap | 支持 | 低 |
zk | cp | 不支持 | 中 |
consul | cp | 支持 | 高 |
nacos | AP,和cp | 支持 | 高 |
二 Nacos的安裝
2.1 nacos的安裝搭建
1.本次安裝版本為2.2.3,下載軟件包,進行解壓啟動,輸入命令
E:\nacos-server2.2.3\bin>startup.cmd -m standalone
2.截圖
3.訪問地址
三 服務端的注冊到Nacos
3.1 流程說明以及注意事項
1.客戶端:ms-alibaba-provider8081
2.服務端:ms-alibaba-provider9091
3.注意事項:請求服務端的地址 不能只寫 服務名稱:ms-alibaba-provider9091,否則請求不成功
需要改成如下: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 #消費者將要去訪問的微服務名稱(nacos微服務提供者叫什么你寫什么) service-url: nacos-user-service: http://ms-alibaba-provider9091
3.業(yè)務
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("進來了要。。。。。"); // String serverUrl="http://localhost:9091"; String result = restTemplate.getForObject(serverURL + "/pay/nacos/"+id, String.class); return result+"\t"+" 我是OrderNacosController83調用者。。。。。。"; // return "\t"+" 我是OrderNacosController83調用者。。。。。。"; } }
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負載均衡的能力 public RestTemplate restTemplate() { return new RestTemplate(); } }
4.啟動類
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 服務端
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è)務
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.啟動類
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 調試
1啟動服務
2.調試:http://localhost:8081/consumer/pay/nacos/456
四 nacos模擬負載均衡
4.1 模擬操作
1.在服務9091的基礎上,復制一份服務
2.進行配置:配置端口為:9092,在vm parmater參數(shù)項配置如下:-DServer.port=9092
3.進行啟動
1.查看nacos
2.查看
3.動態(tài)不停刷新訪問
提供服務為9091
提供服務為9092
五 nacos的動態(tài)刷新
5.1 動態(tài)刷新配置邏輯
1.配置規(guī)則:
2.配置對應關系
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服務注冊中心地址 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 # 表示生產環(huán)境 #active: test # 表示測試環(huán)境 #消費者將要去訪問的微服務名稱(nacos微服務提供者叫什么你寫什么) service-url: nacos-user-service: http://ms-alibaba-provider9091
5.2.3 在nacos進行文件配置
1.新建namespace
2.新建文件:注意配置文件后族為yaml,不能寫成yml,否則無法識別
5.2.4 驗證
1.啟動服務
2.驗證:http://localhost:8081/consumer/pay/nacos/456
3.修改配置文件
4.再次查看
到此這篇關于springcloud nacos的賦值均衡和動態(tài)刷新的文章就介紹到這了,更多相關springcloud nacos賦值均衡和動態(tài)刷新內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis 實現(xiàn)一個搜索框對多個字段進行模糊查詢
這篇文章主要介紹了Mybatis 實現(xiàn)一個搜索框對多個字段進行模糊查詢,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01淺談MyBatis-Plus學習之Oracle的主鍵Sequence設置的方法
這篇文章主要介紹了淺談MyBatis-Plus學習之Oracle的主鍵Sequence設置的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08SpringBoot應用War包形式部署到外部Tomcat的方法
這篇文章主要介紹了SpringBoot應用War包形式部署到外部Tomcat的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08Java獲取兩個集合List的交集、補集、并集(相加)和差集(相減)的不同方式
這篇文章主要給大家介紹了關于Java獲取兩個集合List的交集、補集、并集(相加)和差集(相減)的不同方式,在一般操作中對于list集合取交集、差集、并集,比較簡單,需要的朋友可以參考下2023-08-08