6-使用nacos作為注冊中心

本文講解項目中集成nacos,并將nacos作為注冊中心使用的過程。本文不涉及nacos的原理。

1、項目簡介

以一個演示項目為例,項目包含三個服務,調用及依賴如下圖:
在這里插入圖片描述
由圖中可以看出,coupon-customer-serv為服務的消費者,coupon-calculation-serv和coupon-template-serv為服務的提供者。業務簡述如下表:

序號服務名稱服務描述
1coupon-template-serv優惠卷模板服務,提供模板的創建功能。比如打折優惠券,當用戶領取優惠卷時,優惠卷由模板生成,而具體打折多少,由商家指定。
2coupon-calculation-serv優惠卷計算服務。當用戶支付訂單時,根據用戶購買的商品和已有的優惠券,計算實際支付的貨款。
3coupon-customer-serv用戶服務。包含用戶領取優惠券、支付等功能。

2、主要依賴的版本

  • springboot:2.4.2
  • spring cloud:2020.0.1
  • spring cloud alibaba:2021.1

3、開工

關于springboot項目的搭建,此處略過。此處只討論spring cloud相關的內容。先集成服務提供者(coupon-template-serv、coupon-calculation-serv),再集成服務消費者。

3.1、模塊內部結構介紹

下面從coupon-template-serv服務開始,集成nacos。該服務的目錄結構如下:
在這里插入圖片描述
內部各模塊介紹:

  • coupon-template-api:存放該項目用到dto類
  • coupon-template-dao: 數據庫操作模塊
  • coupon-template-impl: 服務層和controller保存的地方,也是springboot的入口。

3.2、引入依賴

打開coupon-template-serv模塊下的pom.xml文件(也就是模塊的根pom.xml),添加如下依賴:

 <!--spring cloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2020.0.1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.1</version><type>pom</type><scope>import</scope></dependency>

打開coupon-template-impl模塊下的pom.xml文件,添加nacos依賴:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3.3、配置nacos服務發現

打開coupon-template-impl下的application.yml文件,添加如下配置:

 spring:cloud:nacos:discovery:# Nacos的服務注冊地址,可以配置多個,逗號分隔server-addr: 192.168.110.165:8848,192.168.110.165:8948# 服務注冊到Nacos上的名稱,一般不用配置service: coupon-template-serv# nacos客戶端向服務端發送心跳的時間間隔,時間單位其實是msheart-beat-interval: 5000# 服務端沒有接受到客戶端心跳請求就將其設為不健康的時間間隔,默認為15s# 注:推薦值該值為15s即可,如果有的業務線希望服務下線或者出故障時希望盡快被發現,可以適當減少該值heart-beat-timeout: 20000# 元數據部分 - 可以自己隨便定制metadata:mydata: abc# 客戶端在啟動時是否讀取本地配置項(一個文件)來獲取服務列表# 注:推薦該值為false,若改成true。則客戶端會在本地的一個# 文件中保存服務信息,當下次宕機啟動時,會優先讀取本地的配置對外提供服務。naming-load-cache-at-start: false# 命名空間ID,Nacos通過不同的命名空間來區分不同的環境,進行數據隔離,namespace: dev# 創建不同的集群cluster-name: Cluster-A# [注意]兩個服務如果存在上下游調用關系,必須配置相同的group才能發起訪問group: myGroup# 向注冊中心注冊服務,默認為true# 如果只消費服務,不作為服務提供方,倒是可以設置成false,減少開銷register-enabled: true

配置的注釋比較詳細,可以對照著看。注意nacos的ip地址和端口改成你自己的。

3.4、驗證集成成功

啟動nacos,再啟動coupon-template-impl,仔細觀察打印的日志,如圖:

在這里插入圖片描述
再打開nacos管理端,看服務的注冊情況,因為我們的服務注冊在namespace dev下,所以看dev:
在這里插入圖片描述
至此,服務提供者集成完畢,并驗證成功。
coupon-calculation-serv服務也是服務提供者,集成過程類似,此處不再贅述。

3.5、服務消費者coupon-customer-serv集成

項目結構如圖:
在這里插入圖片描述

3.5.1、添加依賴

根pom.xml與上面一致,但是作為服務的消費者,需要配置負載均衡等依賴。所以,打開
coupon-custom-impl模塊的pom.xml文件,添加以下依賴:

<!--服務發現-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><!--負載均衡-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency><!--webflux調用-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

再配置application.yml文件,它與上面兩個服務配置一樣,保證服務名稱不一致就行了。再次查看nacos管理端,現在有三個服務在注冊中心。
在這里插入圖片描述

4、發起遠程調用

這里用webflux發起調用,有興趣的同學去網上查一下資料,這里僅展示一下調用的代碼:

 ...CouponTemplateInfo templateInfo = webClientBuilder.build().get().uri("http://coupon-template-serv/template/getTemplate?id=" + request.getCouponTemplateId()).retrieve().bodyToMono(CouponTemplateInfo.class).block();

注意:uri中用的是服務名而不是ip地址+端口,這樣調用時,nacos會把具體的地址給調用方,另一個,還有負載均衡的意思。因為實際中用webflux調用的比較少,話不多說。

注入webClientBuilder對象:

 @Autowiredprivate WebClient.Builder webClientBuilder;

webClientBuilder對象的配置:

@org.springframework.context.annotation.Configuration
public class Configuration {@Bean@LoadBalancedpublic WebClient.Builder register() {return WebClient.builder();}
}

5、三個服務git

coupon-template-serv
coupon-calculation-serv
coupon-custom-serv
Ok, Have a nice day!

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

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

相關文章

基于element自動表格

需求是根據JSON文件生成表格&#xff0c;包含配置和自動props屬性以及過濾器&#xff1b; 數據示例&#xff1a; 表格設置&#xff1a; /*** 表格表頭信息* chineseToPinYin: 這是封裝的根據中文漢字轉換為拼音的方法* prop: 表頭字段名* filter: 數據過濾器* label: 表頭顯示…

最長連續序列【中等】

leetcode鏈接 給定一個未排序的整數數組 nums &#xff0c;找出數字連續的最長序列&#xff08;不要求序列元素在原數組中連續&#xff09;的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1&#xff1a;輸入&#xff1a;nums [100,4,200,1,3,2] 輸出&am…

『new Date 在 IOS 失效 の bug』

問題&#xff1a;new Date()在安卓下正常&#xff0c;在IOS下顯示不出來。 原因&#xff1a;在IOS下&#xff0c;new Date(“2000-2-22 00:10”),返回的是undefined&#xff0c;因為IOS不支持這種類型格式。 解決&#xff1a;更換下格式&#xff1a;new Date(“2000/2/22”) …

類初始化,類加載,類加載器

類初始化&#xff0c;類加載&#xff0c;類加載器 1. 類加載1.1. 類的加載1.2. 類的鏈接1.2.1. 驗證1.2.2. 準備1.2.3. 解析 2. 類加載器2.1. 類加載器分為四種&#xff1a;前三種為虛擬機自帶的加載器。2.2. 類加載有三種方式&#xff1a;2.3. **JVM類加載機制**2.4. 雙親委派…

GeoTrust通配符證書:保護您的網站安全

GeoTrust通配符 SSL證書是一種特殊的 SSL 證書類型&#xff0c;它可以同時為您的主域名及其所有子域提供安全保護。無論您有多少個不同的子域需要保障&#xff0c;都可以通過單一的 GeoTrust 通配符 SSL 證書輕松實現&#xff0c;極大地簡化了管理流程并降低了成本。 此外&…

1688商品詳情數據接口(1688.item_get)

1688商品詳情數據接口是一種程序化的接口&#xff0c;通過這個接口&#xff0c;商家或開發者可以使用自己的編程技能&#xff0c;對1688平臺上的商品信息進行查詢、獲取和更新。這個接口允許商家根據自身的需求&#xff0c;獲取商品的詳細信息&#xff0c;例如價格、庫存、描述…

JUC(Java Util Concurrent)多線程并發庫

JUC&#xff08;Java Util Concurrent&#xff09;是Java中用于編寫多線程并發程序的庫。開發過程中使用JUC主要有以下幾個好處&#xff1a; 1. 提高程序性能&#xff1a;使用JUC可以實現多線程并發執行&#xff0c;充分利用多核CPU&#xff0c;提高程序的性能。 2. 簡化代碼…

群暉NAS搭建WebDav服務做文件共享,可隨時隨地遠程訪問

文章目錄 1. 在群暉套件中心安裝WebDav Server套件1.1 安裝完成后&#xff0c;啟動webdav服務&#xff0c;并勾選HTTP復選框 2. 局域網測試WebDav服務2.1 下載RaiDrive客戶端2.2 打開RaiDrive&#xff0c;設置界面語言可以選擇中文2.3 點擊添加按鈕&#xff0c;新建虛擬驅動區2…

從事軟件測試8年,對業務測試人員的一些思考

自從事測試工作八年多以來&#xff0c;經歷過三個部門多條業務線&#xff0c;也經歷過測試轉型再回到測試&#xff0c;在此過程中對測試工作和角色的認知也逐步有些思考&#xff0c;想把這些思考分享給大家&#xff0c;希望為業務測試同學提供一些有價值的思路。 同時&#xff…

YOLOV7主干改進,使用fasternet輕量化改進主干(完整教程)

1&#xff0c;Pconv&#xff08;來自Fasternet&#xff09;&#xff08;可作為模型中的基礎卷積模塊使用&#xff09; 論文鏈接&#xff1a;https://arxiv.org/abs/2303.03667 2&#xff0c;為了大家方便的使用&#xff0c;這里我對原本的PConv的代碼做了部分的改動&#xff0…

立哥尖端技術-云安全整合方案

云安全管理中心 安全管理中心具有集中管控云環境整體安全態勢的功能&#xff0c;具備以下功能&#xff1a; &#xff08;1&#xff09;部署方式&#xff1a;與云平臺緊耦合&#xff0c;可實現云平臺一鍵下單&#xff0c;自動交付。 &#xff08;2&#xff09;安全態勢總覽&a…

拿下掙值管理,軟考集成你就成功了一半!

在備考軟考集成的時候&#xff0c;掙值管理有多重要呢&#xff1f;掙值管理的計算題考的頻率非常高&#xff0c;基本上每年都會考。 而且&#xff0c;計算題基本上都是20分左右&#xff0c;只要能在這道計算題上得滿分&#xff0c;那么45分及格的考試就已經成功了一半。 今天…

豪華程度堪比飛機頭等艙?奔馳在北美發布Tourrider系列巴士

今年三月&#xff0c;奔馳工廠附近出現了一臺特殊的測試車。其突出的前保險杠以及豎置雙風擋等特殊配置&#xff0c;都在暗示著它并非是為歐洲市場打造。 根據特征推測&#xff0c;這臺車應該是為北美市場打造。 就在昨天&#xff0c;奔馳發布了旗下全新Tourrider系列豪華客車&…

python數據分析高效代碼合集

文章目錄 問題:我有5個dataframe,都包含time 列,如何將它們根據time列取交集,并保存到同一個excel的不同sheet頁中。**df1,df2, df3, df4, df5,其也要用取交集后的time列**問題:我有5個dataframe,都包含time 列,如何將它們根據time列取交集,并保存到同一個excel的不同…

npm安裝 node-sass

第一步&#xff1a;安裝node-gyp 1.: npm install node-gyp -g2.: node-gyp install3.: npm install node-sass

QML24、常規組件StackView

1.簡介與示例 StackView管理著view頁面的生命周期,提供了頁面的棧式導航。這些view頁面可能有業務需要,根據業務需要,可以一級一級向深處跳轉,根據當前view的狀態與設定的情況,可能產生一個新view或者返回之前view 比如:注冊賬號分步驟,輸入用戶名,密碼,點擊下…

嵌入式單片機方向和Linux驅動開發方向哪個發展前景好?

嵌入式單片機方向和Linux驅動開發方向哪個發展前景好&#xff1f; 在某些平臺上看到很多人鼓吹嵌入式Linux開發比單片機開發要好&#xff0c;讓所有人都去做嵌入式Linux開發。說這種話的人大多數是嵌入式Linux的培訓機構&#xff0c;或者是一開始就以嵌入式Linux入門的那一批人…

小型養豬場污水處理技術方案

諸城市鑫淼環保小編帶大家了解一下小型養豬場污水處理技術方案 1.初步處理&#xff1a; 豬舍設立固液分離裝置&#xff1a;這可以幫助將固體糞便與液體污水分開&#xff0c;減少進一步處理的難度和成本。 設置沉淀池&#xff1a;讓分離后的污水在沉淀池內停留&#xff0c;使部分…

Windows更換主板后一直提示,你的pin碼不可再用解決辦法

最近惠普電腦主板壞了&#xff0c;到售后去維修電腦更換了個主板。 在經過了一系列的重新開機后&#xff0c;就直接卡在了“你的pin碼不可再用”那里。 主要癥狀就是&#xff0c;一直點一直連不上windows的 microsoft賬戶&#xff0c;點完一會兒黑屏。然后就回到了一開頭的“你…

飛書如何接入ChatGPT-打造個人智能問答助手實現無障礙交流

目錄 前言 環境列表 1.飛書設置 2.克隆feishu-chatgpt項目 3.配置config.yaml文件 4.運行feishu-chatgpt項目 5.安裝cpolar內網穿透 6.固定公網地址 7.機器人權限配置 8.創建版本 9.創建測試企業 10. 機器人測試 總結 前言 在飛書中創建chatGPT機器人并且對話&am…