日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

配置中心Nacos

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置中心Nacos 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nacos?是阿里巴巴2018年7月份開源的項目,如其名, Naming Configuration Service ,專注于服務發現和配置管理領域。

Nacos 是什么?上面已經大概介紹了,更多詳細內容可以從?官網?或?Github?了解。
Nacos 能幫我們解決什么問題?本文圍繞其“配置管理”功能來解答。
配置,作為代碼如影隨形的小伙伴,伴隨著應用的整個生命周期,我們當然對它也非常的熟悉,想想配置一般都通過哪幾種形式存在?

  • 硬編碼
  • 配置文件
  • DB 配置表

硬編碼
配置項作為類字段的形式存在,如:

public class AppConfig {private int connectTimeoutInMills = 5000;public int getConnectTimeoutInMills() {return connectTimeoutInMills;}public void setConnectTimeoutInMills(int connectTimeoutInMills) {this.connectTimeoutInMills = connectTimeoutInMills;} }

這種形式主要有三個問題:

  • 如果配置是需要動態修改的話,需要當前應用去暴露管理該配置項的接口,至于是 Controller 的 API 接口,還是 JMX ,都是可以做到。
  • 另外,配置變更都是發生在內存中,并沒有持久化。因此,在修改配置之后重啟應用,配置又會變回代碼中的默認值了,這是一個坑啊,筆者就曾經掉進去過,爬了好一會才上岸。
  • 最后一個問題,就是當你有多臺機器的時候,要修改一個配置,每一臺都得去操作一遍,運維成本可想而知,極其蛋疼。

配置文件
Spring 中常見的 properties、yml 文件,或其他自定義的,如,“conf”后綴等:

# application.properties connectTimeoutInMills=5000

相比“硬編碼”的形式,它解決了第二個問題,持久化了配置。但是,另外兩個問題并沒有解決,運維成本依舊還是很高的。

配置動態變更,可以是通過類似“硬編碼”暴露管理接口的方式,這時,代碼中會多一步持久化新配置到文件的邏輯。或者,簡單粗暴點,直接登錄機器上去修改配置文件,再重啟應用,讓配置生效。當然,你也可以在代碼中增加一個定時任務,如每隔 10s 讀取配置文件內容,讓最新的配置能夠及時在應用中生效,這樣也就免去了重啟應用這個“較重”的運維操作。

通過增加“持久化邏輯”、“定時任務”讓“配置文件”的形式比“硬編碼”前進了一小步。

DB 配置表
這里的 DB 可以是 MySQL 等的關系型數據庫,也可以是 Redis 等的非關系型數據庫。數據表如:

CREATE TABLE `config` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`key` varchar(50) NOT NULL DEFAULT '' COMMENT '配置項',`value` varchar(50) NOT NULL DEFAULT '' COMMENT '配置內容',`updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`),UNIQUE KEY `idx_key` (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='配置信息';INSERT INTO `config` (`key`, `value`, `updated_time`, `created_time`) VALUES ('connectTimeoutInMills', '5000', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

它相對于前兩者,更進一步,將配置從應用中抽離出來,集中管理,能較大的降低運維成本。


那么,它能怎么解決動態更新配置的問題呢?據我所知,有兩種方式。
其一,如同之前一樣,通過暴露管理接口去解決,當然,也一樣得增加持久化的邏輯,只不過,之前是寫文件,現在是將最新配置寫入數據庫。不過,程序中還需要有定時從數據庫讀取最新配置的任務,這樣,才能做到只需調用其中一臺機器的管理配置接口,就能把最新的配置下發到整個應用集群所有的機器上,真正達到降低運維成本的目的。
其二,直接修改數據庫,程序中通過定時任務從數據庫讀取最新的配置內容。
“DB 配置表”的形式解決了主要的問題,但是它不夠優雅,帶來了一些“累贅”。

Nacos 配置管理

Nacos 真正將配置從應用中剝離出來,統一管理,優雅的解決了配置的動態變更、持久化、運維成本等問題。
應用自身既不需要去添加管理配置接口,也不需要自己去實現配置的持久化,更不需要引入“定時任務”以便降低運維成本。Nacos 提供的配置管理功能,將配置相關的所有邏輯都收攏,并且提供簡單易用的 SDK,讓應用的配置可以非常方便被 Nacos 管理起來。
如果是在 Spring 中使用 Nacos,只需三個步驟即可:
第一步:添加依賴

<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-spring-context</artifactId><version>${latest.version}</version> </dependency>

第二步:在配置類里增加注解
添加?@EnableNacosConfig?注解啟用 Nacos Spring 的配置管理服務。以下示例中,我們使用?@NacosPropertySource?加載了?dataId?為?example?的配置源,并開啟自動更新:

@Configuration @EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848")) @NacosPropertySource(dataId = "example", autoRefreshed = true) public class NacosConfiguration {}

第三步:通過 Spring 的?@Value?注解設置屬性值。
注意:需要同時有?Setter方法才能在配置變更的時候自動更新。

public class AppConfig {@Value("${connectTimeoutInMills:5000}")private int connectTimeoutInMills;public int getConnectTimeoutInMills() {return connectTimeoutInMills;}public void setConnectTimeoutInMills(int connectTimeoutInMills) {this.connectTimeoutInMills = connectTimeoutInMills;} }

以上的三個步驟,對應用本身幾乎沒有任何的侵入,1 個依賴 2 注解,寥寥數行,就把配置通過 Nacos 管理起來了。

關于配置的動態更新,對 Nacos Spring 的用戶來說,在自身應用中就只是設置 “autoRefreshed” 的一個布爾值。然后在需要修改配置的時候,調用 Nacos 修改配置的接口,或使用 Nacos 的控制臺去修改,配置發生變更后, Nacos 就會把最新的配置推送到該應用的所有機器上,簡單而高效。

?

Nacos單機搭建

1、首先安裝jdk

1.1、上傳jdk-8u111-linux-x64.tar.gz并解壓縮到/home/soft/jdk1.8.0_111

//jdk文件上傳到了/home/ftp目錄下
#tar -zxvf /home/ftp/jdk-8u111-linux-x64.tar.gz -C /home/soft

1.2、配置環境變量

//打開/etc/profile文件
# vim /etc/profile

在文件末尾插入如下內容

export JAVA_HOME=/home/soft/jdk1.8.0_111 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH

執行profile

#source /etc/profile

2、安裝Nacos

Step 1: Download the binary package

You can download the package from the latest stable release.

Take release nacos-server-0.9.0.zip for example.

unzip nacos-server-0.9.0.zip cd nacos/bin

Step 2: Start Server

On the Linux/Unix/Mac platform, run the following command to start server with standalone mode:

sh startup.sh -m standalone

On the Windows platform, run the following command to start server with standalone mode. Alternatively, you can also double-click the startup.cmd to run NacosServer.

cmd startup.cmd -m standalone

?

?

轉載于:https://www.cnblogs.com/duanxz/p/3777416.html

總結

以上是生活随笔為你收集整理的配置中心Nacos的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 又黄又爽视频在线观看 | 综合黄色 | 99cao| 国产精品久久久久9999爆乳 | 日本不卡影院 | 天天干精品 | 日日射视频 | 成人性做爰aaa片免费看不忠 | 久久久久夜夜夜精品国产 | 国产稀缺精品盗摄盗拍 | 蜜臀精品一区二区三区 | 四虎影院新网址 | 91av免费 | 欧美日韩在线一区 | 少妇精品久久久久久久久久 | 亚洲第一黄| 欧美色视频一区二区三区 | 欧美视频一区二区三区 | 黄片毛片一级 | 国产99久一区二区三区a片 | 人人妻人人澡人人爽欧美一区 | 无码内射中文字幕岛国片 | 国产超碰人人爽人人做人人爱 | 国产aaa大片 | 色欲av永久无码精品无码蜜桃 | 97成人人妻一区二区三区 | 波多野结衣在线播放视频 | 久久全国免费视频 | 精品欧美一区二区久久久久 | 久久福利免费视频 | www.色香蕉 | 日本特级黄色片 | 国产学生美女无遮拦高潮视频 | 强制高潮抽搐哭叫求饶h | 亚洲一区二区三区播放 | 欧美激情图区 | 亚洲av永久纯肉无码精品动漫 | 精品国产伦一区二区三 | 国产成人精品一区二区三区视频 | 重口味av | 动漫美女无遮挡免费 | 国产第一页在线观看 | 99成人免费视频 | 日韩三级欧美 | 亚洲久草 | 亚洲高清色图 | 欧美影视一区二区三区 | 天天澡天天狠天天天做 | 久久亚洲精品中文字幕 | 免费看的毛片 | 欧美午夜精品一区二区三区电影 | 国产毛片一区二区三区va在线 | 日本色视频 | 91欧美激情一区二区三区成人 | 日韩在线一区二区 | 秋霞毛片 | 精品动漫一区 | 美女被到爽高潮视频 | 亚洲黄色成人 | 可以免费看av| 欧美高清成人 | 你懂的网站在线观看 | 天天爱天天爽 | 免费三级黄 | 精品无码久久久久久久久成人 | 久久在线免费观看视频 | 91在线观看视频网站 | 欧美福利视频导航 | 国产精品丝袜 | 五十路av在线 | 成人av高清在线 | 看黄色的网址 | 久久久久久蜜桃 | 亚洲砖区区免费 | 国产三级久久久久 | 亚洲激情a| 精产国品一二三产品蜜桃 | 亚洲av久久久噜噜噜熟女软件 | 国产免费av网址 | 青草视频免费观看 | 7777精品久久久久久 | 久久6| 四虎影像 | 制服av在线 | 亚洲AV无码乱码国产精品牛牛 | 另类一区 | 日韩免费高清一区二区 | 日本大尺度床戏揉捏胸 | 91蜜桃传媒精品久久久一区二区 | 激情婷婷久久 | 涩涩久久| 日本午夜一区二区三区 | 欧美激情亚洲激情 | 国产一区二区h | 国产剧情av引诱维修工 | 狠狠狠狠狠 | 91av视频网站 | 亚洲另类欧美日韩 | 欧美日韩国产a |