快速入手:Nacos融合SpringCloud成為注冊配置中心

快速入手:Nacos融合SpringCloud成為注冊配置中心

  • 前言
    • 安裝Nacos
    • 項目搭建
    • 添加配置
    • 啟動類添加注解
    • 運行項目
    • 服務調用
      • RestTemplate 模式
      • FeignClient 模式
    • Gateway 網關

前言

  • Spring Cloud是一系列框架的集合,提供了微服務架構下的各種解決方案,如服務治理、配置管理、熔斷器、網關等。它基于 Spring Boot,使得開發者能夠快速構建微服務應用。
  • Nacos是一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。它可以作為服務注冊中心,幫助微服務實例進行注冊與發現,使各個微服務之間能夠方便地進行通信。Nacos 服務器維護著一個服務注冊表,記錄著各個微服務的實例信息,如 IP 地址、端口號、服務名稱等。當其他微服務需要調用某個服務時,只需從 Nacos 服務器獲取服務實例列表,即可進行遠程調用。此外,Nacos 還支持服務健康檢查,能夠實時監測服務實例的健康狀態,將不健康的實例從服務列表中剔除,保證服務調用的可靠性。

當與 Nacos 集成時,Spring Cloud 應用可以從 Nacos 服務器獲取配置信息。同時,Nacos 支持配置的動態更新,當配置信息發生變化時,微服務應用能夠實時感知到變化,并自動更新本地的配置,無需重啟應用。
搭建微服務.

安裝Nacos

您需要先下載 Nacos 并啟動 Nacos server

快速開始所生產出的Nacos服務為單機模式及未開啟鑒權,建議僅在測試中使用,若在實際生產環境中部署,請部署集群模式并開啟鑒權,以避免存在穩定性和安全性的風險。

您可以通過Nacos的版本下載頁面、Github找到每個版本支持的功能的介紹,當前推薦的穩定版本為2.5.1。

Nacos 依賴 Java 環境來運行,請確保是在以下版本環境中安裝使用:

  • 64 bit OS,支持 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac。
  • 64 bit JDK 1.8+;下載 & 配置。

下載完成后解壓Nacos壓縮包,以Linux為例。

如果是.zip文件執行如下代碼:

unzip nacos-server-$version.zip

如果是.gz文件執行如下代碼:

tar -xvf nacos-server-$version.tar.gz

解壓完成后,進入/bin目錄:

cd nacos/bin

注:Nacos的運行建議至少在2C4G 60G的機器配置下運行。

解壓后進入/bin目錄,執行啟動命令,如果是Linux則執行.sh腳本文件,Windows則執行.cmd腳本文件,示例代碼如下:

# Linux
sh startup.sh -m standalone
# Windows
startup.cmd -m standalone

standalone代表著單機模式運行,非集群模式。

啟動后,返回以下信息說明啟動成功,如圖所示:

在這里插入圖片描述

打開任意瀏覽器,輸入地址:http://127.0.0.1:8848/nacos,即可進入Nacos控制臺頁面(無需數用戶名和密碼)。

如果需要關閉服務器,執行對應文件與啟動時文件后綴一致,示例代碼如下:

# Linux
sh shutdown.sh
# Windows 或者雙擊
shutdown.cmd

項目搭建

參考官網最新版本說明,如圖所示:

在這里插入圖片描述

我們使用當前Nacos最新的版本,依賴文件如下:

Spring Boot VersionSpring Cloud Alibaba VersionSpring Cloud Version
3.3.92023.0.3.*2023.0.3
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.9</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.sc.nacos.product</groupId><artifactId>sc-nacos-product</artifactId><version>0.0.1-SNAPSHOT</version><name>sc-nacos-product</name><description>sc-nacos-product</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 用于配置管理 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 服務發現 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.3.2</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2023.0.3</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

添加配置

bootstrap.propertiesbootstrap.yml 中配置應用名和文件名、 Nacos server 的地址,示例代碼如下:

spring:application:name: sc-nacos-product# 設置外部配置源config:import: nacos:sc-nacos-product-dev.ymlcloud:nacos:# 指定 Nacos 配置服務器的地址config:server-addr: 127.0.0.1:8848# 指定 Nacos 服務發現服務器的地址discovery:server-addr: 127.0.0.1:8848

Nacos上創建對應sc-nacos-product-dev.yml配置文件,如圖所示:

在這里插入圖片描述

啟動類添加注解

啟動類增加 @EnableDiscoveryClient開啟服務注冊發現功能,示例代碼如下:

@SpringBootApplication
@EnableDiscoveryClient
public class ScNacosProductApplication {public static void main(String[] args) {SpringApplication.run(ScNacosProductApplication.class, args);}}

運行項目

啟動項目,檢查配置文件是否連接正常,如圖所示:
在這里插入圖片描述

再檢查服務在Nacos上是否注冊成功,如圖所示:

在這里插入圖片描述

至此一個簡單的SpringCloud整合Nacos項目已經完成。

服務調用

Spring Cloud提供了許多用于服務調用的功能。常見的服務調用方式RestTemplateFeignClientRibbonHystrix 等。

RestTemplate 模式

RestTemplateSpring 提供的用于發送 HTTP 請求和接收響應的類。它適用于多種場景,尤其是在沒有聲明式調用需求時。通過 RestTemplate,你可以直接發送 HTTP 請求并獲取返回結果,通常與 Ribbon 結合使用進行負載均衡。

引入依賴:

        <!-- 負載均衡 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

sc-nacos-product服務中定義一個Controller接口,示例代碼如下:

@RestController
public class AppController {@GetMapping("/echo/{str}")public String rest(@PathVariable String str){return "hello "+ str;}
}

按照之前的步驟,創建一個調用方項目(比如項目名:sc-nacos-consumer)。

添加 @LoadBlanced 注解,使得 RestTemplate 接入服務發現與負載均衡:

@Configuration
public class AppConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}

sc-nacos-consumer服務定義一個Controller接口,調用sc-nacos-product服務接口,示例代碼如下:

@RestController
public class AppController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/rest/{str}")public String rest(@PathVariable String str){return restTemplate.getForObject("htt://sc-nacos-product/echo/"+ str, String.class);}
}

使用Postman等工具,請求sc-nacos-consumer服務接口,確認響應無誤,如圖所示:

在這里插入圖片描述

FeignClient 模式

FeignClientSpring Cloud 提供的一個聲明式 HTTP 客戶端,可以讓你通過注解方式自動化服務調用。Feign 會根據接口定義自動實現 HTTP 請求,簡化了服務調用的代碼,并集成了負載均衡和錯誤處理功能。

引入依賴:

        <!-- 遠程調用 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

啟動類增加@EnableFeignClients注解,用于啟用 Feign 客戶端,示例代碼如下:

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ScNacosProductApplication {public static void main(String[] args) {SpringApplication.run(ScNacosProductApplication.class, args);}}

使用 @FeignClient 注解將sc-nacos-product服務提供的Controller接口,包裝成一個 FeignClient,屬性 name 對應對端應用名,示例代碼如下:

@FeignClient(name = "sc-nacos-product")
public interface EchoService {@GetMapping(value = "/echo/{str}")String echo(@PathVariable(value = "str") String str);
}

EchoService 作為標準bean 注入sc-nacos-consumer服務,即可對遠端服務發起請求了,示例代碼如下:

@RestController
public class AppController {@Autowiredprivate EchoService echoService;@GetMapping("/client/{str}")public String client(@PathVariable(value = "str") String str){return echoService.echo(str);}
}

需要注意再sc-nacos-consumer服務,使用@EnableFeignClients注解并指定掃描路徑,示例代碼如下:

@SpringBootApplication
@EnableFeignClients(basePackages = "com.sc.nacos.product.client")
@EnableDiscoveryClient
public class ScNacosConsumerApplication {public static void main(String[] args) {SpringApplication.run(ScNacosConsumerApplication.class, args);}}

使用Postman等工具,請求sc-nacos-consumer服務接口,確認響應無誤,如圖所示:

在這里插入圖片描述

Gateway 網關

Spring Cloud GatewaySpring Cloud 生態系統中的一個 API 網關,用于路由請求、過濾請求和響應。

引入依賴:

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>

按照之前的步驟,創建一個網關項目(比如項目名:sc-nacos-gateway)。

啟動類添加注解,示例代碼如下:

@SpringBootApplication
@EnableDiscoveryClient
public class ScNacosGatewayApplication {public static void main(String[] args) {SpringApplication.run(ScNacosGatewayApplication.class, args);}
}

application.yml 中配置路由規則:

spring:cloud:gateway:routes:- id: sc-nacos-consumeruri: lb://sc-nacos-consumerpredicates:- Path=/consumer/**- id: sc-nacos-producturi: lb://sc-nacos-productpredicates:- Path=/product/**filters:- StripPrefix=1

每個路由規則使用 - 來表示一個獨立的路由。

  • id為當前的路由規則唯一標識符。

  • uri是一個關鍵配置項,它代表著請求被路由后要前往的目標地址或者服務發現中的服務名。 lb:// 是負載均衡的前綴,當請求/consumer開頭的地址,就會被路由到sc-nacos-consumer服務,并且會通過負載均衡算法選擇合適的實例來處理請求。

  • predicates 是路由的匹配條件部分,用于判斷什么樣的請求會被這個路由規則所處理。它表示當請求的路徑以任意地址開頭時,該請求就會匹配這個路由規則。** 是通配符,可以跟任意的路徑信息。

  • filters 是路由的過濾部分,用于在請求被路由前后對請求和響應進行修改或處理。StripPrefix 過濾器的作用是在請求被路由之前,從請求的路徑中移除指定數量的路徑前綴部分。這里的 1 表示移除路徑中的第一個路徑段。比如:請求/product/user在經過 StripPrefix=1 過濾器處理后,實際被路由的路徑會變成 /user

完整的配置文件如下:

spring:application:name: sc-nacos-gatewayconfig:import: nacos:sc-nacos-gateway.ymlcloud:nacos:config:server-addr: 127.0.0.1:8848discovery:server-addr: 127.0.0.1:8848gateway:routes:- id: sc-nacos-consumeruri: lb://sc-nacos-consumerpredicates:- Path=/consumer/**filters:- StripPrefix=1- id: sc-nacos-producturi: lb://sc-nacos-productpredicates:- Path=/product/**filters:- StripPrefix=1

使用Postman等工具,從網關請求sc-nacos-consumer服務接口,確認響應無誤,如圖所示:

在這里插入圖片描述

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

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

相關文章

2025年2月-3月后端go開發找工作感悟

整體感悟 目標 找工作首先要有一個目標&#xff0c;這個目標盡可能的明確&#xff0c;比如我要字節、拼多多之類的公司&#xff0c;還是要去百度、滴滴這樣的&#xff0c;或者目標是創業公司。但是這個目標是會動態調整的&#xff0c;有可能我們的心態發生了變化&#xff0c;一…

Python | 如何在Pandas中刪除常量列

在數據分析中&#xff0c;經常會遇到數據集中始終具有常量值的列&#xff08;即&#xff0c;該列中的所有行包含相同的值&#xff09;。這樣的常量列不提供有意義的信息&#xff0c;可以安全地刪除而不影響分析。 如&#xff1a; 在本文中&#xff0c;我們將探索如何使用Pyth…

5.高頻加熱的原理與常用集成電路介紹

一、高頻加熱的類型 利用高頻電源加熱通常由兩種方法&#xff1a;電介質加熱&#xff08;被加熱物體絕緣&#xff09;與感應加熱&#xff08;被加熱物體導電&#xff09;&#xff0c;詳細解釋如下&#xff1a; 電介質加熱&#xff08;利用高頻電壓的高頻電場導致物體自身分子摩…

串口通信與Modbus通信的區別和聯系

一、定義與定位 1?、串口通信? 是物理層的硬件接口標準&#xff0c;用于實現設備間的?串行數據傳輸?&#xff0c;常見類型包括RS-232、RS-485和RS-422?35。其功能是完成并行數據與串行信號的轉換&#xff0c;并定義電氣特性&#xff08;如電平、傳輸速率&#xff09;?。…

Linux生產者消費者模型

Linux生產者消費者模型 Linux生產者消費者模型詳解生產者消費者模型生產者消費者模型的概念生產者消費者模型的特點生產者消費者模型優點 基于BlockingQueue的生產者消費者模型基于阻塞隊列的生產者消費者模型模擬實現基于阻塞隊列的生產消費模型基礎實現生產者消費者步調調整條…

【中文翻譯】第9章-The Algorithmic Foundations of Differential Privacy

由于GitHub項目僅翻譯到前5章&#xff0c;我們從第6章開始通過大語言模型翻譯&#xff0c;并導出markdown格式。 大模型難免存在錯漏&#xff0c;請讀者指正。 教材原文地址&#xff1a;https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf 9 差分隱私與計算復雜度 到目…

【AI大模型】搭建本地大模型GPT-NeoX:詳細步驟及常見問題處理

搭建本地大模型GPT-NeoX:詳細步驟及常見問題處理 GPT-NeoX是一個開源的大型語言模型框架,由EleutherAI開發,可用于訓練和部署類似GPT-3的大型語言模型。本指南將詳細介紹如何在本地環境中搭建GPT-NeoX,并解決過程中可能遇到的常見問題。 1. 系統要求 1.1 硬件要求 1.2 軟…

Unity跨平臺構建快速回顧

知識點來源&#xff1a;人間自有韜哥在&#xff0c;豆包 目錄 一、發布應用程序1. 修改發布必備設置1.1 打開設置面板1.2 修改公司名、游戲項目名、版本號和默認圖標1.3 修改 Package Name 和 Minimum API Level 2. 發布應用程序2.1 配置 Build Settings2.2 選擇發布選項2.3 構…

低配電腦暢玩《怪物獵人:荒野》,ToDesk云電腦優化從30幀到144幀?

《怪物獵人&#xff1a;荒野&#xff08;Monster Hunter Wilds&#xff09;》自2025年正式發售以來已取得相當亮眼的成績&#xff0c;僅用三天時間便輕松突破800萬銷量&#xff0c;目前順利蟬聯周榜冠軍&#xff1b;憑借著開放世界的宏大場景和豐富的狩獵玩法&#xff0c;該游戲…

Flink基礎簡介和安裝部署

文章目錄 一、Flink基礎簡介1、什么是Flink2、Flink流處理特性3、Flink四大基石4、Flink中的角色 二、Flink集群搭建1、Local模式①上傳Flink安裝包②啟動交互窗口③提交任務測試④訪問WebUI頁面查看④退出停止集群 一、Flink基礎簡介 1、什么是Flink Flink是?個分布式&#…

【2025】基于ssm+jsp的二手商城系統設計與實現(源碼、萬字文檔、圖文修改、調試答疑)

基于SSMJSP的二手商城系統設計與實現系統功能結構圖&#xff1a; 課題背景 隨著經濟的發展和人們生活水平的提高&#xff0c;二手交易市場日益活躍。人們對于閑置物品的處理方式逐漸從傳統的廢品回收轉變為通過二手交易平臺進行再利用。這種交易模式不僅能夠幫助用戶節省開支&a…

幻影星空亮相CAAPA北京展 引領文旅產業升級轉型

3月19日&#xff0c;中國游藝機游樂園協會&#xff08;CAAPA&#xff09;主辦的2025中國&#xff08;北京&#xff09;國際游樂設施設備博覽會及2025北京國際旅游休閑娛樂產業博覽會在北京盛大啟幕。在這場行業盛會上&#xff0c;廣州卓遠旗下的“幻影星空”品牌以創新性的虛擬…

銀河麒麟桌面版包管理器(二)

以下內容摘自《銀河麒麟操作系統進階應用》一書 APT包管理器 APT是Debian及其派生系統的包管理器&#xff0c;構建在dpkg之上&#xff0c;以其強大的依賴性處理能力和豐富的軟件倉庫而聞名。APT具有自動解決依賴關系、提供易于使用的命令行工具&#xff08;如apt-get、apt-ca…

【STM32實物】基于STM32的掃地機器人/小車控制系統設計

基于STM32的掃地機器人/小車控制系統設計 演示視頻: 基于STM32的掃地機器人小車控制系統設計 簡介:掃地機器人系統采用分層結構設計,主要包括底層硬件控制層、中間數據處理層和上層用戶交互層。底層硬件控制層負責對各個硬件模塊進行控制和數據采集,中間數據處理層負責對采…

STM32收發數據包中間件——ProtoFlow,更方便的打包解包助手

引言 在嵌入式開發中&#xff0c;數據包封裝是不可或缺的一環。手動編寫協議不僅耗時&#xff0c;還容易出錯。ProtoFlow 的出現&#xff0c;就是為了讓數據包封裝變得簡單、高效、可靠。它不僅占用資源少&#xff0c;還能適配多種場景&#xff0c;是你項目的理想助手。 項目地…

Xcode16.1使用MonkeyDev運行Tiktok報錯分析

問題1&#xff1a; Build input files cannot be found: /usr/lib/libc.dylib, /usr/lib/libstdc.dylib. Did you forget to declare these files as outputs of any script phases or custom build rules which produce them? 解決辦法&#xff1a;在TARGETS的dylib中的Bui…

R語言交互項-formula

R語言交互項-formula 交互項的模型交互項的幾種情形連續變量和連續變量連續變量和分類變量分類變量和分類變量總結交互項的模型 統計中的交互和相關是完全不同的兩個概念,交互項是指兩個或者多個變量對因變量的協同效應,關注變量對因變量的聯合影響,比如變量X對Y的影響是否因…

圖解AUTOSAR_SWS_IPDUMultiplexer

AUTOSAR IPDUMultiplexer模塊詳解 PDU復用器模塊架構與實現分析 目錄 1. IPDU Multiplexer概述2. 模塊配置模型 2.1 配置結構概述2.2 配置類詳解2.3 配置關系說明3. 架構設計 3.1 模塊位置與接口3.2 內部組件結構3.3 接口交互模式4. 操作序列 4.1 PDU傳輸流程4.2 PDU傳輸流程詳…

手機怎么換網絡IP有什么用?操作指南與場景應用?

在數字化時代&#xff0c;手機已經成為我們日常生活中不可或缺的一部分&#xff0c;無論是工作、學習還是娛樂&#xff0c;手機都扮演著至關重要的角色。而在手機的使用過程中&#xff0c;網絡IP地址作為設備在互聯網上的唯一標識符&#xff0c;其重要性和作用不容忽視。本文將…

CH32V208GBU6沁恒協議棧BUG:在主機Write的同一包notify會造成主機一直Write不成功

從事嵌入式單片機的工作算是符合我個人興趣愛好的,當面對一個新的芯片我即想把芯片盡快搞懂完成項目賺錢,也想著能夠把自己遇到的坑和注意事項記錄下來,即方便自己后面查閱也可以分享給大家,這是一種沖動,但是這個或許并不是原廠希望的,盡管這樣有可能會犧牲一些時間也有哪天原…