1. 程式人生 > >Nacos作為微服務註冊中心,愛不釋手的感覺

Nacos作為微服務註冊中心,愛不釋手的感覺

我覺得Nacos用起來還不錯

在使用SpringCloud做分散式微服務架構時,註冊中心是必不可少的一個元件。目前可以用的主要有:Eureka、Consul、Zookeeper。今天,我們就來說一下Alibaba的Nacos怎麼樣?

下載與安裝

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

  • 安裝:

    • Windows 下載解壓後(.zip),直接點選bin/start.bat就可以了。
    • Linux下載解壓後(.tar.gz),同樣,也是執行 bin/start.sh 指令碼。
  • 開啟控制檯:

    Nacos提供了一個視覺化的操作平臺,安裝好之後,在瀏覽器中輸入http://localhost:8848

    就可以訪問了,預設的使用者名稱和密碼都是nacos(我使用的1.2.0版本。預設將密碼驗證給關了,這個選項後邊會說)

Nacos簡介

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

Nacos作為註冊中心

​ 它和Eureka不一樣,並不需要建立新的web專案,而是和Zookeeper和Consul一樣,只需要下載安裝啟動後,將我們的微服務註冊進去就可以了。

​ 建立兩個微服務,一個客戶端(呼叫者)和一個服務端(提供者),

  • 引入依賴
<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已經添加了
@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中的配置是什麼意思?
  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庫,這個庫很簡單的,你大概看一下就能明白了。

微信關注”小魚與Java“,回覆”SpingCloud“獲取更多SpringCloud學習資料

相關推薦

Nacos作為服務註冊中心愛不釋手感覺

我覺得Nacos用起來還不錯 在使用SpringCloud做分散式微服務架構時,註冊中心是必不可少的一個元件。目前可以用的主要有:Eureka、Consul、Zookeeper。今天,我們就來說一下Alibaba的Nacos怎麼樣? 下載與安裝 下載地址https://github.com/alibaba/

SpringCloud 使用consul作為服務註冊中心

eureka宣佈閉源,使用consul作為服務註冊中心。 1、parent pom檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

從零開始搭建系統3.2——服務註冊中心開發及部署

註冊 cnblogs 開始 htm www post 服務註冊 logs get 從零開始搭建系統3.2——微服務註冊中心開發及部署從零開始搭建系統3.2——微服務註冊中心開發及部署

【雙11狂歡的背後】服務註冊中心如何承載大型系統的千萬級訪問?

歡迎關注微信公眾號:石杉的架構筆記(id:shishan100) 週一至週五早8點!精品技術文章準時送上!! 往期文章 1. 《拜託!面試請不要再問我Spring Cloud底層原理》

【雙11狂歡背後】服務註冊中心如何承載大型系統的千萬級訪問?

一、問題起源 Spring Cloud架構體系中,Eureka是一個至關重要的元件,它扮演著微服務註冊中心的角色,所有的服務註冊與服務發現,都是依賴Eureka的。 不少初學Spring Cloud的朋友在落地公司生產環境部署時,經常會問:  ●  Eureka Serve

Spring Cloud---【雙11狂歡背後】服務註冊中心如何承載大型系統的千萬級訪問?

本文來源:石杉的架構筆記(ID:shishan100) 一、問題起源     Spring Cloud架構體系中,Eureka是一個至關重要的元件,它扮演著微服務註冊中心的角色,所有的服務註冊與服務發現,都是依賴Eureka的。 不少初

服務註冊中心如何承載大型系統的千萬級訪問?

本文為轉載文章,作者:中華石杉,十餘年BAT架構經驗,傾囊相授。作者微信公眾號:石杉的架構筆記(ID:shishan100)   目錄: 一、問題起源 二、Eureka Server設計精妙的登錄檔儲存結構 三、Eureka Serve

大白話聊聊Java併發面試問題之服務註冊中心的讀寫鎖優化【石杉的架構筆記】

歡迎關注個人公眾號:石杉的架構筆記(ID:shishan100) 週一至週五早8點半!精品技術文章準時送上! 一、讀寫鎖的介紹 上一篇文章大白話聊聊Java併發面試問題之公平鎖與非公平鎖是啥?,聊了一下java併發包的公平鎖和非公平鎖。 這篇文章來聊一下讀寫鎖。所謂的讀寫鎖,就是將一個鎖拆分為讀鎖和寫鎖兩

Java併發程式設計之服務註冊中心的讀寫鎖優化

一、讀寫鎖的介紹 這篇文章來聊一下讀寫鎖。所謂的讀寫鎖,就是將一個鎖拆分為讀鎖和寫鎖兩個鎖,然後你加鎖的時候,可以加寫鎖,也可以加讀鎖。如下面程式碼所示: 如果有一個執行緒加了寫鎖,那麼其他執行緒就不能加寫鎖了,同一時間只能允許一個執行緒加寫鎖。因為加了寫鎖就意味著有人要寫一個共享資料

【雙11狂歡的背後】服務註冊中心如何承載大型系統的千萬級訪問? Eureka 註冊中心

【雙11狂歡的背後】微服務註冊中心如何承載大型系統的千萬級訪問? 目錄: 一、問題起源 二、Eureka Server設計精妙的登錄檔儲存結構 三、Eureka Server端優秀的多級快取機制 四、總結     一、問題起源

【雙11狂歡的背後】服務註冊中心如何承載大型系統的千萬級訪問???

>轉載請標明出處:  >https://www.fangzhipeng.com > 本文出自[方誌朋的部落格](http://blog.csdn.net/forezp) >  > 本文為

雙11狂歡的背後】服務註冊中心如何承載大型系統的千萬級訪問?

目錄 1、寫在前面 2、場景引入,問題初現 3、揚湯止沸,飲鴆止渴 4、問題爆發,洪水猛獸 5、追本溯源,治標治本  6、總結全文,回眸再看 一、寫在前面 相信不少朋友都在自己公司使用Spring Cloud框架來構建微服務架構,畢竟現在這

搭建SpringCloud服務註冊中心詳解

我們在使用SpringCloud微服務的時候,首先要建立一個服務註冊中心,什麼是服務註冊中心呢,就好比老師手上的一張同學名單,上面寫著所有的同學名字和座位等資訊。廢話不多說,下面我們來做微服務的第一步:搭建註冊中心。我們用開發工具idea進行搭建。第一步:File-New-P

如何優化Spring Cloud服務註冊中心架構?

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

服務註冊中心Eureka比Zookeeper好在哪裡?

開發十年,就只剩下這套架構體系了! >>>   

spring cloud 入門(四)【Eureka註冊中心服務之間服務呼叫方式二(FeignClient進行服務呼叫)】

FeignClient 支隊服務消費方進行修改,服務提供方不需要修改   還是對  User 進行修改  UserApplication 中新增  @EnableFeignClients UserApplication 程式碼如下: pac

spring cloud 入門(三)【Eureka註冊中心服務之間服務呼叫方式一(LoadBalancerClient 以及RestTemplate 進行服務呼叫)】

構建第二個微服務 menu 程式碼結構如下   MenuApplication 程式碼如下: package com.study.menu; import org.springframework.boot.SpringApplication; import org

開發中使用Consul作為服務註冊中心專案接入sharding-jdbc後db測活一致失敗問題解決

一、問題背景: 專案中(Spring boot)使用consul作為服務註冊中心時,當接入sharding-jdbc 1.4.x版本後,健康檢查一直失敗。主要是db檢測失敗,丟擲以下錯誤: "db": { "status": "DOWN", "database": "My

spring cloud系列教程(4)--eureka註冊中心叢集配置服務註冊資訊完善

給大家推薦個靠譜的公眾號程式設計師探索之路,大家一起加油 ​   1.Eureka是什麼 Eureka是Netflix的一個子模組之一,AP設計原則。Eureka是一個以及Rest的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。服務註冊與發現對於微服務架構來

NET(C#)接入Dubbo服務Zookeeper作為Dubbo服務註冊中心實現thrift協議訪問介面(1)

專案要接入thrift,面對完全陌生的東西,學習的過程記錄。 開發環境: 系統:Windows 工具:VS2012 最新版thrift 下載:http://thrift.apache.org/download 點選下載thrift-0.9.3.exe,放在某個目錄下。我