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調(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負載均衡的能力
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:88483.業(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 調(diào)試
1啟動服務

2.調(diào)試: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.yaml2.application配置文件
server:
port: 8081
app:
appid: 94933
spring:
profiles:
#active: dev # 表示開發(fā)環(huán)境
active: prod # 表示生產(chǎn)環(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)刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java實現(xiàn)整數(shù)分解質(zhì)因數(shù)的方法示例
這篇文章主要介紹了Java實現(xiàn)整數(shù)分解質(zhì)因數(shù)的方法,結(jié)合實力形式分析了質(zhì)因數(shù)分解的原理與實現(xiàn)方法,涉及java數(shù)值運算相關操作技巧,需要的朋友可以參考下2017-12-12
java實現(xiàn)根據(jù)pdf模板生成文件并插入文字,選項,簽名和公章
這篇文章主要為大家詳細介紹了java如何實現(xiàn)根據(jù)pdf模板生成文件并插入文字,選項,簽名和公章,感興趣的小伙伴可以跟隨小編一起學習一下2024-11-11

