成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你應該知道的 Nacos 接入和避坑指南

開發 架構
Hello 大家好,我是阿粉,今天給大家分享微服務環境下必須要使用的一個強大的組件 Nacos。自從使用了 Nacos,阿粉的服務再也沒有擔心過服務注冊和發現以及配置管理混亂的問題了。

[[339304]]

良許  本文轉載自微信公眾號「Java極客技術」,作者鴨血粉絲 。轉載本文請聯系Java極客技術公眾號。  

Hello 大家好,我是阿粉,今天給大家分享微服務環境下必須要使用的一個強大的組件 Nacos。自從使用了 Nacos,阿粉的服務再也沒有擔心過服務注冊和發現以及配置管理混亂的問題了。

 

背景

Nacos 致力于幫助開發人員發現、配置和管理微服務,Nacos 提供了一組簡單易用的特性集,快速實現動態服務發現、服務配置、服務元數據及流量管理。

目前主流的互聯網服務都是基于微服務架構的,那服務與服務之間的交互是必不可少的,而且各個服務的上下線都是相互獨立的,而且服務的配置信息也是會動態調整的,這就需要我們的服務更加靈活。Nacos 的出現就是幫助我們實現這些繁瑣的功能。

詳細的 Nacos 介紹和部署可以參考官方網站 Nacos.io。這里只介紹一下在 SpringBoot 項目中如何快速接入以及接入和使用過程中可能會遇到的坑。

接入

加入依賴

第一步在 pom 配置文件中加入下面的依賴,用于實現服務注冊發現和配置中心功能。

  1. <!-- nacos 配置中心 --> 
  2. <dependency> 
  3.   <groupId>com.alibaba.cloud</groupId> 
  4.   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> 
  5. </dependency> 
  6. <!-- nacos 注冊發現 --> 
  7. <dependency> 
  8.   <groupId>com.alibaba.cloud</groupId> 
  9.   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
  10. </dependency> 

增加配置

1.第二步在 SpringBoot 項目的啟動類上增加如下注解 @EnableDiscoveryClient 用于啟動服務注冊發現功能。

2.增加配置文件,對應的配置信息需要修改成適合自己的,為了方便管理,應用的分組名稱,命名空間以及相關的配置都需要合理的設置。多個業務使用同一個 nacos 集群的時候,需要根據各個的業務設定各自的命名空間。所有的配置文件都需要在對應的命名空間下設置,避免多個業務混用,另外業務需要根據用到的組件或者配置,設定獨立的配置文件,例如數據庫的配置,Redis 的配置等都需要單獨設定,這樣是為了同一個應用其他的其他服務也可以使用,而且再有地址變更的時候可以只修改一個文件就好,不會忘記。

  1. # 應用服務名稱 
  2. spring.application.name=application-name 
  3. # 應用分組名稱 
  4. spring.cloud.nacos.config.group=GROUP-NAME 
  5. # 配置文件的后綴名 
  6. spring.cloud.nacos.config.file-extension=properties 
  7. # nacos 對應的命名空間,在后臺創建好命名空間后會自動生成 
  8. spring.cloud.nacos.config.namespace=xxxxxxxxxxxxxxxxxxxxxxxxx 
  9. # 對應的配置文件 
  10. # MySQL 相關配置 
  11. spring.cloud.nacos.config.ext-config[0].data-id=mysql.properties 
  12. spring.cloud.nacos.config.ext-config[0].group=GROUP-NAME 
  13. # Redis 相關配置 
  14. spring.cloud.nacos.config.ext-config[1].data-id=redis.properties 
  15. spring.cloud.nacos.config.ext-config[1].group=GROUP-NAME 
  16. # 其他配置等 
  17. spring.cloud.nacos.config.ext-config[2].data-id=other.properties 
  18. spring.cloud.nacos.config.ext-config[2].group=GROUP-NAME 
  19. # 配置中心地址,多個逗號分隔 
  20. spring.cloud.nacos.config.server-addr=xxx.xx.xx.xx:xxxx 
  21. # 服務注冊發現地址,多個逗號分隔 
  22. spring.cloud.nacos.discovery.server-addr=xxx.xx.xx.xx:xxxx 
  23. # 集群名稱 
  24. spring.cloud.nacos.discovery.cluster-name=CLUSTER-NAME 

3.代碼中可以使用注解 @Value() 來直接讀取 Nacos 配置中的屬性參數,也可以使用 @ConfigurationProperties(prefix = "spring.datasource") 讀取批量參數。

4.spring.cloud.nacos.config.ext-config[0].refresh=true 該參數表示是否開啟自動更新,根據是否需要自動更新覺得是否配置,如果需要自動更新,加上這個配置后還需要在需要自動更新配置的 Bean 上面增加@RefreshScop 注解。然后對應的 Bean 內部的屬性就可以實現自動更新了。增加了spring.cloud.nacos.config.ext-config[0].refresh=true 配置后在修改了 Nacos 中的配置過后日志會出現下面信息,會重新加載配置,并且輸出變更的 key 信息。

5.

服務調用

 

當所有的服務都接入 Nacos 過后,我們在 Nacos 的后臺就可以看到每個服務的情況,如下圖,可以看到服務狀態。

 

然后我們在服務 A 里面如果要調用服務 B 的時候,就可以直接在 FeginClient 中配置服務 B 的名稱,不需要填寫 URL 了。這樣我們就不用考慮服務 B 是否地址和端口會不會變。服務 B 的實例增加還是減少,端口是否變了,對服務 A 來說都不關心,只要有個服務名稱就可以了。

 

避坑

命名空間

Nacos 有一個默認的名為 public 的命名空間,這個命名空間是無法刪除的,所有未指定命名空間的配置都會放在該命名空間下;同樣的 Nacos 有一個默認的名為 DEFAULT_GROUP 的分組,在沒有指定分組名稱的時候默認的配置都是在該分組下。

對于我們應用程序來說,由于很多情況下一個 Nacos 集群是多個團隊共同使用的,所以為了方便管理,我們需要根據自己的業務設置自己的命名空間,用于存放本業務的配置文件。本命名空間下的配置文件,根據各個的模塊決定是否需要重新分組。

要知道在沒有清晰的命名空間劃分的時候,要想修改一個配置的內容,是很難受的一件事情。線上的配置調整,一個不小心就是事故。如果還是自動更新配置的話,那連后悔的機會都沒有。

精細配置

配置文件應該專一,一個配置文件就設置一個內容,比如 MySQL 的數據源單獨一個配置,Redis 的數據源單獨一個配置,如果多個 Redis 服務,根據功能建議分開配置,因為并不是所有的服務都需要每個 Redis 的鏈接配置。各自的服務根據需要單獨引用對應的配置文件即可。

將所有的配置獨立成一個配置文件方便后續修改配置,只要修改一個配置文件就好,不用擔心其他還有未修改的地方。

合理的規劃配置文件的內容,往往很多時候可以事半功倍,極大的節約時間和減少出錯的概率。

自動刷新

前面介紹了如何設置配置自動刷新,不過服務是否需要自動更新配置,這個根據自身的業務去決定。

我這里一般不建議設置自動更新,因為現在都是微服務部署,有時候我們上線一個新功能的時候都是灰度發布,如果配置自動更新,再調整配置過后,全部實例都會生效,這樣會有風險。不設置自動更新的話,我們可以單獨重啟個別實例,觀察線上情況,等穩定了再發布所有服務,這樣會安全很多。

當然對于沒有那么多服務,不需要灰度,影響不大的場景下,配置自動更新會方便很多,再修改配置后不需要重啟服務。

總結

Nacos 作為服務的注冊發現和配置的統一管理確實十分出色,除了能快速接入 SpringBoot 項目之外,其他的框架都能快速的接入,更多使用可以參考官網。

最后希望大家都能解放雙手快速接入玩起來!

寫在最后

 

最后邀請你加入我們的知識星球,這里有 1800+ 優秀的人與你一起進步,如果你是小白那你是穩賺了,很多業內經驗和干貨分享給你;如果你是大佬,那可以進來我們一起交流分享你的經驗,說不定日后我們還可以有合作,給你的人生多一個可能。

 

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2020-06-12 11:03:22

Python開發工具

2024-04-24 13:45:00

2024-04-03 12:30:00

C++開發

2025-03-13 06:50:50

2021-02-26 00:46:11

CIO數據決策數字化轉型

2022-03-04 18:11:16

信服云

2021-05-07 21:53:44

Python 程序pyinstaller

2023-05-24 10:06:42

多云實踐避坑

2021-02-22 17:00:31

Service Mes微服務開發

2021-05-08 12:30:03

Pythonexe代碼

2020-12-16 10:00:59

Serverless數字化云原生

2020-11-25 10:18:20

MySQL

2025-05-06 08:21:35

2018-01-20 20:46:33

2011-03-25 15:56:58

2019-06-03 08:04:43

Apache服務器命令

2025-06-18 10:00:00

Redis事務Java

2021-04-28 09:26:25

公有云DTS工具

2013-01-09 13:55:43

2020-04-29 14:30:35

HTTPHTTPS前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操精品视频 | 成人在线不卡 | 久久国产免费看 | 日本黄视频在线观看 | 国产乱码精品一区二区三区五月婷 | 99久久精品免费看国产四区 | 日本精品视频 | 亚洲欧美成人 | 欧美日韩精品一区二区三区蜜桃 | 青青草华人在线视频 | 九色在线| 国产成人精品一区二区三区四区 | 欧美电影网 | 久久人体视频 | 久草在线 | www亚洲免费国内精品 | 欧美一极视频 | 国产亚洲欧美在线视频 | 日韩五月天 | 日一区二区 | 久久久久无码国产精品一区 | 2018天天干天天操 | 国产综合区 | 成年免费大片黄在线观看一级 | 欧美日韩精品中文字幕 | 欧美精品一区二区在线观看 | 国产精品久久久久久久久久不蜜臀 | www久久99| 国内精品视频在线观看 | 三级黄色片在线观看 | 日韩欧美综合在线视频 | 狠狠综合久久av一区二区老牛 | 全免费a级毛片免费看视频免费下 | 九九热精品在线 | 黄色永久免费 | 久久婷婷麻豆国产91天堂 | 91国语清晰打电话对白 | 日韩欧美在线视频 | 日韩久久久久 | 欧美日韩电影一区二区 | www.一区二区 |