Nacos做爲註冊中心和配置中心,愛不釋手的感受

在使用SpringCloud作分佈式微服務架構時,註冊中心是必不可少的一個組件。目前能夠用的主要有:Eureka、Consul、Zookeeper。今天,咱們就來講一下Alibaba的Nacos怎麼樣?html

下載與安裝

  • 下載地址https://github.com/alibaba/nacos/releasesmysql

  • 安裝:git

    • Windows 下載解壓後(.zip),直接點擊bin/start.bat就能夠了。github

    • Linux下載解壓後(.tar.gz),一樣,也是運行 bin/start.sh 腳本。web

  • 打開控制檯:spring

    Nacos提供了一個可視化的操做平臺,安裝好以後,在瀏覽器中輸入http://localhost:8848就能夠訪問了,默認的用戶名和密碼都是nacos(我使用的1.2.0版本。默認將密碼驗證給關了,這個選項後邊會說)sql

Nacos簡介

Nacos是由阿里巴巴開源的一個好東西,直接貼上它的官網,就再也不這麼累贅了,畢竟是國人開發的,是有中文文檔的,上邊寫的很全面。https://nacos.io/zh-cn/docs/quick-start.html數據庫

Nacos做爲註冊中心

它和Eureka不同,並不須要建立新的web項目,而是和Zookeeper和Consul同樣,只須要下載安裝啓動後,將咱們的微服務註冊進去就能夠了。bootstrap

建立兩個微服務,一個客戶端(調用者)和一個服務端(提供者),瀏覽器

  • 引入依賴

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


  • 在它們的配置文件中引入以下代碼:

spring:
 cloud:
  nacos:
    discovery:
     # Nacos的地址
      server-addr: localhost:8848


  • 主啓動類上添加(不論是哪一種註冊中心,這個必定要有):

@EnableDiscoveryClient


  • 固然,在客戶端仍是要添加ribbon的負載均衡的,可是不用額外添加依賴,nacos已經添加了,咱們只須要注入以下bean就能夠

@Configuration
public class AppConfig {
   
   @Bean
   @LoadBalanced
   public RestTemplate restTemplate(){
       return new RestTemplate();
  }
}


  • 好了,打開Nacos的控制檯,而後就能夠看到這兩個微服務了。

Nacos做爲分佈式配置中心

以前咱們是使用SpringCloudConfig從github等倉庫上拉取的配置文件,可是用了Nacos後,咱們就能夠從Nacos中直接配置了,是否是很方便啊。新建了一個項目,nacos-config-server-8002

pom.xml引入下邊依賴

<!--分佈式配置中心-->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>


application.yml中加入以下配置內容

spring:
 profiles:
  active: dev


添加一個bootstrap.yml

server:
 port: 8002
spring:
 application:
  name: nacos-config-server-8002
 cloud:
  nacos:
    discovery:
      server-addr: localhost:8848
    config:
      server-addr: localhost:8848
# 配置文件類型,有yaml和properties ,注意必定是yaml,不是yml
      file-extension: yaml
  1. application.yml中的配置是什麼意思?

        自行百度下SpringBoot配置不一樣環境的配置文件

  1. 爲何要引入bootstrap.yml?

簡單來講,這個配置是和application.yml是同樣的,不過它要比appliation.yml先加載

Controller中的接口

@RestController
@RefreshScope //這是一個SpingCloud的原生註解,能夠實現配置的動態刷新
public class InfoController {
   /*
   這個中的 : 的意思就是說,若是配置文件中沒有,就直接使用後邊的那個字符串,我寫的是nothing
   在本地項目中,咱們並無配置configInfo,
   因此若是這時候調用http://localhost:8002/info
   返回就是nothing
    */

   @Value("${configInfo}")
   private String configInfo;

   /**
    * 用作配置中心的演示
    *
    * @return
    */

   @GetMapping("info")
   public String getConfig() {
       return configInfo;
  }
}


Nacos中的幾個空間概念:

  • NameSpaces(命名空間)

    至關於咱們一個項目中的包名,Nacos中能夠新建多個命名空間。微服務註冊的時候,能夠經過配置spring.cloud.nacos.discovery.namespace,固然,配置文件也能夠配置namespace來指定對應的名稱空間,若是不配置就是使用默認的public 空間。

    假如,你是好幾個項目共用一個Nacos集羣,就能夠經過namespce來區分項目。

    在Nacos的控制檯的最下邊有一個命名空間,你能夠新建一個試下,建完再次點擊服務列表和配置列表上邊會出現你的命令空間選擇(以下圖,我新建了一個space1的空間,public是默認的)

  • Group(分組)

    至關於Java中的類名,一樣,一個包下能夠有多個類。不過這個只是相對於配置文件來講,對於服務註冊沒有這麼一說。它有一個默認的分組就是DEFAULT_GROUP,在新建配置文件時就會有(以下圖)

  • DataID

    這個就至關於類中的方法,一樣,一個類中就會有多個方法名。

咱們的配置文件就是在上圖中去添加的,下邊是我截取了Nacos官方文檔中對於DataID的說明:

新建一個配置文件試試

在配置列表中新建一個配置文件,若是你有多個命名空間,注意選擇你的項目中鏈接的那個

只要點了右下角的發佈,就會自動配置了,再次訪問http://localhost:8002/info,就會看到已經更改了,這個是實時更改的。

這些都是很簡單的操做,只要你本身作一次,就必定會使用了

Nacos的配置文件持久化

Nacos使用的是嵌入式數據庫Derby,有關嵌入式數據庫,能夠參考在Spring中使用嵌入式數據庫-H2,雖然數據庫不一樣,可是原理操做方法一致。可是,咱們想換成咱們的mysql用來存儲nacos的數據,能否?

  • 導入數據到你本地的Mysql庫

    在Nacos安裝包下的conf目錄下有個nacos-mysql.sql文件,放到你的Mysql工具中執行一遍(它這個sql語句中建庫,先建個庫名叫nacos_config)

  • 修改conf下的application.properties文件

### 98行左右,這個設置爲true就是開啓nacos啓動的登陸驗證,默認用戶名和密碼就是nacos
nacos.core.auth.enabled=true

#
## 在最後添加以下:
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=123

以上這些內容全都來自於Nacos官網

這樣,再次啓動後Nacos後,你以前的配置文件就全都不見了,由於你配置了Mysql庫。這樣,你每次修改後,就會進Mysql庫,這個庫很簡單的,你大概看一下就能明白了。

公衆號後臺回覆」SpingCloud「獲取代碼和SpringCloud學習資料

猜您喜歡
往期精選▼

1。Eureka註冊中心入門

2。Eureka註冊中心集羣搭建

3。Zookeeper和Consule做爲註冊中心


愛我,請給我好看

本文分享自微信公衆號 - 小魚與Java(Fish_Java)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索