版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Nacos - 配置管理教學(xué)目標(biāo)1) 能夠說出配置中心的概念以及使用場景2) 了解主流配置中心3) 理解Nacos的功能特性4) 掌握Nacos的快速入門方法5)掌握Nacos安裝方式6)理解Nacos配置管理的概念及數(shù)據(jù)模型7)掌握使用Nacos臺進(jìn)行配置管理的操作方法8) 掌握Nacos分布式系統(tǒng)應(yīng)用的方法9) 掌握Nacos集群部署方式1. 什么是配置中心1.1 什么是配置應(yīng)用程序在啟動和運(yùn)行的時候往往需要據(jù)庫連接參數(shù)、啟動參數(shù)等。配置主要有以下幾個特點(diǎn):一些配置信息,配置基本上伴隨著應(yīng)用程序的整個生命周期,比如:數(shù)配置是于程序的只讀變量配置對于程序是只讀的,程序通過配置伴隨應(yīng)用的整個生
2、命周期配置來改變的行為,但是程序不應(yīng)該去改變配置配置貫穿于應(yīng)用的整個生命周期,應(yīng)用在啟動時通過配置來初始化,在運(yùn)行時根據(jù)配置調(diào)整行為。比如:啟動時需要配置可以有多種加載方式服務(wù)的端、系統(tǒng)在運(yùn)行過程中需要定時策略執(zhí)行定時任務(wù)等。常見的有程序內(nèi)部hard code,配置文件,環(huán)境變量,啟動參數(shù),基于數(shù)據(jù)庫等配置需要治理同一份程序在不同的環(huán)境(開發(fā),測試,生產(chǎn))、不同的集群(如不同的數(shù)據(jù)中心)經(jīng)常需要有不同的 配置,所以需要有完善的環(huán)境、集群配置管理1.2 什么是配置中心北京市昌平區(qū)建材城西路龍辦公樓一層:在微服務(wù)架構(gòu)中,從一個單體應(yīng)用,被拆分成分布式系統(tǒng)上一個個服務(wù)節(jié)點(diǎn)后,配置文件也必須跟著遷移(
3、分割),這樣配置就分散了,不僅如此,分散中還包含著冗余,如下圖:下圖顯示了配置中心的功能,配置中心將配置從各應(yīng)用中剝離出來,對配置進(jìn)行統(tǒng)一管理,應(yīng)用自身不需要 管理配置。去配置中心的服務(wù)流程如下:1、用戶在配置中心更新配置信息。2、服務(wù)A和服務(wù)B及時得到配置更新通知,從配置中心獲取配置。總得來說,配置中心就是一種統(tǒng)一管理各種應(yīng)用配置的基礎(chǔ)服務(wù)組件。在系統(tǒng)架構(gòu)中,配置中心是整個微服務(wù)基礎(chǔ)架構(gòu)體系中的一個組件,如下圖,它的功能看上去并不起眼,無非就是 配置的管理和存取,但它是整個微服務(wù)架構(gòu)中不可或缺的一環(huán)。北京市昌平區(qū)建材城西路龍辦公樓一層:總結(jié)一下,在傳統(tǒng)巨型單體應(yīng)用紛紛轉(zhuǎn)向細(xì)粒度微服務(wù)架構(gòu)的歷
4、史進(jìn)程中,配置中心是微服務(wù)化不可缺少的一個系統(tǒng)組件,在這種背景下中心化的配置服務(wù)即配置中心應(yīng)運(yùn)而生,一個的配置中心需要滿足如下特性:配置項(xiàng)容易和修改分布式環(huán)境下應(yīng)用配置的可管理性,即提供支持對配置的修改的檢視以把控風(fēng)險可以查看配置修改的歷史管理配置的能力不同部署環(huán)境下應(yīng)用配置的2 Nacos簡介性2.1 主流配置中心對比目前市面上用的比較多的配置中心有:Spring Cloud Cong、Apollo、Nacos和Disconf等。由于Disconf不再維護(hù),下面主要對比一下Spring Cloud Cong、Apollo和Nacos。北京市昌平區(qū)建材城西路龍辦公樓一層:從配置中心角度來看,性
5、能方面Nacos的讀寫性能最高,Apollo次之,Spring Cloud Cong依賴Git場景不適合開放的大規(guī)模自動化運(yùn)維API。功能方面Apollo最為完善,nacos具有Apollo大部分配置管理功能,而Spring CloudCong不帶運(yùn)維管理界面,需要自行開發(fā)。Nacos的一大優(yōu)勢是整合了中心、配置中心功能,部署和操作相比Apollo都要直觀簡單,因此它簡化了架構(gòu)復(fù)雜度,并減輕運(yùn)維及部署工作。綜合來看,Nacos的特點(diǎn)和優(yōu)勢還是比較明顯的,下面我們一起進(jìn)入Nacos的世界。2.2 Nacos簡介Nacos是阿里的一個開源,它是介紹是這樣的:微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)、配置管理、服務(wù)治
6、理的綜合型解決方案。北京市昌平區(qū)建材城西路龍辦公樓一層:對比項(xiàng)目Spring Cloud CongApolloNacos配置實(shí)時推送支持(Spring Cloud Bus)支持(HTTP長輪詢1s內(nèi))支持(HTTP長輪詢1s內(nèi))版本管理支持(Git)支持支持配置支持(Git)支持支持灰度發(fā)布支持支持不支持權(quán)限管理支持(依賴Git)支持不支持多集群支持支持支持多環(huán)境支持支持支持支持支持支持多語言只支持Java主流語言,提供了Open API主流語言,提供了Open API配置格式校驗(yàn)不支持支持支持單機(jī)讀(QPS)7(限流所致)900015000單擊寫(QPS)5(限流所致)110018003節(jié)點(diǎn)
7、讀(QPS)21(限流所致)27000450003節(jié)點(diǎn)寫(QPS)5(限流所致)33005600Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置管理、服務(wù)及流量管理。 Nacos 幫助您更敏捷和容易地構(gòu)建、交付和管理微Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu)的服務(wù)基礎(chǔ)設(shè)施。官網(wǎng)地址:2.3 Nacos特性Nacos主要提供以下四大功能:1. 服務(wù)發(fā)現(xiàn)與服務(wù)健康檢查Nacos使服務(wù)更容易,并通過DNS或HTTP接口發(fā)現(xiàn)其他服務(wù),Nacos還提供服務(wù)的實(shí)時健康檢查,以防止向不健康的主機(jī)或服務(wù)實(shí)例2. 動態(tài)配置管理請求。
8、動態(tài)配置服務(wù)您在所有環(huán)境中以集中和動態(tài)的方式管理所有服務(wù)的配置。Nacos消除了在更新配置時重新部署應(yīng)用程序,這使配置的更改更加高效和靈活。3. 動態(tài)DNS服務(wù)Nacos提供基于DNS 協(xié)議的服務(wù)發(fā)現(xiàn)能力,旨在支持異構(gòu)語言的服務(wù)發(fā)現(xiàn),支持將在Nacos上的服務(wù)以的方式端點(diǎn),讓應(yīng)用方便的查閱及發(fā)現(xiàn)。4. 服務(wù)和元數(shù)據(jù)管理Nacos 能從微建設(shè)的視角管理數(shù)據(jù)中心的所有服務(wù)及元數(shù)據(jù),包括管理服務(wù)的描述、生命周期、服務(wù)的靜態(tài)依賴分析、服務(wù)的健康狀態(tài)、服務(wù)的流量管理、路由及安全策略。這里動態(tài)配置管理的特性說明了Naocs的配置管理能力。3 Nacos快速入門3.1 安裝Nacos Server3.1.1
9、 預(yù)備環(huán)境準(zhǔn)備Nacos 依賴 Java 環(huán)境來運(yùn)行。如果您是從代碼開始構(gòu)建并運(yùn)行Nacos,還需要為此配置 Maven環(huán)境,請確保是在以下版本環(huán)境中安裝使用:1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac。2. 64 bit JDK 1.8+;3. Maven 3.2.x+;& 配置。& 配置。3.1.2源碼或者安裝包你可以通過源碼和包兩種方式來獲取 Nacos。從上源碼方式北京市昌平區(qū)建材城西路龍辦公樓一層:git clonecd nacos/alibaba/nacos.gitmvn Preleasena
10、cos clean install Uls al distribution/target/ change the $version to your actual pathcd distribution/target/nacosserver$version/nacos/bin編譯后壓縮包方式您可以從 最新穩(wěn)定版本nacos-server-$version.zip 包,本使用nacos-server-1.1.3版本。地址:/alibaba/nacos/releases后解壓:unzip nacosserver$version.zip 或者 tar xvf nacosserver$version.t
11、ar.gzcd nacos/bin3.1.3 啟動服務(wù)器nacos的默認(rèn)端口是8848,需要保證8848默認(rèn)端口沒有被其他進(jìn)程占用。 進(jìn)入安裝程序的bin目錄:Linux/Unix/Mac啟動方式:啟動命令(standalone代表著單機(jī)模式運(yùn)行,非集群模式):sh startup.sh -m standalone如果您使用的是ubuntu系統(tǒng),或者運(yùn)行報錯提示符號找不到,可嘗試如下運(yùn)行:bash startup.sh -m standaloneWindows啟動方式:啟動命令:cmd startup.cmd或者雙擊startup.cmd運(yùn)行文件。啟動,可通過瀏覽器,打開如下nacos臺登錄頁
12、面:北京市昌平區(qū)建材城西路龍辦公樓一層:使用默認(rèn)用戶名:nacos,默認(rèn):nacos 登錄即可打開主頁面。3.1.4 OPEN API 配置管理測試啟動nacos后,可通過nacos提供的http api驗(yàn)證nacos服務(wù)運(yùn)行是否正常。下邊我們通過 curl工具來測試nacos的open api:curl 是開發(fā)中常用令行工具,可以用作HTTP協(xié)議測試。本curl的windows版本:curl-7.66.0_2-win64-mingw,地址:完成進(jìn)入curl-7.66.0_2-win64-mingw的bin目錄,進(jìn)行下邊的測試,通過測試可發(fā)布配置nacos是否正常工作: curl -X POS
13、T "?上邊令表示向nacos發(fā)布一個配置:北京市昌平區(qū)建材城西路龍辦公樓一層:dataId=nacos.cfg.dataId&group=test&content=HelloWorld"”:獲取配置向nacos發(fā)布配置,就可以通過客戶端從nacos獲取配置信息,執(zhí)行下邊令:通過測試發(fā)現(xiàn),可以從nacos獲取前邊發(fā)布的配置:HelloWorld3.1.5.關(guān)閉服務(wù)器關(guān)閉nacos服務(wù)的方式如下:Linux/Unix/Mac方式:sh shutdown.shWindows方式:cmd shutdown.cmd或者雙擊shutdown.cmd運(yùn)行文件。北京市昌平
14、區(qū)建材城西路龍辦公樓一層:curl -X GET ""3.1.6.外部mysql數(shù)據(jù)庫支持單機(jī)模式時nacos默認(rèn)使用驟:數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的,若想使用外部mysqlnacos數(shù)據(jù),需要進(jìn)行以下步1. 安裝數(shù)據(jù)庫,版本要求:5.6.5+ ,mysql 8 以下2. 初始化mysql數(shù)據(jù)庫,新建數(shù)據(jù)庫nacos_cong,數(shù)據(jù)庫初始化文件:$nacoshome/conf/nacos- mysql.sql3. 修改$nacoshome/conf/perties文件,增加支持mysql數(shù)據(jù)源配置(目前只支持mysql),添加mysql數(shù)據(jù)源的url、用戶
15、名和。spring.datasource.platform=mysqldb.num=1 db.url.0=jdbc:mysql:/6:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos_devtestdb.password=youdontknow3.2 Nacos配置入門3.3.1 發(fā)布配置首先在nacos發(fā)布配置。瀏覽器在Nacos添加如下的配置:,打開nacos臺,并點(diǎn)擊
16、菜單配置管理->配置列表:Data ID: Group :配置格式:配置內(nèi)容:nacossimpledemo.yaml DEFAULT_GROUPYAMLcommon:config1: somethingNote: 注意dataid是以 properties(默認(rèn)的文件擴(kuò)展名方式)為擴(kuò)展名,這里使用yaml。第一步:點(diǎn)擊新增配置第二步:配置信息北京市昌平區(qū)建材城西路龍辦公樓一層:第三步:發(fā)布配置在第二步點(diǎn)擊“發(fā)布”,如下圖,點(diǎn)擊確定發(fā)布。第四步:配置3.3.2 nacos客戶端獲取配置我們需要新增一個名為nacos-simple-demo的項(xiàng)目,坐標(biāo)如下:北京市昌平區(qū)建材城西路龍辦公樓一
17、層:<groupId>com.itheima.nacos</groupId><artifactId>nacossimpledemo</artifactId><version>1.0SNAPSHOT</version>添加group ID 為 com.alibaba.nacos 和 artifact ID 為實(shí)現(xiàn)應(yīng)用的外部化配置。nacos-client 的 starter。用于實(shí)現(xiàn)項(xiàng)目中使用 Nacos 來<dependency><groupId>com.alibaba.nacos</grou
18、pId><artifactId>nacosclient</artifactId><version>1.1.3</version></dependency>(1)完整的pom.xml配置如下<?xml version="1.0" encoding="UTF8"?><project xmlns="xmlns:xsi=" xsi:schemaLocation="4.0.0.xsd">"instance"<g
19、roupId>com.itheima.nacos</groupId><version>1.0SNAPSHOT</version><artifactId>nacossimpledemo</artifactId><mVersion>4.0.0</mVersion><dependencies><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacosclient</artif
20、actId><version>1.1.3</version></dependency></dependencies></project>(2)獲取外部化配置新增java執(zhí)行類,并在執(zhí)行過程中獲取配置信息:package com.itheima.nacos;import com.alibaba.nacos.api.NacosFactory;import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.exception.NacosEx
21、ception;import java.util.Properties;/* author Administrator北京市昌平區(qū)建材城西路龍辦公樓一層:* version 1.0*/public class SimpleDemoMain public static void main(String args) throws NacosException /nacos 地址String serverAddr = ":8848"/Data IdString dataId = "nacossimpledemo.yaml"/GroupStri
22、ng group = "DEFAULT_GROUP" Properties properties = new Properties(); properties.put("serverAddr",serverAddr);ConfigService configService = NacosFactory.createConfigService(properties);/獲取配置,String dataId, String group, long timeoutMsString content = configService.getConfig(dataId
23、, group, 5000);System.out.println(content);啟動SimpleDemoMain,臺得到以下內(nèi)容:common:config1: something說明獲取配置。4 Nacos配置管理基礎(chǔ)應(yīng)用4.1 Nacos配置管理模型對于Nacos配置管理,通過Namespace、group、Data ID能夠到一個配置集。北京市昌平區(qū)建材城西路龍辦公樓一層:配置集(Data ID)在系統(tǒng)中,一個配置文件通常就是一個配置集,一個配置集可以包含了系統(tǒng)的各種配置信息,例如,一個配置集可 能包含了數(shù)據(jù)源、線程池、日志級別等配置項(xiàng)。每個配置集都可以定義一個有意義的名稱,就是配
24、置集的ID即Data ID。配置項(xiàng)配置集中包含的一個個配置內(nèi)容就是配置項(xiàng)。它代表一個具體的可配置的參數(shù)與其值域,通常以 key=value 的形式存在。例如我們常配置系統(tǒng)的日志輸出級別(logLevel=INFO|WARN|ERROR) 就是一個配置項(xiàng)。配置分組(Group)配置分組是對配置集進(jìn)行分組,通過一個有意義的字符串(如 Buy 或 Trade )來表示,不同的配置分組下可以有相同的配置集(Data ID)。當(dāng)您在 Nacos 上創(chuàng)建一個配置時,如果未填寫配置分組的名稱,則配置分組的名稱默認(rèn)采用 DEFAULT_GROUP 。配置分組的常見場景:可用于區(qū)分不同的項(xiàng)目或應(yīng)用,例如:學(xué)生管
25、理系統(tǒng)的配置集可以定義一個group為:STUDENT_GROUP。命名空間(Namespace)命名空間(namespace)可用于進(jìn)行不同環(huán)境的配置。例如可以開發(fā)環(huán)境、測試環(huán)境和生產(chǎn)環(huán)境,因?yàn)樗鼈兊呐渲每赡芨鞑幌嗤?,或者是不同的用戶,不同的開發(fā)使用同一個nacos管理各自的配置,可通過namespace最佳實(shí)踐。不同名空間下,可以存在相同名稱的配置分組(Group) 或 配置集。Nacos抽象定義了Namespace、Group、Data ID的概念,具體這幾個概念代表什么,取決于我們把它們看么,這里推薦給大家一種用法,如下圖:北京市昌平區(qū)建材城西路龍辦公樓一層:Namespace:代表不
26、同環(huán)境,如開發(fā)、測試、生產(chǎn)環(huán)境。Group:代表某項(xiàng)目,如XX醫(yī)療項(xiàng)目、XX項(xiàng)目DataId:每個項(xiàng)目下往往有若干個工程,每個配置集(DataId)是一個工程的主配置文件獲取某配置集的代碼:獲取配置集需要指定:1、nacos服務(wù)地址,必須指定2、namespace,如不指定默認(rèn)public3、group,如不指定默認(rèn) DEFAULT_GROUP 4、dataId,必須指定代碼如下:看懂即可不用運(yùn)行。/ 初始化配置服務(wù),String serverAddr = ":8848"String namespace = "ee247dded838425cb3
27、71029dab26232f" /開發(fā)環(huán)境/默認(rèn)組String group = "DEFAULT_GROUP"String dataId = "nacossimpledemo.yaml" Properties properties = new Properties(); properties.put("serverAddr", serverAddr); properties.put("namespace", namespace);ConfigService configService = NacosFac
28、tory.createConfigService(properties);/獲取配置,并輸出臺String content = configService.getConfig(dataId, group, 5000);System.out.println(content);以上代碼說明將從地址為:8848的nacos配置中心獲取配置,通過以下信息namespace:ee247dde-d838-425c-b371-029dab26232f 注意:namespace需要指定id。 group:DEFAULT_GROUPData Id:nacos-simple-demo.yaml配
29、置集:北京市昌平區(qū)建材城西路龍辦公樓一層:4.2 命名空間管理4.2.1 namespace設(shè)計namespace 的設(shè)計是 nacos 基于此做多環(huán)境以及多租戶(多個用戶共同使用nacos)數(shù)據(jù)(配置和服務(wù))的。從一個租戶(用戶)的角度來看,如果有多套不同的環(huán)境,那么這個時候可以根據(jù)指定的環(huán)境來創(chuàng)建不同的namespce,以此來實(shí)現(xiàn)多環(huán)境的。例如,你可能有開發(fā),測試和生產(chǎn)三個不同的環(huán)境,那么使用一套nacos 集群可以分別建以下三個不同的 namespace。如下圖所示:從多個租戶(用戶)的角度來看,每個租戶(用戶)可能會有的 namespace,每個租戶(用戶)的配置數(shù)據(jù)以及注冊的服務(wù)數(shù)據(jù)
30、都會歸屬到的 namespace 下,以此來實(shí)現(xiàn)多租戶間的數(shù)據(jù)。例如超級管理員分配了三個租戶,分別為空間。如下圖所示:、。分配好了之后,各租戶用的賬戶名和登錄后,創(chuàng)建名北京市昌平區(qū)建材城西路龍辦公樓一層:注意: 在此編寫之時,nacos多租戶(用戶)功能還在中。4.2.2 命名空間管理前面已經(jīng)介紹過,命名空間(Namespace)是用于多個環(huán)境的(如開發(fā)、測試、生產(chǎn)),而每個應(yīng)用在不同環(huán)境的同一個配置(如數(shù)據(jù)庫數(shù)據(jù)源)的值是不一樣的。因此,我們應(yīng)企業(yè)項(xiàng)目實(shí)際研發(fā)流程、環(huán)境進(jìn)行。如某軟件公司擁有開發(fā)、測試、生產(chǎn)三套環(huán)境,那么我們應(yīng)該這三個環(huán)境分別建立三個namespace。建立好所有namesp
31、ace后,在配置管理與服務(wù)管理模塊下所有頁面,都會包含用于切換namespace(環(huán)境)的tab按 鈕,如下圖:如果您在編寫程序獲取配置集過程中沒有感知到這個參數(shù)的輸入,那么 nacos 統(tǒng)一會使用一個默認(rèn)的 namespace作為輸入,nacos cong 會使用一個空字符串作為默認(rèn)的參數(shù)來初始化,對應(yīng)界面上就是public命名空間。Note: namesace 為 public 是 nacos 的一個保留空間,如果您需要創(chuàng)建的 namespace,不要和 public重名,以一個實(shí)際業(yè)務(wù)場景有具體語義的名字來命名,以免帶來字面上不容易區(qū)分namespace。是哪一個Note:在編寫程序獲取
32、配置集時,指定的namespace參數(shù)一定要填寫命名空間ID,而不是名稱運(yùn)行下邊的程序測試新建名空間:注意:namespace的值根據(jù)的環(huán)境確定。北京市昌平區(qū)建材城西路龍辦公樓一層:/ 初始化配置服務(wù),String serverAddr = ":8848"String namespace = "ee247dded838425cb371029dab26232f" /開發(fā)環(huán)境/默認(rèn)組String group = "DEFAULT_GROUP"String dataId = "nacossimpledemo.ya
33、ml" Properties properties = new Properties(); properties.put("serverAddr", serverAddr); properties.put("namespace", namespace);ConfigService configService = NacosFactory.createConfigService(properties);/獲取配置,并輸出臺String content = configService.getConfig(dataId, group, 5000);S
34、ystem.out.println(content);4.2 配置管理Nacos支持基于Namespace和Group的配置分組管理,以便用戶更靈活的根據(jù)塊等分組管理微服務(wù)的大量配置,在配置管理中主要提供了配置歷史版本、4.2.1 配置列表的需要按照環(huán)境或者應(yīng)用、模、訂閱者等管理能力。點(diǎn)擊Nacos臺的 配置管理->配置列表 菜單,即可看到以下界面展示:界面中展示了不同namespace下的配置集列表,可點(diǎn)擊左上角的不同namespace進(jìn)行切換。右上角“+"號或點(diǎn)擊某配置集后的 編輯 按鈕可進(jìn)入配置集編輯器。多配置格式編輯器Nacos支持 YAML、Properties、TE
35、XT、JSON、XML、HTML 等常見配置格式助用戶高效編輯的同時大幅降低格式錯誤帶來的風(fēng)險。編輯、語法、格式校驗(yàn),幫Nacos支持配置的能力,幫助用戶更好、更靈活的做到基于的配置分類及管理。同時支持用戶對配置及其變更進(jìn)行描述,方面多人或者跨團(tuán)隊協(xié)作管理配置。北京市昌平區(qū)建材城西路龍辦公樓一層:編輯DIFFNacos支持編輯DIFF能力,幫助用戶校驗(yàn)修改內(nèi)容,降低改錯帶來的風(fēng)險。配置集導(dǎo)出若干配置集,點(diǎn)擊 導(dǎo)出選中的配置 ,可獲得一個壓縮包:北京市昌平區(qū)建材城西路龍辦公樓一層:壓縮包內(nèi),包含了選中配置集所轉(zhuǎn)換的配置文件:配置集導(dǎo)入點(diǎn)擊右上角的 導(dǎo)入配置 ,可選擇導(dǎo)出的壓縮包文件,將壓縮包內(nèi)的
36、文件恢復(fù)為nacos配置集。北京市昌平區(qū)建材城西路龍辦公樓一層:配置集克隆點(diǎn)擊左下角 克隆 按鈕,將會彈出克隆框,此功能可用于將配置遷移到其他Namespace。4.2.2 歷史版本Nacos通過提供配置版本管理及其一鍵管理上的可用性風(fēng)險。能力,幫助用戶改錯配置的時候能夠快速恢復(fù),降低微服務(wù)系統(tǒng)在配置點(diǎn)擊:北京市昌平區(qū)建材城西路龍辦公樓一層:4.2.3Nacos提供配置訂閱者即者能力,同時提供客戶端當(dāng)前配置的MD5校驗(yàn)值,以便幫助用戶更好的檢查配置變更是否推送到 Client 端。通過以下代碼可對某配置進(jìn)行:public class SimpleDemoMainListener public
37、static void main(String args) throws NacosException /nacos 地址String serverAddr = ":8848"/Data IdString dataId = "nacossimpledemo.yaml"北京市昌平區(qū)建材城西路龍辦公樓一層:/GroupString group = "DEFAULT_GROUP" Properties properties = new Properties(); properties.put("serverAdd
38、r",serverAddr);ConfigService configService = NacosFactory.createConfigService(properties);/獲取配置,String dataId, String group, long timeoutMsString content = configService.getConfig(dataId, group, 5000);System.out.println(content);/添加String dataId, String group, Listener listenerconfigService.add
39、Listener(dataId, group, new Listener() public Executor getExecutor() return null;public void receiveConfigInfo(String s) /當(dāng)配置發(fā)生變化時的響應(yīng)System.out.println(s););/ 測試讓主線程不,因?yàn)橛嗛喤渲檬鞘刈o(hù)線程,主線程守護(hù)線程就會。 正式代碼中無需下面代碼while (true) try Thread.sleep(1000); catch (InterruptedException e) e.printStackTrace();4.3 登錄管理Nac
40、os當(dāng)前版本支持簡單的登錄功能,默認(rèn)用戶名/為:nacos/nacos 。修改默認(rèn)用戶名/1. 生成加密方法在入門程序中加入如下以來:<dependency><groupId>org.springframework.security</groupId><artifactId>springsecuritycore</artifactId><version>5.1.4.RELEASE</version></dependency>編寫PasswordEncoderUtil類,生成加密后的,采用BCrypt
41、加密方法在每次生成時會加隨機(jī)鹽,所以生成每次可能不一樣。北京市昌平區(qū)建材城西路龍辦公樓一層:public class PasswordEncoderUtil public static void main(String args) System.out.println(new BCryptPasswordEncoder().encode("123");1. 創(chuàng)建用戶名或者的時候,用指定用戶名即可。將上邊程序輸出的更新到數(shù)據(jù)庫。INSERT INTO users (username, password, enabled) VALUES ('nacos1',
42、39;$2a$10$SmtL5C6Gp2sLjBrhrx1vj.dJAbJLa4FiJYZsBb921/wfvKAmxKWyu', TRUE); INSERT INTO roles (username, role) VALUES ('nacos1', 'ROLE_ADMIN');關(guān)閉登錄功能由于部分公司開發(fā)臺,不希望被nacos的安全lter。因此nacos支持定制關(guān)閉登錄功能找到配置文件$nacoshome/conf/perties , 替換以下內(nèi)容即可。# spring security config # turn of
43、f security spring.security.enabled=false management.security=false security.basic.enabled=falsenacos.security.ignore.urls=/*#nacos.security.ignore.urls=/,/*/*.css,/*/*.js,/*/*.html,/*/*.map,/*/*.svg,/*/*.png,/*/*. ico,/consolefe/public/*,/v1/auth/login,/v1/console/health,/v1/cs/*,/v1/ns/*,/v1/cmdb/*
44、,/actuator/*5 Nacos配置管理應(yīng)用于分布式系統(tǒng)5.1 從單體架構(gòu)到微服務(wù)5.1.1 單體架構(gòu)Web應(yīng)用程序發(fā)展的早期,大部分web工程師將所有的功能模塊打包到一起并放在一個web容器中運(yùn)行,所有功能 模塊使用同一個數(shù)據(jù)庫,同時,它還提供API或者UI的web模塊等。北京市昌平區(qū)建材城西路龍辦公樓一層:盡管也是模塊化邏輯,但是最終它還是會打包并部署為單體式應(yīng)用,這種將所有功能都部署在一個web容器中運(yùn)行 的系統(tǒng)就叫做單體架構(gòu)(也叫:巨石型應(yīng)用)。單體架構(gòu)有很多好處:開發(fā)效率高:模塊之間交互采用本地方法調(diào)用,并節(jié)省微服務(wù)之間的交互討論時間與開發(fā)成本。 容易測試:IDE都是為開發(fā)單個
45、應(yīng)用設(shè)計的、容易測試在本地就可以啟動完整的系統(tǒng)。容易部署:運(yùn)維成本小,直接打包為一個完整的包,拷貝到web容器的某個目錄下即可運(yùn)行。但是,上述的好處是有條件的,它適用于小型簡單應(yīng)用,對于大規(guī)模的復(fù)雜應(yīng)用,就會展現(xiàn)出來以下的不足: 復(fù)雜性逐漸變高,可維護(hù)性逐漸變差 :所有業(yè)務(wù)模塊部署在一起,復(fù)雜度越來越高,修改時牽一發(fā)動全身。版本迭代速度逐漸變慢:修改一個地方就要將整個應(yīng)用全部編譯、部署、啟動時間過長、回歸測試周期過長。阻礙技術(shù)創(chuàng)新:若更新技術(shù)框架,除非你愿意將系統(tǒng)全部重寫,無法實(shí)現(xiàn)部分技術(shù)更新。無法按需伸縮:通過冗余部署完整應(yīng)用的方式來實(shí)現(xiàn)水平擴(kuò)展,無法某業(yè)務(wù)按需伸縮。5.1.2 微服務(wù)許多大
46、型公司,通過采用微服務(wù)架構(gòu)解決了上述問題。其思路不是開發(fā)一個巨大的單體式的應(yīng)用,而是將應(yīng)用分解 為小的、互相連接的微服務(wù)。一個微服務(wù)一般完成某個特定的功能,比如訂單服務(wù)、用戶服務(wù)等等。每一個微服務(wù)都是完整應(yīng)用,都有 務(wù)邏輯和數(shù)據(jù)庫。一些微服務(wù)還會發(fā)布API給其它微服務(wù)和應(yīng)用客戶端使用。比如,根據(jù)前面描述系統(tǒng)可能的分解如下:的業(yè)北京市昌平區(qū)建材城西路龍辦公樓一層:每一個業(yè)務(wù)模塊都使用的服務(wù)完成,這種微服務(wù)架構(gòu)模式也影響了應(yīng)用和數(shù)據(jù)庫之間的關(guān)系,不像傳統(tǒng)多個業(yè)務(wù)模塊共享一個數(shù)據(jù)庫,微服務(wù)架構(gòu)每個服務(wù)都有微服務(wù)架構(gòu)的好處:的數(shù)據(jù)庫。分而治之,職責(zé)單一;易于開發(fā)、理解和維護(hù)、方便團(tuán)隊的拆分和管理可伸縮
47、;能夠單獨(dú)的對指定的服務(wù)進(jìn)行伸縮局部容易修改,容易替換,容易部署,有利于持續(xù)集成和快速迭代受限于任何技術(shù)棧5.2 分布式應(yīng)用配置管理下圖展示了如何通過Nacos集中管理多個服務(wù)的配置:北京市昌平區(qū)建材城西路龍辦公樓一層:用戶通過Nacos Server的臺集中對多個服務(wù)的配置進(jìn)行管理。各服務(wù)統(tǒng)一從Nacos Server中獲取各自的配置,并配置的變化。5.2.1 發(fā)布配置首先在nacos發(fā)布配置,我們?yōu)g覽器在Nacos添加如下的配置:service1了兩個服務(wù)service1、service2,并且想對這兩個服務(wù)的配置進(jìn)行集中維護(hù)。,打開nacos臺,并點(diǎn)擊菜單配置管理->配置列表:#開
48、發(fā)環(huán)境Namespace: c67e4a97a6984d6d9bb1cfac5f5b51c4Data ID: Group :配置格式:配置內(nèi)容:service1.yaml TEST_GROUP YAMLcommon:name: service1 config北京市昌平區(qū)建材城西路龍辦公樓一層:service2Namespace: c67e4a97a6984d6d9bb1cfac5f5b51c4 #開發(fā)環(huán)境Data ID: Group :配置格式:配置內(nèi)容:service2.yaml TEST_GROUP YAMLcommon:name: service2 config5.2.2 創(chuàng)建父工程為了
49、規(guī)范依賴的版本,這里創(chuàng)建父工程,指定依賴的版本。父工程pom.xml如下:<?xml version="1.0" encoding="UTF8"?><project xmlns=""北京市昌平區(qū)建材城西路龍辦公樓一層:xmlns:xsi="xsi:schemaLocation="instance"4.0.0.xsd">Version><mVersion>4.0.0</m<groupId>com.itheima.nacos</gro
50、upId><artifactId>nacosconfig</artifactId><version>1.0SNAPSHOT</version><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF8</project.reporting.ou
51、tputEncoding><java.version>1.8</java.version></properties><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>springcloudalibabadependencies</artifactId><version>2.1.0.RELEASE</version
52、><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>springclouddependencies</artifactId><version>Greenwich.RELEASE</version><type>pom</type><sc
53、ope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>springbootdependencies</artifactId><version>2.1.3.RELEASE</version><type>pom</type><scope>import</scope></dependency&g
54、t;</dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>springbootmavenplugin</artifactId></plugin></plugins></build></project>北京市昌平區(qū)建材城西路龍辦公樓一層:5.2.3 微服務(wù)servi
55、ce1配置本小節(jié),演示如何使用 Spring Cloud Alibaba Nacos Cong在Spring Cloud應(yīng)用中集成Nacos,通過Spring cloud原生方式快捷的獲取配置內(nèi)容。Spring Cloud是什么:Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署。Spring Cloud并沒有重造,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來,集成最多的組件要屬N
56、etix公司,通過Spring Boot風(fēng)格進(jìn)行再封裝掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。Spring Cloud Alibaba Nacos Cong是什么:Spring Cloud Alibaba Nacos Discovery是Spring Cloud Alibaba的子項(xiàng)目,而Spring Cloud Alibaba是阿里巴巴公司提供的開源的基于Spring cloud的微服務(wù)套件合集,它致力于提供微服務(wù)開發(fā)的一站式解決方案,可以理解為spring cloud是一套微服務(wù)開發(fā)的 標(biāo)準(zhǔn) ,spring cloud alibaba
57、與spring cloud Netix是實(shí)現(xiàn)。使用 Spring Cloud Alibaba方案,開發(fā)者只需要添加一些注解和少量配置,就可以將 Spring Cloud 應(yīng)用接入阿里分布式應(yīng)用解決方案,通過阿里中間件來迅速搭建分布式應(yīng)用系統(tǒng)。由于Nacos是阿里的中間件,因此,若開發(fā)Spring cloud微服務(wù)應(yīng)用,使用Spring Cloud Alibaba Nacos Cong來集成Nacos的配置管理功能是比較明智的選擇。(1)新建項(xiàng)目service1首先新增一個名為service1工程,并添加group ID 為 com.alibaba.cloud 和 artifact ID 為的 starter。<parent><artifactId>nacosconfig</artifactId><groupId>com.itheima.nacos</groupId&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫操作規(guī)程培訓(xùn)
- 2025-2026學(xué)年秋季學(xué)期XX市實(shí)驗(yàn)中學(xué)總務(wù)處后勤工作總結(jié):校園設(shè)施維護(hù)與服務(wù)保障優(yōu)化
- 2025-2026學(xué)年第二學(xué)期XX市第二中學(xué)-紅色研學(xué)-活動方案:革命紀(jì)念館參觀與實(shí)踐心得收集
- 員工食堂管理培訓(xùn)
- 員工自我價值培訓(xùn)課件
- 員工用電安全知識培訓(xùn)
- 復(fù)盤分享培訓(xùn)
- 員工技能提升培訓(xùn)
- 塑膠產(chǎn)品常見問題培訓(xùn)
- 員工培訓(xùn)調(diào)查問卷
- 2025年北京市物業(yè)管理行業(yè)市場深度分析及發(fā)展前景預(yù)測報告
- 旅游景區(qū)商戶管理辦法
- 2025年甘肅省中考物理、化學(xué)綜合試卷真題(含標(biāo)準(zhǔn)答案)
- DLT5210.1-2021電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程第1部分-土建工程
- 機(jī)械設(shè)備租賃服務(wù)方案
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 6-23-03-15 無人機(jī)裝調(diào)檢修工 人社廳發(fā)202192號
- 樂理考試古今音樂對比試題及答案
- 電影放映年度自查報告
- 水泥窯協(xié)同處置危廢可行性研究報告
- 心內(nèi)介入治療護(hù)理
- 初中畢業(yè)學(xué)業(yè)考試命題規(guī)范、原則、與教學(xué)建議
評論
0/150
提交評論