nacos配置中心和注冊中心

Nacos Spring Cloud 快速開始

本文主要面向?Spring Cloud?的使用者壤短,通過兩個示例來介紹如何使用 Nacos 來實現(xiàn)分布式環(huán)境下的配置管理和服務(wù)注冊發(fā)現(xiàn)。

關(guān)于 Nacos Spring Cloud 的詳細(xì)文檔請參看:Nacos Config?和?Nacos Discovery缔恳。

通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實現(xiàn)配置的動態(tài)變更。

通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實現(xiàn)服務(wù)的注冊與發(fā)現(xiàn)回论。

前提條件

您需要先下載 Nacos 并啟動 Nacos server蹦漠。操作步驟參見?Nacos 快速入門

啟動配置管理

啟動了 Nacos server 后,您就可以參考以下示例代碼炮叶,為您的 Spring Cloud 應(yīng)用啟動 Nacos 配置管理服務(wù)了。完整示例代碼請參考:nacos-spring-cloud-config-example

添加依賴:

<dependency>

? ? <groupId>com.alibaba.cloud</groupId>

? ? <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

? ? <version>${latest.version}</version>

</dependency>

注意:版本?2.1.x.RELEASE?對應(yīng)的是 Spring Boot 2.1.x 版本渡处。版本?2.0.x.RELEASE?對應(yīng)的是 Spring Boot 2.0.x 版本镜悉,版本?1.5.x.RELEASE?對應(yīng)的是 Spring Boot 1.5.x 版本。

更多版本對應(yīng)關(guān)系參考:版本說明 Wiki

在?bootstrap.properties?中配置 Nacos server 的地址和應(yīng)用名

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.application.name=example

說明:之所以需要配置?spring.application.name?医瘫,是因為它是構(gòu)成 Nacos 配置管理?dataId字段的一部分侣肄。

在 Nacos Spring Cloud 中,dataId?的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}

prefix默認(rèn)為spring.application.name的值醇份,也可以通過配置項spring.cloud.nacos.config.prefix來配置稼锅。

spring.profile.active即為當(dāng)前環(huán)境對應(yīng)的 profile吼具,詳情可以參考Spring Boot文檔。?注意:當(dāng)?spring.profile.active?為空時矩距,對應(yīng)的連接符-也將不存在拗盒,dataId 的拼接格式變成${prefix}.${file-extension}

file-exetension為配置內(nèi)容的數(shù)據(jù)格式,可以通過配置項spring.cloud.nacos.config.file-extension?來配置锥债。目前只支持properties?和?yaml類型陡蝇。

通過 Spring Cloud 原生注解?@RefreshScope?實現(xiàn)配置自動更新:

@RestController

@RequestMapping("/config")

@RefreshScope

public class ConfigController {

? ? @Value("${useLocalCache:false}")

? ? private boolean useLocalCache;

? ? @RequestMapping("/get")

? ? public boolean get() {

? ? ? ? return useLocalCache;

? ? }

}

首先通過調(diào)用?Nacos Open API?向 Nacos Server 發(fā)布配置:dataId 為example.properties,內(nèi)容為useLocalCache=true

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true"

運行?NacosConfigApplication哮肚,調(diào)用?curl http://localhost:8080/config/get登夫,返回內(nèi)容是?true。

再次調(diào)用?Nacos Open API?向 Nacos server 發(fā)布配置:dataId 為example.properties允趟,內(nèi)容為useLocalCache=false

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=false"

再次訪問?http://localhost:8080/config/get恼策,此時返回內(nèi)容為false,說明程序中的useLocalCache值已經(jīng)被動態(tài)更新了潮剪。

啟動服務(wù)發(fā)現(xiàn)

本節(jié)通過實現(xiàn)一個簡單的?echo service?演示如何在您的 Spring Cloud 項目中啟用 Nacos 的服務(wù)發(fā)現(xiàn)功能涣楷,如下圖示:

完整示例代碼請參考:nacos-spring-cloud-discovery-example

添加依賴:

<dependency>

? ? <groupId>com.alibaba.cloud</groupId>

? ? <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

? ? <version>${latest.version}</version>

</dependency>

注意:版本?2.1.x.RELEASE?對應(yīng)的是 Spring Boot 2.1.x 版本。版本?2.0.x.RELEASE?對應(yīng)的是 Spring Boot 2.0.x 版本抗碰,版本?1.5.x.RELEASE?對應(yīng)的是 Spring Boot 1.5.x 版本狮斗。

更多版本對應(yīng)關(guān)系參考:版本說明 Wiki

配置服務(wù)提供者,從而服務(wù)提供者可以通過 Nacos 的服務(wù)注冊發(fā)現(xiàn)功能將其服務(wù)注冊到 Nacos server 上改含。

i. 在?application.properties?中配置 Nacos server 的地址:

server.port=8070

spring.application.name=service-provider

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

ii. 通過 Spring Cloud 原生注解?@EnableDiscoveryClient?開啟服務(wù)注冊發(fā)現(xiàn)功能:

@SpringBootApplication

@EnableDiscoveryClient

public class NacosProviderApplication {

public static void main(String[] args) {

SpringApplication.run(NacosProviderApplication.class, args);

}

@RestController

class EchoController {

@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)

public String echo(@PathVariable String string) {

return "Hello Nacos Discovery " + string;

}

}

}

配置服務(wù)消費者情龄,從而服務(wù)消費者可以通過 Nacos 的服務(wù)注冊發(fā)現(xiàn)功能從 Nacos server 上獲取到它要調(diào)用的服務(wù)迄汛。

i. 在?application.properties?中配置 Nacos server 的地址:

server.port=8080

spring.application.name=service-consumer

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

ii. 通過 Spring Cloud 原生注解?@EnableDiscoveryClient?開啟服務(wù)注冊發(fā)現(xiàn)功能捍壤。給?RestTemplate?實例添加@LoadBalanced?注解,開啟?@LoadBalanced?與?Ribbon?的集成:

@SpringBootApplication

@EnableDiscoveryClient

public class NacosConsumerApplication {

? ? @LoadBalanced

? ? @Bean

? ? public RestTemplate restTemplate() {

? ? ? ? return new RestTemplate();

? ? }

? ? public static void main(String[] args) {

? ? ? ? SpringApplication.run(NacosConsumerApplication.class, args);

? ? }

? ? @RestController

? ? public class TestController {

? ? ? ? private final RestTemplate restTemplate;

? ? ? ? @Autowired

? ? ? ? public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

? ? ? ? @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)

? ? ? ? public String echo(@PathVariable String str) {

? ? ? ? ? ? return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);

? ? ? ? }

? ? }

}

啟動?ProviderApplication?和?ConsumerApplication?鞍爱,調(diào)用?http://localhost:8080/echo/2018鹃觉,返回內(nèi)容為?Hello Nacos Discovery 2018。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睹逃,一起剝皮案震驚了整個濱河市盗扇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沉填,老刑警劉巖疗隶,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異翼闹,居然都是意外死亡斑鼻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門猎荠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坚弱,“玉大人蜀备,你說我怎么就攤上這事』囊叮” “怎么了碾阁?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長些楣。 經(jīng)常有香客問我脂凶,道長,這世上最難降的妖魔是什么戈毒? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任艰猬,我火速辦了婚禮,結(jié)果婚禮上埋市,老公的妹妹穿的比我還像新娘冠桃。我一直安慰自己,他們只是感情好道宅,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布食听。 她就那樣靜靜地躺著,像睡著了一般污茵。 火紅的嫁衣襯著肌膚如雪樱报。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天泞当,我揣著相機與錄音迹蛤,去河邊找鬼。 笑死襟士,一個胖子當(dāng)著我的面吹牛盗飒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陋桂,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼逆趣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嗜历?” 一聲冷哼從身側(cè)響起宣渗,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梨州,沒想到半個月后痕囱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡暴匠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年鞍恢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡有序,死狀恐怖抹腿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旭寿,我是刑警寧澤警绩,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站盅称,受9級特大地震影響肩祥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缩膝,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一混狠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疾层,春花似錦将饺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至湖饱,卻和暖如春掖蛤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背井厌。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工蚓庭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仅仆。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓器赞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝇恶。 傳聞我的和親對象是個殘疾皇子拳魁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361