springCloud/Alibaba常用中間件之Nacos服務注冊與發現

文章目錄

  • SpringCloud Alibaba:
  • 依賴版本補充
  • 六、Nacos:服務注冊與發現
    • 1、下載安裝Nacos
    • 2、服務注冊
      • 1. 導入依賴(這里以服務提供者為例)
      • 2. 修改配置文件和主啟動類
      • 3. 創建業務類
      • 4. 測試
    • 3.服務映射
      • 1. 導入依賴
      • 2. 修改配置文件和主啟動類
      • 3. 創建業務類和RestTemplate配置類用來提供負載均衡
      • 4. 測試(使用idea中自帶的虛擬端口映射)
    • 4. 配置中心
      • 1. 導入配置
      • 2. nacos創建命名空間
      • 3. 修改配置文件--主啟動類
      • 4. 創建業務類


SpringCloud Alibaba:

官方學習文檔(中文): https://spring-cloud-alibaba-group.github.io/github-pages/2022/zh-cn/2022.0.0.0-RC2.html
微服務的中間件介紹與使用
微服務架構體系圖:
在這里插入圖片描述

依賴版本補充

下面所有代碼中的依賴版本如下:

<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><hutool.version>5.8.22</hutool.version><lombok.version>1.18.26</lombok.version><druid.version>1.1.20</druid.version><mybatis.springboot.version>3.0.2</mybatis.springboot.version><mysql.version>8.0.11</mysql.version><swagger3.version>2.2.0</swagger3.version><mapper.version>4.2.3</mapper.version><fastjson2.version>2.0.40</fastjson2.version><persistence-api.version>1.0.2</persistence-api.version><spring.boot.test.version>3.1.5</spring.boot.test.version><spring.boot.version>3.2.0</spring.boot.version><spring.cloud.version>2023.0.0</spring.cloud.version><spring.cloud.alibaba.version>2023.0.0.0-RC1</spring.cloud.alibaba.version><knife4j-openapi3.version>4.4.0</knife4j-openapi3.version>
</properties>

六、Nacos:服務注冊與發現

1、下載安裝Nacos

下載地址:https://nacos.io/download/nacos-server

在這里插入圖片描述

下載完之后解壓到沒有中文的目錄錄下,并到bin目錄下運行cmd啟動命令 startup.cmd -m standalone
(standalone代表著單機模式運行,非集群模式)
在這里插入圖片描述

默認訪問地址為:http://localhost:8848/nacos/ (要是有賬號密碼默認都是nacos)

在這里插入圖片描述

2、服務注冊

1. 導入依賴(這里以服務提供者為例)

<dependencies><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入自己定義的api通用包 --><dependency><groupId>com.atguigu.cloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!--SpringBoot通用依賴模塊--><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><!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

2. 修改配置文件和主啟動類

server:port: 9001
spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址

@SpringBootApplication
@EnableDiscoveryClient/*服務注冊*/
public class Main9001 {public static void main(String[] args) {SpringApplication.run(Main9001.class, args);}
}

3. 創建業務類


@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. 測試

在這里插入圖片描述

3.服務映射

為了演示這里需要在創建一個消費者去映射

1. 導入依賴

注意:消費者與服務提供者所需要導入的依賴不同多了一個負載均衡依賴


<dependencies><!--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>

2. 修改配置文件和主啟動類

server:port: 90
spring:application:name: nacos-order-consumercloud:nacos:discovery:server-addr: localhost:8848
#消費者將要去訪問的微服務名稱(nacos微服務提供者叫什么你寫什么)
service-url:nacos-user-service: http://nacos-payment-provider

主啟動類和上面一樣

3. 創建業務類和RestTemplate配置類用來提供負載均衡

這里不懂得可以看一下前面的文章《springCloud/Alibaba常用中間件(Consul、LoadBalancer、Openfeign、circuitBreaker)》中的負載均衡


@Configuration
public class RestTemplateConfig {@Bean@LoadBalanced //賦予RestTemplate負載均衡的能力public RestTemplate restTemplate() {return new RestTemplate();}
}

@RestController
public class OrderNacosController {@Resourceprivate RestTemplate restTemplate;/*方式一:在配置文件中配置好要訪問的服務。注意:!!!這里是和你配置文件中的service-url下面所配置的名字一樣!!!*/@Value("${service-url.nacos-user-service}")private String service;/*方式二:直接寫入要訪問的服務url*/public static final String service_url = "http://nacos-payment-provider/pay";@GetMapping("/consumer/pay/nacos/{id}")public String paymentInfo(@PathVariable("id") Integer id) {String result = restTemplate.getForObject(service + "/nacos/" + id, String.class);return result + "\t" + "    我是OrderNacosController83調用者。。。。。。";}
}

4. 測試(使用idea中自帶的虛擬端口映射)

測試用消費者的接口是否可以訪問成功
這里為了測試負載均衡可以在寫一個服務,也可以直接使用idea中自帶的虛擬端口映射配置如下在這里插入圖片描述
在這里插入圖片描述 這時就會出現一個服務,啟動即可
在這里插入圖片描述
這里就可以進行負載均衡的測試了

4. 配置中心

1. 導入配置

注意這里需要導入bootstrap(系統級配置)
依賴為下面的修改bootstrap配置做準備
(這里不太懂的話前面的文章《springCloud/Alibaba常用中間件(Consul、LoadBalancer、Openfeign、circuitBreaker)》中的Consul的服務配置與刷新


<dependencies><!--bootstrap--><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><!--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>

2. nacos創建命名空間

在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述

3. 修改配置文件–主啟動類

# nacos配置(bootstrap.yml)
spring:application:name: nacos-config-client-chybcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服務注冊中心地址namespace: chyb #關鍵點:添加命名空間ID,與config保持一致,若是這里不加服務可能會在public(默認)中運行config:server-addr: localhost:8848 #Nacos作為配置中心地址file-extension: yaml #指定yaml格式的配置group: CHYB_TESTGROUP #指定配置組namespace: chyb #指定命名空間(填寫的是命名空間ID)
# nacos端配置文件DataId的命名規則是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml
# application.yml
server:port: 3377
spring:profiles:active: dev # 表示開發環境#active: prod # 表示生產環境#active: test # 表示測試環境

主啟動類:和上面一樣這里就不演示了

4. 創建業務類


@RestController
@RefreshScope //在控制器類加入@RefreshScope注解使當前類下的配置支持Nacos的動態刷新功能。
public class NacosConfigClientController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}
  1. 測試
    在這里插入圖片描述
    這里可以修改一下nacos中的配置內容測試是否會動態改變

上述大部分代碼以上傳到gitee:https://gitee.com/banhuayue/springCloud-Alibaba-code.git

筆記參考來自尚硅谷

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80373.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80373.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80373.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp中score-view中的文字無法換行問題。

項目場景&#xff1a; 今天遇到一個很惡心的問題&#xff0c;uniapp中的文字突然無法換行了。得..就介樣 原因分析&#xff1a; 提示&#xff1a;經過一fan研究后發現 scroll-view為了能夠橫向滾動設置了white-space: nowrap; 強制不換行 解決起來最先想到的是&#xff0c;父…

【STM32 學習筆記】I2C通信協議

注&#xff1a;通信協議的設計背景 3:00~10:13 I2C 通訊協議(Inter&#xff0d;Integrated Circuit)是由Phiilps公司開發的&#xff0c;由于它引腳少&#xff0c;硬件實現簡單&#xff0c;可擴展性強&#xff0c; 不需要USART、CAN等通訊協議的外部收發設備&#xff0c;現在被廣…

【網絡原理】數據鏈路層

目錄 一. 以太網 二. 以太網數據幀 三. MAC地址 四. MTU 五. ARP協議 六. DNS 一. 以太網 以太網是一種基于有線或無線介質的計算機網絡技術&#xff0c;定義了物理層和數據鏈路層的協議&#xff0c;用于在局域網中傳輸數據幀。 二. 以太網數據幀 1&#xff09;目標地址 …

控制臺打印帶格式內容

1. 場景 很多軟件會在控制臺打印帶顏色和格式的文字&#xff0c;需要使用轉義符實現這個功能。 2. 詳細說明 2.1.轉義符說明 樣式開始&#xff1a;\033[參數1;參數2;參數3m 可以多個參數疊加&#xff0c;若同一類型的參數&#xff08;如字體顏色&#xff09;設置了多個&…

[6-2] 定時器定時中斷定時器外部時鐘 江協科技學習筆記(41個知識點)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 V 30 31 32 33 34 35 36 37 38 39 40 41

數據庫的脫敏策略

數據庫的脫敏策略&#xff1a;就是屏蔽敏感的數據 脫敏策略三要求&#xff1a; &#xff08;1&#xff09;表對象 &#xff08;2&#xff09;生效條件&#xff08;脫敏列、脫敏函數&#xff09; &#xff08;3&#xff09;二元組 常見的脫敏策略規則&#xff1a; 替換、重排、…

Python序列化的學習筆記

1. Npy&Numpy O4-mini-Cursor&#xff1a;如果.npy文件里包含了「Python對象」而非純數值數組時&#xff0c;就必須在加載時加上allow_pickleTrue。

[思維模式-27]:《本質思考力》-7- 逆向思考的原理與應用

目錄 一、什么是逆向思考 1.1、逆向思考的六大核心思維模式 1.2、逆向思考的四大實踐方法 1. 假設倒置法 2. 缺陷重構法 3. 用戶反推法 4. 規則解構法 1.3、逆向思考的經典案例庫 1. 商業創新&#xff1a;從“賣產品”到“賣服務” 2. 用戶體驗&#xff1a;從“功能滿…

在python中,為什么要引入事件循環這個概念?

在Python中&#xff0c;事件循環&#xff08;Event Loop&#xff09;是異步編程的核心機制&#xff0c;它的引入解決了傳統同步編程模型在高并發場景下的效率瓶頸問題。以下從技術演進、性能優化和編程范式三個角度&#xff0c;探討這一概念的必要性及其價值。 一、同步模型的局…

Taccel:一個高性能的GPU加速視觸覺機器人模擬平臺

觸覺感知對于實現人類水平的機器人操作能力至關重要。而視覺觸覺傳感器&#xff08;VBTS&#xff09;作為一種有前景的解決方案&#xff0c;通過相機捕捉彈性凝膠墊的形變模式來感知接觸的方式&#xff0c;為視觸覺機器人提供了高空間分辨率和成本效益。然而&#xff0c;這些傳…

oracle 會話管理

會話管理 1&#xff1a;查看當前所有用戶的會話(SESSION)&#xff1a; SELECT * FROM V S E S S I O N W H E R E U S E R N A M E I S N O T N U L L O R D E R B Y L O G O N T I M E , S I D ; 其中 O r a c l e 內部進程的 U S E R N A M E 為空 2 &#xff1a;查看當前…

Python開發后端InfluxDB數據庫測試接口

1、使用PyCharm創建一個Python項目wzClear 2、新建package包wzInfluxdb和wzConfig包&#xff0c;如上圖所示&#xff0c;新建一個DB.json配置文件并添加influxdb配置信息&#xff0c;DB.json為統一配置文件 {"influxdbV1": {"url": "http://192.168.0…

采用LLaMa-Factory對QWen大模型實現微調(效果很好)

前言 LLaMA-factory是一個非常有用的開源框架。關于利用llama-factory實現大模型的微調&#xff0c;研究了有一個多月了&#xff0c;終于相對成功的微調了一個QWen的大模型。其中的曲折愿和大家分享&#xff01; 一、源碼的下載 在github上的網址&#xff1a; GitHub - hiyou…

深入理解深度Q網絡DQN:基于python從零實現

DQN是什么玩意兒&#xff1f; 深度Q網絡&#xff08;DQN&#xff09;是深度強化學習領域里一個超厲害的算法。它把Q學習和深度神經網絡巧妙地結合在了一起&#xff0c;專門用來搞定那些狀態空間維度特別高、特別復雜的難題。它展示了用函數近似來學習價值函數的超能力&#xf…

機械物理:水力發電站工作原理是什么?

水利發電站的工作原理是將水的勢能轉化為電能&#xff0c;主要依賴水體的重力作用與能量轉換設備。以下是其核心步驟和組成部分的詳細解釋&#xff1a; 1. 蓄水與勢能積累 水壩與水庫&#xff1a;通過建造水壩攔截河流&#xff0c;形成水庫蓄水。水位升高后&#xff0c;水體的…

[面試]SoC驗證工程師面試常見問題(五)TLM通信篇

SoC驗證工程師面試常見問題(五) 摘要:UVM (Universal Verification Methodology) 中的 TLM (Transaction Level Modeling) 通信是一種用于在驗證組件之間傳遞事務(Transaction)的高層次抽象機制。它通過端口(Port)和導出(Export)實現組件間的解耦通信,避免了信…

CAD屬性圖框值與Excel聯動(CAD塊屬性導出Excel、excel更新CAD塊屬性)——CAD c#二次開發

CAD插件實現塊屬性值與excel的互動&#xff0c;效果如下&#xff1a; 加載dll插件&#xff08;CAD 命令行輸入netload &#xff0c;運行xx即可導出Excel&#xff0c;運行xx1即可根據excel更新dwg塊屬性值。&#xff09; 部分代碼如下 // 4. 開啟事務更新CAD數據using (Transact…

【數據挖掘】Apriori算法

Apriori算法是經典的關聯規則挖掘算法&#xff0c;用于從事務型數據庫中發現頻繁項集和強關聯規則&#xff0c;特別常用于購物籃分析等場景。 &#x1f9e0; 核心思想&#xff08;Apriori原則&#xff09; 一個項集是頻繁的&#xff0c;前提是它的所有子集也必須是頻繁的。 即&…

單鏈表設計與實現

01. 單鏈表簡介 在數據結構中&#xff0c;單鏈表的實現可以分為 帶頭結點 和 不帶頭結點 兩種方式&#xff0c;這里我們討論第二種方式。 頭結點&#xff1a;鏈表第一個節點不存實際數據&#xff0c;僅作為輔助節點指向首元節點&#xff08;第一個數據節點&#xff09;。頭指…

【論文閱讀】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling

文章目錄 摘要一、介紹二、相關工作2.1. 鉸接對象建模2.2. 部件感知3D生成 三、方法3.1. 概述3.2. 通過VLM助手進行可移動部件分割3.3. 通過幾何感知視覺提示的發音估計3.4. 通過隨機關節狀態進行細化 四、實驗4.1. 定量實驗發音估計設置: 4.2. 應用程序 五、結論六、思考 摘要…