SpringCloudAlibaba服務治理-Nacos

Nacos簡介

Nacos是SpringCloudAlibaba的一個組件,主要提供服務注冊發(fā)現(xiàn)和配置管理等服務,等效于注冊中心+配置中心

Nacos安裝

從官網(wǎng)下載Nacos-1.2.0,解壓后直接運行bin目錄下的startup.cmd柔昼,命令運行成功后直接訪問http://localhost:8848/nacos

image.png

默認的賬戶名和密碼都是nacos

Nacos作為注冊中心

1.引入依賴
pom.xml

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

2.在啟動類上添加@EnableDiscoveryClient注解

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

3.配置yml
application.yml

server:
  port: 8001
spring:
  application:
    name: sword-provider
  cloud:
    nacos:
      discovery:
        # 添加nacos的注冊地址
        server-addr: 127.0.0.1:8848

啟動服務管钳,刷新nacos頁面


image.png

可以看到nacos服務列表中我們的微服務已經(jīng)注冊上去了

Nacos支持AP模式和CP模式的切換

AP:高可用和分區(qū)容忍性,如果不需要存儲服務級別的信息,且服務實例都是通過nacos-client端注冊环疼,并且能夠保持心跳的上報,那么選擇AP模式
CP:強一致性和分區(qū)容忍性朵耕,如果需要在服務級別編輯和存儲配置信息炫隶,那么CP是必須的,K8s服務和DNS服務適用于CP模式阎曹,該模式下注冊實例之前必須先注冊服務伪阶,如果服務不存在則報錯
使用命令切換并啟動nacos

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

Nacos作為配置中心

1.在pom.xml中添加依賴

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

2.在resource文件夾下創(chuàng)建bootstrap.yml
原因:在項目初始化時,先要從配置中心拉取配置才能保證程序正常啟動处嫌,而SpringBoot中的配置文件是有加載順序的栅贴,bootstrap先于application
bootstrap.yml

server:
  port: 8001
spring:
  application:
    name: sword-provider
  cloud:
    nacos:
      discovery:
        # 作為服務注冊中心地址
        server-addr: 127.0.0.1:8848
      config:
        # 作為服務配置中心地址
        server-addr: 127.0.0.1:8848
        # 指定文件的擴展名為yaml
        file-extension: yaml

3.在application.yml中指定配置環(huán)境
application.yml

# 指定配置的環(huán)境
spring:
  profiles:
    active: dev

4.啟動類配置

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

5.在naco的可視化界面中進行相關配置
dataId配置規(guī)則:

${pring.application.name}-${spring.profiles.active}.${file-extension}

參考如上規(guī)則,需要配置的文件名為sword-provider-dev.yaml熏迹,配置如下


image.png

點擊提交即可
6.測試檐薯,我們可以在Controller中寫一個方法來測試配置是否準確
其實服務能夠啟動成功,就說明配置應該就沒有什么問題了注暗,這里來測試能否獲取到nacos中配置文件的值
ProviderController .java

    @Value("${info.name}")
    private String info;
    @GetMapping("info")
    public String getInfo(){
        return info;
    }

訪問接口http://localhost:8001/provider/info坛缕,得到如下結果

image.png

7.服務配置的動態(tài)刷新
在上面一步中,我們已經(jīng)能夠獲取到遠程配置的值捆昏,但是此時如果更改了遠程配置中的值赚楚,我們獲取到的還是原來的值,說明當前情況下骗卜,我們無法獲取到更新的配置宠页,此時可以利用SpringCloud的@RefreshScope來實現(xiàn)配置自動更新

@RestController
@RequestMapping("provider")
@RefreshScope
public class ProviderController {
    @Value("${info.name}")
    private String info;
    @GetMapping("info")
    public String getInfo(){
        return info;
    }
}

重啟服務后在nacos可視化配置界面更新info.name的值,再次訪問接口寇仓,就能夠及時獲取到更新


image.png

Nacos中配置中心的命名空間举户、Group、和Data Id之間的關系

  • NameSpace:NameSpace默認的命名空間是public遍烦,主要用作開發(fā)環(huán)境之間的隔離俭嘁,比如現(xiàn)在有三個環(huán)境:開發(fā)、測試乳愉、生產(chǎn),那么就可以創(chuàng)建三個命名空間
  • Group:默認為DEFAULT_GROUP屯远,可以把同一生產(chǎn)環(huán)境的不同微服務劃分到一個組
  • Data Id:指向具體的配置名稱
  • 歸屬應用:指定該配置歸屬于哪一個應用

通過NameSpace蔓姚、Group、Data Id查找配置文件

1.在nacos配置中新增一個名為test的命名空間
2.然后在test命名空間下創(chuàng)建yaml配置慨丐,并且同時指定group

image.png

bootstrap.yml

server:
  port: 8001
spring:
  application:
    name: sword-provider
  cloud:
    nacos:
      discovery:
        # 作為服務注冊中心地址
        server-addr: 127.0.0.1:8848
      config:
        # 作為服務配置中心地址
        server-addr: 127.0.0.1:8848
        # 指定文件的擴展名為yaml
        file-extension: yaml
        # 指定命名空間
        namespace: 9f6bb237-906c-4fbe-8698-4af61c973951
        # 指定組名
        group: TEST_GROUP

application.yml

# 指定配置的環(huán)境
spring:
  profiles:
    active: test

再次啟動服務坡脐,通過接口可以查看到對應的配置信息

Nacos集群和持久化配置

Nacos使用嵌入式數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)存儲,但支持mysql的集中存儲房揭,在生產(chǎn)過程中常使用nacos集群部署备闲,來保證nacos的高可用

環(huán)境準備

Nginx集群+Nacos集群+Mysql主從(生產(chǎn))
這里主要演示Nacos集群的搭建晌端,所以就不再演示Nginx集群和Mysql主從搭建了

搭建Nginx

參考Nginx-主備集群搭建

搭建Mysql

參考Mysql-主從復制

搭建Nacos集群

1.下載安裝nacos

cd /opt
# 下載
wget https://github.com/alibaba/nacos/releases/download/1.3.0/nacos-server-1.3.0.tar.gz
# 解壓
tar -xvf nacos-server-1.3.0.tar.gz

2.mysql配置
去nacos/conf目錄下找到nacos提供的nacos-mysql.sql文件
去mysql中執(zhí)行sql腳本,完成相應的庫表創(chuàng)建

3.application.properties配置(切換數(shù)據(jù)庫)

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

4.nacos集群配置
最好先配置主機的hostname

vi /etc/hostname

編輯nacos/conf目錄下的cluster.conf文件

192.168.10.251 8845
192.168.10.251 8846
192.168.10.251 8847

5.編輯啟動腳本恬砂,使其可以根據(jù)不同的端口啟動
進入到到nacos/bin目錄下咧纠,編輯startup.sh,添加條件

image.png

調(diào)整內(nèi)存大小
image.png

啟動時設置端口
image.png

啟動時通過-q參數(shù)指定端口

./startup.sh -q 8845
./startup.sh -q 8846
./startup.sh -q 8847

6.nginx負載均衡配置

image.png

更改完成后重啟nginx
訪問:http://192.168.10.251:8848/nacos/#/login
image.png

能夠訪問泻骤,說明Nacos集群搭建成功

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漆羔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狱掂,更是在濱河造成了極大的恐慌演痒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趋惨,死亡現(xiàn)場離奇詭異鸟顺,居然都是意外死亡,警方通過查閱死者的電腦和手機器虾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門讯嫂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曾撤,你說我怎么就攤上這事端姚。” “怎么了挤悉?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵渐裸,是天一觀的道長。 經(jīng)常有香客問我装悲,道長昏鹃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任诀诊,我火速辦了婚禮洞渤,結果婚禮上,老公的妹妹穿的比我還像新娘属瓣。我一直安慰自己载迄,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布抡蛙。 她就那樣靜靜地躺著护昧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粗截。 梳的紋絲不亂的頭發(fā)上惋耙,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼绽榛。 笑死湿酸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的灭美。 我是一名探鬼主播推溃,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼冲粤!你這毒婦竟也來了美莫?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梯捕,失蹤者是張志新(化名)和其女友劉穎厢呵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傀顾,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡襟铭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了短曾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寒砖。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嫉拐,靈堂內(nèi)的尸體忽然破棺而出哩都,到底是詐尸還是另有隱情,我是刑警寧澤婉徘,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布漠嵌,位于F島的核電站,受9級特大地震影響盖呼,放射性物質(zhì)發(fā)生泄漏儒鹿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一几晤、第九天 我趴在偏房一處隱蔽的房頂上張望约炎。 院中可真熱鬧,春花似錦蟹瘾、人聲如沸圾浅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狸捕。三九已至,卻和暖如春伊脓,著一層夾襖步出監(jiān)牢的瞬間府寒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工报腔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留株搔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓纯蛾,卻偏偏與公主長得像纤房,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子翻诉,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355