97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

界面網(wǎng)站建設(shè)商標(biāo)設(shè)計(jì)logo網(wǎng)站

鶴壁市浩天電氣有限公司 2026/01/24 08:55:22
界面網(wǎng)站建設(shè),商標(biāo)設(shè)計(jì)logo網(wǎng)站,免費(fèi)電視劇大全網(wǎng)站,怎么找專業(yè)的營(yíng)銷團(tuán)隊(duì)在微服務(wù)架構(gòu)席卷全球的今天#xff0c;服務(wù)的注冊(cè)發(fā)現(xiàn)、配置管理成為了后端開(kāi)發(fā)的核心痛點(diǎn)。如果說(shuō)微服務(wù)是散落的珍珠#xff0c;那服務(wù)治理工具就是串起珍珠的線。而Nacos#xff0c;作為阿里開(kāi)源的“服務(wù)治理雙劍客”#xff08;服務(wù)注冊(cè)發(fā)現(xiàn)配置中心#xff09;…在微服務(wù)架構(gòu)席卷全球的今天服務(wù)的注冊(cè)發(fā)現(xiàn)、配置管理成為了后端開(kāi)發(fā)的核心痛點(diǎn)。如果說(shuō)微服務(wù)是散落的珍珠那服務(wù)治理工具就是串起珍珠的線。而Nacos作為阿里開(kāi)源的“服務(wù)治理雙劍客”服務(wù)注冊(cè)發(fā)現(xiàn)配置中心以其簡(jiǎn)單易用、功能強(qiáng)大的特性成為了微服務(wù)架構(gòu)中的首選方案。很多小白剛接觸時(shí)會(huì)被“服務(wù)注冊(cè)”“配置推送”等概念嚇住但只要跟著本文一步步走從環(huán)境搭建到實(shí)戰(zhàn)落地你也能輕松掌握Nacos的核心能力。一、先搞懂Nacos到底是什么在動(dòng)手操作前我們先明確Nacos的核心定位避免“知其然不知其所以然”。Nacos的全稱是Dynamic Naming and Configuration Service翻譯過(guò)來(lái)就是“動(dòng)態(tài)命名與配置服務(wù)”本質(zhì)上是一個(gè)集服務(wù)注冊(cè)發(fā)現(xiàn)、配置中心、服務(wù)管理于一體的微服務(wù)治理平臺(tái)。1.1 Nacos的核心價(jià)值為什么企業(yè)都愛(ài)用Nacos核心在于它解決了微服務(wù)架構(gòu)中的兩大核心問(wèn)題服務(wù)注冊(cè)發(fā)現(xiàn)微服務(wù)架構(gòu)中存在成百上千個(gè)服務(wù)服務(wù)之間需要相互調(diào)用比如訂單服務(wù)調(diào)用支付服務(wù)Nacos就像一個(gè)“服務(wù)通訊錄”讓服務(wù)能快速找到彼此無(wú)需硬編碼服務(wù)地址。配置中心傳統(tǒng)開(kāi)發(fā)中配置文件如數(shù)據(jù)庫(kù)連接、接口地址嵌在代碼里修改配置需要重新打包部署效率極低。Nacos能集中管理所有服務(wù)的配置支持動(dòng)態(tài)推送修改后無(wú)需重啟服務(wù)即可生效。1.2 Nacos的適用場(chǎng)景無(wú)論是小型創(chuàng)業(yè)公司的微服務(wù)雛形還是大型企業(yè)的復(fù)雜架構(gòu)Nacos都能適配中小團(tuán)隊(duì)快速搭建微服務(wù)架構(gòu)無(wú)需單獨(dú)部署注冊(cè)中心和配置中心大型企業(yè)支持集群部署滿足高可用、高并發(fā)需求配合Spring Cloud、Dubbo等框架使用混合架構(gòu)同時(shí)管理基于HTTP的REST服務(wù)和基于RPC的Dubbo服務(wù)1.3 Nacos與同類工具的對(duì)比很多小白會(huì)疑惑Nacos和Eureka、Config的區(qū)別這里用一張表講清楚工具核心功能優(yōu)勢(shì)不足Nacos服務(wù)注冊(cè)發(fā)現(xiàn)配置中心服務(wù)管理功能全面、易部署、支持動(dòng)態(tài)配置、高可用生態(tài)相對(duì)Spring Cloud原生工具稍弱Eureka僅服務(wù)注冊(cè)發(fā)現(xiàn)Spring Cloud原生適配好已停止更新、無(wú)配置中心功能Spring Cloud Config僅配置中心Spring Cloud生態(tài)無(wú)縫銜接無(wú)服務(wù)注冊(cè)發(fā)現(xiàn)功能、動(dòng)態(tài)配置需配合Bus結(jié)論Nacos是“一站式解決方案”對(duì)小白和企業(yè)都更友好性價(jià)比最高。二、環(huán)境搭建Nacos下載安裝與啟動(dòng)Windows/Linux通用Nacos的安裝非常簡(jiǎn)單支持Windows和Linux系統(tǒng)且無(wú)需復(fù)雜的依賴配置小白跟著步驟走就能成功。2.1 環(huán)境準(zhǔn)備Nacos基于Java開(kāi)發(fā)因此必須先安裝JDK這是前提JDK版本要求JDK 1.8及以上推薦1.8兼容性最好驗(yàn)證JDK環(huán)境打開(kāi)命令行輸入java -version若顯示JDK版本信息如1.8.0_301則說(shuō)明環(huán)境正常。# 若未安裝JDK需先下載安裝 # Windows從Oracle官網(wǎng)下載JDK 1.8安裝后配置環(huán)境變量JAVA_HOME指向JDK安裝目錄Path添加%JAVA_HOME%in # Linux執(zhí)行即可快速安裝。 yum install java-1.8.0-openjdk-devel2.2 Windows系統(tǒng)安裝與啟動(dòng)下載Nacos安裝包 進(jìn)入Nacos官網(wǎng)下載頁(yè)https://github.com/alibaba/nacos/releases選擇穩(wěn)定版本推薦2.x版本如2.2.3下載“zip”格式的安裝包對(duì)應(yīng)Windows系統(tǒng)。解壓安裝包 將下載的zip包解壓到任意目錄如D: acos解壓后目錄結(jié)構(gòu)如下核心目錄說(shuō)明bin啟動(dòng)腳本目錄startup.cmd是Windows啟動(dòng)腳本conf配置文件目錄nacos-server.properties是核心配置文件data數(shù)據(jù)存儲(chǔ)目錄默認(rèn)存儲(chǔ)在內(nèi)存持久化時(shí)會(huì)用到啟動(dòng)Nacos Nacos支持“單機(jī)模式”和“集群模式”小白入門先從單機(jī)模式開(kāi)始打開(kāi)命令提示符CMD進(jìn)入Nacos的bin目錄cd D: acosin執(zhí)行啟動(dòng)命令startup.cmd -m standalone-m standalone表示單機(jī)模式必須加上否則默認(rèn)是集群模式會(huì)啟動(dòng)失敗啟動(dòng)成功標(biāo)識(shí)命令行窗口顯示“Nacos started successfully in standalone mode.”同時(shí)會(huì)彈出Nacos的日志窗口。訪問(wèn)Nacos控制臺(tái) 打開(kāi)瀏覽器輸入地址http://localhost:8848/nacos進(jìn)入Nacos登錄頁(yè)面。默認(rèn)賬號(hào)密碼都是nacos登錄后即可看到Nacos的管理控制臺(tái)說(shuō)明啟動(dòng)成功停止Nacos直接關(guān)閉啟動(dòng)Nacos的命令行窗口或在bin目錄執(zhí)行shutdown.cmd命令。2.3 Linux系統(tǒng)安裝與啟動(dòng)以CentOS為例下載安裝包 通過(guò)wget命令直接下載推薦或下載后上傳到Linux服務(wù)器# 下載2.2.3版本可替換為最新穩(wěn)定版wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz解壓安裝包# 解壓到/usr/local目錄tar -zxvf nacos-server-2.2.3.tar.gz -C /usr/local/# 進(jìn)入Nacos目錄cd /usr/local/nacos/啟動(dòng)Nacos# 進(jìn)入bin目錄cd bin/# 單機(jī)模式啟動(dòng)sh startup.sh -m standalone驗(yàn)證啟動(dòng)執(zhí)行ps -ef | grep nacos若能看到nacos的進(jìn)程說(shuō)明啟動(dòng)成功。訪問(wèn)控制臺(tái)Linux服務(wù)器需開(kāi)放8848端口Nacos默認(rèn)端口執(zhí)行命令# 開(kāi)放8848端口firewall-cmd --zonepublic --add-port8848/tcp --permanent# 重啟防火墻firewall-cmd --reload然后在本地瀏覽器輸入http://Linux服務(wù)器IP:8848/nacos用nacos/nacos登錄即可。停止Nacoscd /usr/local/nacos/bin/sh shutdown.sh2.4 核心配置修改可選生產(chǎn)環(huán)境必備默認(rèn)配置僅適用于本地測(cè)試生產(chǎn)環(huán)境需要修改核心配置如端口、數(shù)據(jù)庫(kù)持久化配置文件在conf/nacos-server.properties修改默認(rèn)端口將server.port8848改為自定義端口如8080避免端口沖突。配置數(shù)據(jù)庫(kù)持久化默認(rèn)Nacos將數(shù)據(jù)存在內(nèi)存中重啟后數(shù)據(jù)丟失生產(chǎn)環(huán)境需改為數(shù)據(jù)庫(kù)存儲(chǔ)以MySQL為例 創(chuàng)建數(shù)據(jù)庫(kù)新建名為nacos_config的數(shù)據(jù)庫(kù)編碼為UTF-8。導(dǎo)入初始化腳本執(zhí)行conf/nacos-mysql.sql腳本創(chuàng)建表結(jié)構(gòu)和初始化數(shù)據(jù)。修改配置文件注釋掉內(nèi)存存儲(chǔ)配置開(kāi)啟MySQL配置填寫數(shù)據(jù)庫(kù)連接信息### If use MySQL as datasource: spring.datasource.platformmysql ### Count of DB: db.num1 ### Connect URL of DB: db.url.0jdbc:mysql://127.0.0.1:3306/nacos_config? characterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseUnicode trueuseSSLfalseserverTimezoneUTC db.user.0root db.password.0123456重啟Nacos配置生效數(shù)據(jù)會(huì)持久化到MySQL中。三、核心功能一服務(wù)注冊(cè)發(fā)現(xiàn)Spring Cloud整合實(shí)戰(zhàn)服務(wù)注冊(cè)發(fā)現(xiàn)是Nacos最核心的功能之一我們通過(guò)“Spring Cloud Alibaba Nacos”的組合來(lái)實(shí)戰(zhàn)模擬“訂單服務(wù)調(diào)用支付服務(wù)”的場(chǎng)景讓小白直觀理解服務(wù)之間如何通過(guò)Nacos通信。這里使用Spring Cloud Alibaba因?yàn)樗前⒗锕俜酵瞥龅呐cNacos的兼容性最好版本搭配需注意Nacos 2.x對(duì)應(yīng)Spring Cloud Alibaba 2021.x版本JDK 1.8。3.1 環(huán)境準(zhǔn)備開(kāi)發(fā)工具IntelliJ IDEA或Eclipse項(xiàng)目管理Maven3.6框架版本Spring Boot 2.6.x Spring Cloud Alibaba 2021.0.4.0 Nacos 2.2.33.2 搭建父工程統(tǒng)一管理依賴創(chuàng)建一個(gè)Maven父工程nacos-demo用于統(tǒng)一管理子模塊的依賴版本避免版本沖突。?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion !-- 父工程信息 -- groupIdcom.example/groupIdartifactIdnacos-demo/artifactId version1.0-SNAPSHOT/version packagingpom/packaging !-- 子模塊聲明后續(xù)創(chuàng)建 -- modules modulenacos-order-service/module modulenacos-payment-service/module /modules !-- 統(tǒng)一依賴版本管理 -- properties maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target spring-boot.version2.6.13/spring-boot.version spring-cloud-alibaba.version2021.0.4.0/spring-cloud-alibaba.version /properties !-- 依賴管理 -- dependencyManagement dependencies !-- Spring Boot 依賴 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version${spring-boot.version}/version pomscopeimport/scope /dependency !-- Spring Cloud Alibaba 依賴 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring-cloud-alibaba.version}/version pomscopeimport/scope /dependency /dependencies /dependencyManagement /project?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion !-- 父工程信息 -- groupIdcom.example/groupId artifactIdnacos-demo/artifactId version1.0-SNAPSHOT/version packagingpom/packaging !-- 子模塊聲明后續(xù)創(chuàng)建 -- modules modulenacos-order-service/module modulenacos-payment-service/module /modules !-- 統(tǒng)一依賴版本管理 -- properties maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target spring-boot.version2.6.13/spring-boot.version spring-cloud-alibaba.version2021.0.4.0/spring-cloud-alibaba.version /properties !-- 依賴管理 -- dependencyManagement dependencies !-- Spring Boot 依賴 -- dependency groupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactId version${spring-boot.version}/version pomscopeimport/scope /dependency !-- Spring Cloud Alibaba 依賴 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring-cloud-alibaba.version}/version pomscopeimport/scope /dependency /dependencies /dependencyManagement /project3.3 搭建支付服務(wù)服務(wù)提供者支付服務(wù)是“服務(wù)提供者”對(duì)外提供支付接口會(huì)將自己的信息注冊(cè)到Nacos中。步驟1創(chuàng)建子模塊nacos-payment-service在父工程下創(chuàng)建Maven子模塊ArtifactId為nacos-payment-service。步驟2添加依賴pom.xml?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd parent groupIdcom.example/groupId artifactIdnacos-demo/artifactId version1.0-SNAPSHOT/version /parent modelVersion4.0.0/modelVersion artifactIdnacos-payment-service/artifactId dependencies !-- Spring Boot Web 依賴提供HTTP接口 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- Nacos 服務(wù)注冊(cè)發(fā)現(xiàn)依賴 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency !-- 測(cè)試依賴 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies /project步驟3編寫配置文件application.yml在src/main/resources下創(chuàng)建application.yml配置服務(wù)名稱、端口、Nacos地址server: port: 8001 # 支付服務(wù)端口 spring: application: name: nacos-payment-service # 服務(wù)名稱Nacos注冊(cè)的服務(wù)名非常重要 cloud: nacos: discovery: server-addr: localhost:8848 # Nacos服務(wù)地址若Nacos在Linux改為L(zhǎng)inux的IP步驟4編寫啟動(dòng)類添加服務(wù)注冊(cè)注解創(chuàng)建啟動(dòng)類PaymentApplication添加EnableDiscoveryClient注解標(biāo)識(shí)該服務(wù)要注冊(cè)到Nacospackage com.example.payment; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; SpringBootApplication EnableDiscoveryClient // 開(kāi)啟服務(wù)注冊(cè)發(fā)現(xiàn)功能 public class PaymentApplication { public static void main(String[] args) { SpringApplication.run(PaymentApplication.class, args); } }步驟5編寫支付接口服務(wù)提供者接口創(chuàng)建PaymentController提供一個(gè)簡(jiǎn)單的支付接口package com.example.payment.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; RestController public class PaymentController { // 注入服務(wù)端口用于后續(xù)驗(yàn)證負(fù)載均衡 Value(${server.port}) private String serverPort; // 支付接口根據(jù)訂單號(hào)返回支付結(jié)果 GetMapping(/payment/nacos/{orderId}) public String paymentInfo(PathVariable(orderId) Long orderId) { return 訂單支付成功訂單號(hào) orderId 服務(wù)端口 serverPort; } }步驟6啟動(dòng)支付服務(wù)驗(yàn)證注冊(cè)結(jié)果啟動(dòng)PaymentApplication然后登錄Nacos控制臺(tái)進(jìn)入“服務(wù)管理→服務(wù)列表”若能看到“nacos-payment-service”服務(wù)說(shuō)明服務(wù)注冊(cè)成功3.4 搭建訂單服務(wù)服務(wù)消費(fèi)者訂單服務(wù)是“服務(wù)消費(fèi)者”需要調(diào)用支付服務(wù)的接口它會(huì)從Nacos中獲取支付服務(wù)的地址然后發(fā)起調(diào)用。步驟1創(chuàng)建子模塊nacos-order-service與支付服務(wù)類似在父工程下創(chuàng)建子模塊nacos-order-service。步驟2添加依賴pom.xml除了基礎(chǔ)依賴消費(fèi)者需要添加spring-cloud-starter-openfeign依賴用于服務(wù)調(diào)用?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd parent groupIdcom.example/groupId artifactIdnacos-demo/artifactId version1.0-SNAPSHOT/version /parent modelVersion4.0.0/modelVersion artifactIdnacos-order-service/artifactId dependencies !-- Spring Boot Web 依賴 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- Nacos 服務(wù)注冊(cè)發(fā)現(xiàn)依賴 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency !-- OpenFeign 依賴用于服務(wù)調(diào)用 -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId /dependency !-- 測(cè)試依賴 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies /project步驟3編寫配置文件application.ymlserver: port: 81 # 訂單服務(wù)端口 spring: application: name: nacos-order-service # 訂單服務(wù)名稱 cloud: nacos: discovery: server-addr: localhost:8848 # Nacos服務(wù)地址步驟4編寫啟動(dòng)類開(kāi)啟服務(wù)注冊(cè)和Feign添加EnableDiscoveryClient服務(wù)注冊(cè)和EnableFeignClients開(kāi)啟Feign調(diào)用注解package com.example.order; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; SpringBootApplication EnableDiscoveryClient // 服務(wù)注冊(cè) EnableFeignClients // 開(kāi)啟Feign服務(wù)調(diào)用 public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); } }步驟5編寫Feign客戶端調(diào)用支付服務(wù)Feign是聲明式服務(wù)調(diào)用工具通過(guò)接口注解的方式即可調(diào)用遠(yuǎn)程服務(wù)無(wú)需手動(dòng)拼接URL。package com.example.order.feign; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; // 標(biāo)注要調(diào)用的服務(wù)名稱Nacos中的服務(wù)名 FeignClient(value nacos-payment-service) public interface PaymentFeignService { // 方法簽名與支付服務(wù)的接口完全一致 GetMapping(/payment/nacos/{orderId}) String paymentInfo(PathVariable(orderId) Long orderId); }步驟6編寫訂單接口調(diào)用支付服務(wù)創(chuàng)建OrderController注入Feign客戶端調(diào)用支付服務(wù)接口package com.example.order.controller; import com.example.order.feign.PaymentFeignService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; RestController public class OrderController { // 注入Feign客戶端 Autowired private PaymentFeignService paymentFeignService; // 訂單接口調(diào)用支付服務(wù) GetMapping(/order/payment/{orderId}) public String createOrder(PathVariable(orderId) Long orderId) { // 調(diào)用支付服務(wù)像調(diào)用本地方法一樣簡(jiǎn)單 return paymentFeignService.paymentInfo(orderId); } }步驟7測(cè)試服務(wù)調(diào)用確保Nacos已啟動(dòng)支付服務(wù)和訂單服務(wù)都已啟動(dòng)。打開(kāi)瀏覽器訪問(wèn)訂單服務(wù)接口http://localhost:81/order/payment/123456。若返回“訂單支付成功訂單號(hào)123456服務(wù)端口8001”說(shuō)明服務(wù)調(diào)用成功此時(shí)你已經(jīng)實(shí)現(xiàn)了基于Nacos的服務(wù)注冊(cè)發(fā)現(xiàn)和服務(wù)調(diào)用這就是微服務(wù)的核心流程3.5 擴(kuò)展服務(wù)負(fù)載均衡Nacos自帶Nacos整合了Ribbon負(fù)載均衡組件默認(rèn)支持輪詢負(fù)載均衡策略我們通過(guò)啟動(dòng)多個(gè)支付服務(wù)實(shí)例來(lái)驗(yàn)證。在IDEA中復(fù)制支付服務(wù)的啟動(dòng)配置修改端口為8002VM options填-Dserver.port8002。啟動(dòng)8001和8002兩個(gè)支付服務(wù)實(shí)例在Nacos控制臺(tái)可看到該服務(wù)有兩個(gè)實(shí)例。多次訪問(wèn)http://localhost:81/order/payment/123456返回結(jié)果會(huì)交替顯示“服務(wù)端口8001”和“服務(wù)端口8002”說(shuō)明負(fù)載均衡生效四、核心功能二配置中心動(dòng)態(tài)配置管理傳統(tǒng)開(kāi)發(fā)中配置文件改一次就要重啟服務(wù)非常麻煩。Nacos配置中心能集中管理配置支持動(dòng)態(tài)推送修改配置后服務(wù)無(wú)需重啟即可生效。我們繼續(xù)基于上面的項(xiàng)目實(shí)戰(zhàn)。4.1 核心概念配置管理的核心要素在使用Nacos配置中心前先搞懂三個(gè)核心概念這是配置文件命名的關(guān)鍵Data ID配置文件的唯一標(biāo)識(shí)格式為${spring.application.name}-${profile}.${file-extension}如“nacos-payment-service-dev.yml”。Group配置分組默認(rèn)是“DEFAULT_GROUP”用于區(qū)分不同環(huán)境或業(yè)務(wù)的配置如“DEV_GROUP”“PROD_GROUP”。Namespace配置命名空間用于區(qū)分不同項(xiàng)目或環(huán)境如“開(kāi)發(fā)環(huán)境”“測(cè)試環(huán)境”“生產(chǎn)環(huán)境”默認(rèn)是“public”。4.2 實(shí)戰(zhàn)支付服務(wù)整合Nacos配置中心我們將支付服務(wù)的數(shù)據(jù)庫(kù)連接配置模擬放到Nacos配置中心實(shí)現(xiàn)動(dòng)態(tài)修改。4.2.1 步驟1添加配置中心依賴在支付服務(wù)的pom.xml中添加Nacos配置中心依賴!-- Nacos 配置中心依賴 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency4.2.2 步驟2添加配置中心配置文件bootstrap.yml配置中心的配置需要放在bootstrap.yml中而非application.yml因?yàn)閎ootstrap.yml的加載優(yōu)先級(jí)高于application.yml能優(yōu)先加載配置中心的配置。spring: application: name: nacos-payment-service # 服務(wù)名稱用于拼接Data ID cloud: nacos: config: server-addr: localhost:8848 # Nacos配置中心地址 file-extension: yaml # 配置文件格式 group: DEFAULT_GROUP # 配置分組 namespace: public # 命名空間默認(rèn)public profiles: active: dev # 環(huán)境標(biāo)識(shí)用于拼接Data ID根據(jù)上述配置Nacos會(huì)自動(dòng)去拉取Data ID為“nacos-payment-service-dev.yaml”的配置。4.2.3 步驟3在Nacos控制臺(tái)創(chuàng)建配置登錄Nacos控制臺(tái)進(jìn)入“配置管理→配置列表”點(diǎn)擊“”號(hào)新建配置。填寫配置信息 Data IDnacos-payment-service-dev.yaml對(duì)應(yīng)bootstrap.yml的配置GroupDEFAULT_GROUP配置格式Y(jié)AML配置內(nèi)容模擬數(shù)據(jù)庫(kù)連接配置spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useSSLfalse username: root password: 123456點(diǎn)擊“發(fā)布”配置創(chuàng)建成功。4.2.4 步驟4在服務(wù)中獲取配置動(dòng)態(tài)刷新在支付服務(wù)中編寫接口獲取Nacos配置中心的配置并實(shí)現(xiàn)動(dòng)態(tài)刷新修改配置后無(wú)需重啟服務(wù)。package com.example.payment.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController RefreshScope // 關(guān)鍵注解開(kāi)啟配置動(dòng)態(tài)刷新 public class ConfigController { // 獲取自定義配置 Value(${payment.msg}) private String paymentMsg; Value(${payment.timeout}) private Integer timeout; // 獲取數(shù)據(jù)庫(kù)配置僅演示實(shí)際項(xiàng)目中會(huì)注入到數(shù)據(jù)源 Value(${spring.datasource.username}) private String dbUsername; GetMapping(/payment/config) public String getConfig() { return 配置信息msg paymentMsg , timeout timeout , dbUsername dbUsername; } }RefreshScope注解是實(shí)現(xiàn)動(dòng)態(tài)刷新的核心必須添加到需要獲取配置的類上。4.2.5 步驟5測(cè)試配置獲取與動(dòng)態(tài)刷新啟動(dòng)支付服務(wù)8001訪問(wèn)http://localhost:8001/payment/config可看到配置中心的配置信息。在Nacos控制臺(tái)修改配置內(nèi)容如將payment.msg改為“支付服務(wù)動(dòng)態(tài)修改配置”點(diǎn)擊“發(fā)布”。再次訪問(wèn)上述接口無(wú)需重啟服務(wù)即可看到修改后的配置信息動(dòng)態(tài)刷新生效4.3 進(jìn)階多環(huán)境配置管理Namespace實(shí)際開(kāi)發(fā)中存在開(kāi)發(fā)、測(cè)試、生產(chǎn)多個(gè)環(huán)境可通過(guò)Namespace區(qū)分在Nacos控制臺(tái)創(chuàng)建命名空間進(jìn)入“配置管理→命名空間”點(diǎn)擊“新建命名空間”填寫名稱“dev”“test”“prod”系統(tǒng)會(huì)生成唯一的命名空間ID。在對(duì)應(yīng)命名空間下創(chuàng)建配置如在“dev”命名空間創(chuàng)建支付服務(wù)的開(kāi)發(fā)環(huán)境配置。修改服務(wù)的bootstrap.yml指定命名空間IDspring: cloud: nacos: config: namespace: 8f8a8b90-xxxx-xxxx-xxxx-1234567890ab # 替換為dev命名空間的ID啟動(dòng)服務(wù)即可加載對(duì)應(yīng)環(huán)境的配置。五、Nacos集群部署生產(chǎn)環(huán)境必備單機(jī)模式僅適用于測(cè)試生產(chǎn)環(huán)境必須部署Nacos集群確保高可用。Nacos集群部署有兩種方式基于文件存儲(chǔ)的集群簡(jiǎn)單和基于MySQL的集群生產(chǎn)推薦這里講解生產(chǎn)環(huán)境推薦的“MySQL集群模式”。5.1 集群部署架構(gòu)Nacos集群的核心架構(gòu)3個(gè)Nacos節(jié)點(diǎn) 1個(gè)MySQL數(shù)據(jù)庫(kù)存儲(chǔ)集群配置和數(shù)據(jù) 1個(gè)Nginx負(fù)載均衡入口。這里用一臺(tái)Linux服務(wù)器模擬3個(gè)Nacos節(jié)點(diǎn)端口8848、8849、8850實(shí)際生產(chǎn)環(huán)境建議部署在不同服務(wù)器。5.2 部署步驟Linux環(huán)境步驟1準(zhǔn)備MySQL數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)nacos_config與單機(jī)模式的持久化數(shù)據(jù)庫(kù)一致。導(dǎo)入集群初始化腳本執(zhí)行conf/nacos-mysql.sql與單機(jī)模式的腳本相同。步驟2配置Nacos集群節(jié)點(diǎn)復(fù)制3份Nacos安裝包分別命名為nacos-8848、nacos-8849、nacos-8850。修改每個(gè)節(jié)點(diǎn)的配置文件conf/nacos-server.properties 修改端口分別改為8848、8849、8850。配置MySQL連接與單機(jī)模式的數(shù)據(jù)庫(kù)配置一致指向同一臺(tái)MySQL。創(chuàng)建集群配置文件conf/cluster.conf 在每個(gè)節(jié)點(diǎn)的conf目錄下創(chuàng)建cluster.conf填寫所有集群節(jié)點(diǎn)的地址192.168.1.100:8848192.168.1.100:8849192.168.1.100:8850注意必須填寫Linux服務(wù)器的實(shí)際IP不能用localhost。步驟3啟動(dòng)所有Nacos節(jié)點(diǎn)# 啟動(dòng)8848節(jié)點(diǎn) cd /usr/local/nacos-8848/bin/ sh startup.sh # 啟動(dòng)8849節(jié)點(diǎn) cd /usr/local/nacos-8849/bin/ sh startup.sh # 啟動(dòng)8850節(jié)點(diǎn) cd /usr/local/nacos-8850/bin/ sh startup.sh驗(yàn)證啟動(dòng)執(zhí)行ps -ef | grep nacos應(yīng)能看到3個(gè)Nacos進(jìn)程。步驟4配置Nginx負(fù)載均衡安裝Nginx若未安裝yum install nginx。修改Nginx配置文件/etc/nginx/nginx.conf添加負(fù)載均衡配置http { upstream nacos-cluster { server 192.168.1.100:8848; server 192.168.1.100:8849; server 192.168.1.100:8850; } server { listen 80; server_name localhost; location / { proxy_pass http://nacos-cluster; } } }啟動(dòng)Nginxsystemctl start nginx。步驟5驗(yàn)證集群訪問(wèn)Nginx入口http://192.168.1.100/nacos用nacos/nacos登錄。進(jìn)入“集群管理→節(jié)點(diǎn)列表”可看到3個(gè)Nacos節(jié)點(diǎn)都處于“健康”狀態(tài)集群部署成功服務(wù)注冊(cè)測(cè)試將之前的支付服務(wù)的Nacos地址改為Nginx的地址192.168.1.100:80啟動(dòng)服務(wù)能成功注冊(cè)到Nacos集群。六、Nacos進(jìn)階服務(wù)治理與監(jiān)控除了核心的注冊(cè)發(fā)現(xiàn)和配置中心功能Nacos還提供了豐富的服務(wù)治理能力幫助運(yùn)維和開(kāi)發(fā)人員更好地管理微服務(wù)。6.1 服務(wù)健康檢查Nacos會(huì)定期對(duì)注冊(cè)的服務(wù)進(jìn)行健康檢查若服務(wù)實(shí)例異常會(huì)自動(dòng)將其從服務(wù)列表中移除避免請(qǐng)求調(diào)用到故障服務(wù)。健康檢查方式默認(rèn)是HTTP方式通過(guò)訪問(wèn)服務(wù)的/actuator/health接口也支持TCP和MySQL方式。開(kāi)啟Spring Boot Actuator服務(wù)需添加依賴暴露健康檢查接口dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency配置暴露接口management: endpoints: web: exposure: include: * # 暴露所有監(jiān)控接口6.2 服務(wù)元數(shù)據(jù)管理服務(wù)元數(shù)據(jù)是服務(wù)的附加信息如服務(wù)版本、負(fù)責(zé)人、聯(lián)系方式可在Nacos控制臺(tái)或配置文件中設(shè)置用于服務(wù)管理和排查問(wèn)題。在服務(wù)的application.yml中配置元數(shù)據(jù)spring: cloud: nacos: discovery: metadata: version: 1.0 author: zhangsan phone: 13800138000配置后在Nacos控制臺(tái)的“服務(wù)詳情”中可查看元數(shù)據(jù)信息。6.3 服務(wù)監(jiān)控與告警Nacos支持與Prometheus、Grafana等監(jiān)控工具集成實(shí)現(xiàn)服務(wù)指標(biāo)的監(jiān)控和告警開(kāi)啟Nacos的監(jiān)控指標(biāo)暴露修改conf/application.properties開(kāi)啟Prometheus監(jiān)控。部署Prometheus配置Nacos的監(jiān)控地址抓取監(jiān)控指標(biāo)。部署Grafana導(dǎo)入Nacos的監(jiān)控儀表盤實(shí)現(xiàn)可視化監(jiān)控和告警配置。七、Nacos性能優(yōu)化生產(chǎn)環(huán)境調(diào)優(yōu)Nacos的性能優(yōu)化主要從配置、JVM、數(shù)據(jù)庫(kù)三個(gè)層面入手確保高并發(fā)場(chǎng)景下的穩(wěn)定性。7.1 配置優(yōu)化關(guān)閉不必要的功能若僅用服務(wù)注冊(cè)發(fā)現(xiàn)可關(guān)閉配置中心功能修改conf/application.properties設(shè)置nacos.config.enabledfalse。優(yōu)化健康檢查間隔根據(jù)服務(wù)穩(wěn)定性調(diào)整健康檢查間隔默認(rèn)5秒穩(wěn)定服務(wù)可延長(zhǎng)至10秒減少Nacos的壓力。配置數(shù)據(jù)分片大規(guī)模集群可通過(guò)Namespace和Group對(duì)配置和服務(wù)進(jìn)行分片管理避免單命名空間數(shù)據(jù)過(guò)多。7.2 JVM優(yōu)化Nacos基于Java開(kāi)發(fā)JVM參數(shù)優(yōu)化對(duì)性能影響很大修改bin/startup.sh中的JVM參數(shù)# 推薦配置根據(jù)服務(wù)器內(nèi)存調(diào)整8G內(nèi)存示例 JAVA_OPT${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize128m -XX:MaxMetaspaceSize320m # 解釋 # -Xms2g初始堆內(nèi)存2G # -Xmx2g最大堆內(nèi)存2G與初始一致避免頻繁擴(kuò)容 # -Xmn1g年輕代內(nèi)存1G # -XX:MetaspaceSize元空間初始大小7.3 數(shù)據(jù)庫(kù)優(yōu)化使用MySQL主從復(fù)制生產(chǎn)環(huán)境中Nacos的數(shù)據(jù)庫(kù)建議配置主從復(fù)制主庫(kù)寫入從庫(kù)讀取提升數(shù)據(jù)庫(kù)性能。索引優(yōu)化Nacos的核心表如config_info、service_info已默認(rèn)創(chuàng)建索引避免手動(dòng)刪除索引。定期清理歷史數(shù)據(jù)配置中心的歷史配置和服務(wù)的歷史實(shí)例信息可定期清理避免數(shù)據(jù)庫(kù)表過(guò)大。7.4 高并發(fā)優(yōu)化增加Nacos節(jié)點(diǎn)高并發(fā)場(chǎng)景下可增加Nacos集群節(jié)點(diǎn)數(shù)量建議3-5個(gè)分擔(dān)請(qǐng)求壓力。配置緩存開(kāi)啟Nacos的本地緩存默認(rèn)開(kāi)啟減少對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)提升配置查詢性能。使用Nginx緩存在Nginx層面配置靜態(tài)資源緩存如Nacos控制臺(tái)的靜態(tài)資源減少Nacos的靜態(tài)資源請(qǐng)求壓力。八、小白避坑指南常見(jiàn)問(wèn)題與解決方案小白在使用Nacos時(shí)容易遇到一些問(wèn)題這里整理了高頻問(wèn)題及解決方案8.1 服務(wù)注冊(cè)失敗原因1Nacos未啟動(dòng)或地址配置錯(cuò)誤服務(wù)配置的Nacos地址server-addr與實(shí)際Nacos地址不一致或Nacos未正常啟動(dòng)。解決方案檢查Nacos進(jìn)程是否存在確認(rèn)服務(wù)配置文件中spring.cloud.nacos.discovery.server-addr與Nacos地址IP端口完全一致Linux環(huán)境避免使用localhost改用服務(wù)器實(shí)際IP。原因2服務(wù)名稱含特殊字符Nacos服務(wù)名稱spring.application.name包含下劃線以外的特殊字符如、#導(dǎo)致注冊(cè)失敗。解決方案服務(wù)名稱僅使用字母、數(shù)字和下劃線如“nacos-payment-service”。原因3端口被占用服務(wù)端口被其他進(jìn)程占用導(dǎo)致服務(wù)無(wú)法啟動(dòng)自然無(wú)法注冊(cè)到Nacos。解決方案執(zhí)行netstat -anoWindows或netstat -tulpnLinux查看端口占用情況修改服務(wù)端口或關(guān)閉占用進(jìn)程。原因4依賴版本不匹配Spring Cloud Alibaba與Nacos版本不兼容如Nacos 2.x搭配Spring Cloud Alibaba 2.2.x。解決方案參考Nacos官方版本說(shuō)明使用匹配的版本組合如Nacos 2.2.3對(duì)應(yīng)Spring Cloud Alibaba 2021.0.4.0。8.2 配置中心動(dòng)態(tài)刷新不生效原因1未添加RefreshScope注解獲取配置的類未添加動(dòng)態(tài)刷新注解導(dǎo)致配置修改后無(wú)法感知。解決方案在Controller或配置類上添加RefreshScope注解。原因2Data ID配置錯(cuò)誤服務(wù)bootstrap.yml中配置的Data ID與Nacos控制臺(tái)創(chuàng)建的Data ID不一致如后綴用yml還是yaml混淆。解決方案確保Data ID格式為“服務(wù)名-環(huán)境.格式”與配置文件完全匹配如服務(wù)名是nacos-payment-service環(huán)境是dev格式是yaml則Data ID為“nacos-payment-service-dev.yaml”。原因3配置文件優(yōu)先級(jí)錯(cuò)誤將配置中心配置寫在application.yml而非bootstrap.yml中導(dǎo)致配置中心配置加載晚于本地配置。解決方案Nacos配置中心的相關(guān)配置server-addr、namespace等必須放在bootstrap.yml中。8.3 Nacos集群節(jié)點(diǎn)健康狀態(tài)異常原因1cluster.conf配置錯(cuò)誤集群配置文件中填寫的節(jié)點(diǎn)地址用localhost而非實(shí)際IP導(dǎo)致節(jié)點(diǎn)間無(wú)法通信。解決方案cluster.conf中所有節(jié)點(diǎn)均填寫服務(wù)器實(shí)際IP端口如“192.168.1.100:8848”。原因2數(shù)據(jù)庫(kù)連接失敗集群節(jié)點(diǎn)未正確配置MySQL連接或MySQL服務(wù)未啟動(dòng)導(dǎo)致節(jié)點(diǎn)初始化失敗。解決方案檢查nacos-server.properties中的數(shù)據(jù)庫(kù)配置url、用戶名、密碼是否正確確保MySQL服務(wù)正常運(yùn)行。原因3端口未開(kāi)放Linux環(huán)境下Nacos節(jié)點(diǎn)端口如8848、8849未開(kāi)放導(dǎo)致節(jié)點(diǎn)間無(wú)法通信。解決方案執(zhí)行firewall-cmd --add-port8848/tcp --permanent開(kāi)放端口重啟防火墻生效。8.4 服務(wù)調(diào)用超時(shí)原因1Feign超時(shí)配置不足Feign默認(rèn)超時(shí)時(shí)間較短1秒若服務(wù)響應(yīng)慢則會(huì)超時(shí)。解決方案在消費(fèi)者服務(wù)配置Feign超時(shí)時(shí)間ribbon: ReadTimeout: 5000 # 讀取超時(shí)時(shí)間 ConnectTimeout: 5000 # 連接超時(shí)時(shí)間原因2服務(wù)提供者未啟動(dòng)或異常被調(diào)用的服務(wù)實(shí)例未啟動(dòng)或處于健康檢查異常狀態(tài)。解決方案在Nacos控制臺(tái)確認(rèn)服務(wù)提供者實(shí)例處于“健康”狀態(tài)重啟異常實(shí)例。九、Nacos學(xué)習(xí)資源推薦從小白到專家想要深入掌握Nacos光看本文不夠結(jié)合官方資源和實(shí)戰(zhàn)練習(xí)才能快速進(jìn)階這里推薦一批經(jīng)過(guò)驗(yàn)證的優(yōu)質(zhì)資源9.1 官方資源最權(quán)威Nacos官方文檔https://nacos.io/zh-cn/docs/what-is-nacos.html涵蓋核心概念、部署指南、API文檔等中文版本小白也能輕松看懂。Nacos GitHub倉(cāng)庫(kù)https://github.com/alibaba/nacos獲取最新版本、提交Issue、查看源碼了解Nacos底層實(shí)現(xiàn)。Spring Cloud Alibaba官方文檔https://sca.aliyun.com/docs/2023/overview/學(xué)習(xí)Nacos與Spring Cloud Alibaba的整合最佳實(shí)踐。9.2 書籍與視頻系統(tǒng)學(xué)習(xí)書籍 《Spring Cloud Alibaba微服務(wù)實(shí)戰(zhàn)》詳細(xì)講解Nacos在微服務(wù)架構(gòu)中的落地場(chǎng)景包含大量實(shí)戰(zhàn)案例?!禢acos架構(gòu)與原理》深入Nacos底層架構(gòu)適合有一定基礎(chǔ)后進(jìn)階學(xué)習(xí)。視頻 阿里云官方視頻教程阿里云開(kāi)發(fā)者社區(qū)搜索“Nacos入門到實(shí)戰(zhàn)”免費(fèi)且權(quán)威配套實(shí)驗(yàn)環(huán)境。B站實(shí)戰(zhàn)教程搜索“Nacos 2.x實(shí)戰(zhàn)”推薦選擇帶項(xiàng)目實(shí)戰(zhàn)的課程邊學(xué)邊練。9.3 實(shí)戰(zhàn)練習(xí)鞏固提升搭建個(gè)人微服務(wù)項(xiàng)目基于NacosSpring Cloud Alibaba搭建包含用戶、訂單、支付的微服務(wù)架構(gòu)實(shí)現(xiàn)服務(wù)注冊(cè)發(fā)現(xiàn)、配置管理、服務(wù)調(diào)用全流程。參與開(kāi)源項(xiàng)目在GitHub上搜索Nacos相關(guān)的開(kāi)源項(xiàng)目如nacos-demo貢獻(xiàn)代碼或修復(fù)Bug積累實(shí)戰(zhàn)經(jīng)驗(yàn)。模擬生產(chǎn)問(wèn)題故意制造Nacos集群節(jié)點(diǎn)故障、服務(wù)注冊(cè)失敗等問(wèn)題練習(xí)排查和解決問(wèn)題的能力對(duì)應(yīng)本文“避坑指南”部分內(nèi)容。十、最后Nacos學(xué)習(xí)的核心建議很多小白學(xué)習(xí)Nacos時(shí)會(huì)陷入“只看不動(dòng)”的誤區(qū)記住Nacos是工具不是理論知識(shí)動(dòng)手實(shí)踐才是掌握它的唯一途徑。學(xué)習(xí)路徑建議 1. 搭建環(huán)境→2. 實(shí)現(xiàn)服務(wù)注冊(cè)發(fā)現(xiàn)→3. 整合配置中心→4. 部署集群→5. 性能優(yōu)化→6. 解決實(shí)際問(wèn)題 每一步都動(dòng)手操作遇到問(wèn)題先查官方文檔再結(jié)合本文的避坑指南堅(jiān)持一周就能入門一個(gè)月就能熟練運(yùn)用。Nacos作為阿里開(kāi)源的核心組件生態(tài)在不斷完善掌握它不僅能提升微服務(wù)開(kāi)發(fā)效率更是后端工程師的核心技能之一。希望本文能成為你學(xué)習(xí)Nacos的起點(diǎn)祝你在微服務(wù)的道路上越走越遠(yuǎn)
版權(quán)聲明: 本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

交通建設(shè)門戶網(wǎng)站網(wǎng)站建設(shè)服務(wù)支持

交通建設(shè)門戶網(wǎng)站,網(wǎng)站建設(shè)服務(wù)支持,如何在wordpress首頁(yè)顯示文章列表,德州建設(shè)局網(wǎng)站第一章#xff1a;醫(yī)療康復(fù) Agent 的方案調(diào)整在醫(yī)療康復(fù)領(lǐng)域#xff0c;智能 Agent 的核心價(jià)值

2026/01/21 17:06:01

網(wǎng)站開(kāi)發(fā)的階段網(wǎng)站關(guān)鍵詞都沒(méi)有了

網(wǎng)站開(kāi)發(fā)的階段,網(wǎng)站關(guān)鍵詞都沒(méi)有了,超級(jí)網(wǎng)站模板下載,做詳情頁(yè)的網(wǎng)站歐姆龍SCU模塊實(shí)現(xiàn)Modbus RTU與無(wú)協(xié)議通信 在現(xiàn)代工業(yè)自動(dòng)化系統(tǒng)中#xff0c;PLC 與各類智能設(shè)備的串行通信需求日益復(fù)

2026/01/21 15:33:01

網(wǎng)站鏈接優(yōu)化怎么做有沒(méi)有網(wǎng)站教做美食的

網(wǎng)站鏈接優(yōu)化怎么做,有沒(méi)有網(wǎng)站教做美食的,電商實(shí)訓(xùn)網(wǎng)站建設(shè)報(bào)告,營(yíng)銷策劃方案步驟用Vivado IP核搞定I2C主從通信#xff1a;從配置到調(diào)試的完整實(shí)戰(zhàn)路徑你有沒(méi)有遇到過(guò)這種情況#xff1a;明明

2026/01/22 23:32:01

專業(yè)網(wǎng)站設(shè)計(jì)團(tuán)隊(duì)電商網(wǎng)站開(kāi)發(fā)技術(shù)與維護(hù)

專業(yè)網(wǎng)站設(shè)計(jì)團(tuán)隊(duì),電商網(wǎng)站開(kāi)發(fā)技術(shù)與維護(hù),書店網(wǎng)站網(wǎng)站建設(shè)規(guī)劃書,動(dòng)漫制作專業(yè)簡(jiǎn)介目錄已開(kāi)發(fā)項(xiàng)目效果實(shí)現(xiàn)截圖開(kāi)發(fā)技術(shù)系統(tǒng)開(kāi)發(fā)工具#xff1a;核心代碼參考示例1.建立用戶稀疏矩陣#xff0c;用于用戶

2026/01/22 23:12:01

怎么修改wordpress目錄名字優(yōu)化seo方法

怎么修改wordpress目錄名字,優(yōu)化seo方法,建筑工程公司起名大全,wordpress修改上傳大小輕松駕馭字體世界#xff1a;開(kāi)源字體管理器讓字體管理不再頭疼#xff01;#x1f680; 【

2026/01/23 05:20:01