欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nacos多環(huán)境的實(shí)現(xiàn)過程

 更新時間:2024年12月24日 10:19:41   作者:IT利刃出鞘  
本文介紹Nacos實(shí)現(xiàn)多環(huán)境的方案,包括單租戶和多租戶兩種類型,詳細(xì)介紹了如何在Nacos中創(chuàng)建命名空間、配置文件和項(xiàng)目,并通過配置文件的DataId和Group區(qū)分不同環(huán)境和項(xiàng)目,作者通過實(shí)戰(zhàn)場景展示了如何配置和啟動項(xiàng)目,驗(yàn)證了配置文件的讀取和隔離效果

簡介

說明

本文介紹Nacos實(shí)現(xiàn)多環(huán)境的方案。

方案概述

多環(huán)境有很多方案,如下:

  • 單租戶方案(適用于項(xiàng)目很少的場景)
  • 命名空間區(qū)分環(huán)境,GROUP 使用默認(rèn),DATA ID區(qū)分應(yīng)用
  • 單租戶方案(適用于項(xiàng)目較少的場景)
  • 命名空間區(qū)分環(huán)境,GROUP 區(qū)分項(xiàng)目,DATA ID區(qū)分應(yīng)用
  • 多租戶方案(適用于項(xiàng)目很多的場景)
  • 命名空間區(qū)分項(xiàng)目,GROUP使用默認(rèn),DATA ID區(qū)分應(yīng)用及環(huán)境
  • 多租戶方案(適用于項(xiàng)目巨多的場景)
  • 命名空間區(qū)分項(xiàng)目,GROUP 區(qū)分環(huán)境,DATA ID區(qū)分應(yīng)用

方案1:單租戶(單GROUP)

場景:適用于項(xiàng)目很少的場景。

有dev,test和prod三個不同的環(huán)境,那么使用一套 nacos 集群可以分別建以下三個不同的 namespace。

如下圖所示:

方案2:單租戶(多GROUP)

場景:適用于項(xiàng)目較少的場景。

以方案1為基礎(chǔ),多個項(xiàng)目同時使用該Nacos集群時,可以通過Group進(jìn)行Namespace內(nèi)的細(xì)化分組。

以Namespace:dev為例,在Namespace中通過不同Group進(jìn)行同一環(huán)境中不同項(xiàng)目的再分類:

通過代碼來實(shí)踐一下

創(chuàng)建Nacos配置文件

Namespace下新建配置文件

啟動Nacos-Server,進(jìn)入Nacos控制臺,切換到Namespace:dev界面,新建配置文件

  • DataId:nacos-namespace-one-dev.yml
  • Group:namespace-one
  • 配置格式:YAML
  • 配置內(nèi)容:
nacos: 
    config: 項(xiàng)目:nacos-namespace-one,Namespace:dev

繼續(xù)新建配置文件

  • DataId:nacos-namespace-two-dev.yml
  • Group:namespace-two
  • 配置格式:YAML
  • 配置內(nèi)容:
nacos: 
    config: 項(xiàng)目:nacos-namespace-two,Namespace:dev

切換到Namespace:test環(huán)境,按照dev中的創(chuàng)建方式,分別創(chuàng)建nacos-namespace-one-test.yml和nacos-namespace-two-test.yml

注意:檢查DataId是否正確、group、配置內(nèi)容與環(huán)境是否匹配

創(chuàng)建項(xiàng)目

在聚合工程N(yùn)acos下創(chuàng)建名為nacos-namespace-one的子項(xiàng)目。

以下NamespaceId均來自創(chuàng)建Namespace時生成的Id,在控制臺命名空間頁面中可以查看

創(chuàng)建dev環(huán)境配置文件bootstrap-dev.yml

server:
  port: 9911
spring:
  application:
    name: nacos-namespace-one
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: edbd013b-b178-44f7-8caa-e73071e49c4d
        group: namespace-one
      config:
        server-addr: 127.0.0.1:8848
        prefix: ${spring.application.name}
        file-extension: yml
        namespace: edbd013b-b178-44f7-8caa-e73071e49c4d
        group: namespace-one

創(chuàng)建test環(huán)境配置文件bootstrap-dev.yml

server:
  port: 9912

spring:
  application:
    name: nacos-namespace-one
  profiles:
    active: test
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: 0133bd1e-25c3-4985-96ed-a4e34efdea2e
        group: namespace-one
      config:
        server-addr: 127.0.0.1:8848
        prefix: ${spring.application.name}
        file-extension: yml
        namespace: 0133bd1e-25c3-4985-96ed-a4e34efdea2e
        group: namespace-one

重復(fù)以上操作,再創(chuàng)建一個名為nacos-namespace-two的子項(xiàng)目

nacos-namespace-two項(xiàng)目的dev和test啟動端口分別設(shè)置為9921和9922,group為:namespace-two(記得修改spring.application.name、namespace和group)。

測試

分別啟動兩個項(xiàng)目的兩個環(huán)境(四個啟動類),如下圖(兩個環(huán)境都啟動dev和test)

現(xiàn)在我們有2個項(xiàng)目:nacos-namespace-one和nacos-namespace-two,2個項(xiàng)目分別有兩個不同的環(huán)境dev和test。此時觀察Nacos-Server控制臺如下:

嘗試訪問接口來獲取配置信息,驗(yàn)證是否可以讀取相應(yīng)環(huán)境配置

訪問127.0.0.1:9911/getValue,返回:項(xiàng)目:nacos-namespace-one,Namespace:dev
訪問127.0.0.1:9912/getValue,返回:項(xiàng)目:nacos-namespace-one,Namespace:test
訪問127.0.0.1:9921/getValue,返回:項(xiàng)目:nacos-namespace-two,Namespace:dev
訪問127.0.0.1:9922/getValue,返回:項(xiàng)目:nacos-namespace-two,Namespace:test

通過以上實(shí)驗(yàn),方案1可以達(dá)到多環(huán)境多項(xiàng)目下的服務(wù)、配置管理的目標(biāo)。

方案3:多租戶(單GROUP)

從多個租戶(用戶)的角度來看,每個租戶(用戶)可能會有自己的 namespace,每個租戶(用戶)的配置數(shù)據(jù)以及注冊的服務(wù)數(shù)據(jù)都會歸屬到自己的 namespace 下,以此來實(shí)現(xiàn)多租戶間的數(shù)據(jù)隔離。他有很好的擴(kuò)展性。

例如超級管理員分配了三個租戶,分別為張三、李四和王五。張三負(fù)責(zé)A項(xiàng)目,李四負(fù)責(zé)B項(xiàng)目,王五負(fù)責(zé)C項(xiàng)目。

分配好了之后,各租戶用自己的賬戶名和密碼登錄后,創(chuàng)建自己的命名空間。如下圖所示:

方案4:多租戶(多GROUP)

以方案3為基礎(chǔ),公司發(fā)展迅速業(yè)務(wù)調(diào)整,張三負(fù)責(zé)A項(xiàng)目、B項(xiàng)目、C項(xiàng)目,李四負(fù)責(zé)D項(xiàng)目、E項(xiàng)目、F項(xiàng)目,王五負(fù)責(zé)G項(xiàng)目、H項(xiàng)目、I項(xiàng)目。每個項(xiàng)目又分了dev、test、prod三個環(huán)境,繼續(xù)沿用之前的Namespace隔離租戶方案,顯得有些管理不便,這時候可以在NameSpace中加入Group進(jìn)行項(xiàng)目環(huán)境分組,如圖:

當(dāng)業(yè)務(wù)規(guī)模更大的時候(不考慮Nacos集群能否支持的因素),張三、李四、王五每人都負(fù)責(zé)10多個項(xiàng)目時,即項(xiàng)目數(shù)>環(huán)境數(shù)時,可以通過Group進(jìn)行項(xiàng)目分組,如下圖:

實(shí)戰(zhàn)

場景描述

依舊使用上面的兩個項(xiàng)目,假設(shè)現(xiàn)在有兩個租戶,張三、李四

張三負(fù)責(zé)項(xiàng)目:nacos-namespace-one, 李四負(fù)責(zé)項(xiàng)目:nacos-namespace-two,項(xiàng)目分別有dev和test環(huán)境

新建Namespace和配置文件

新建兩個Namespace來隔離租戶,分別為zhangsan、lisi

在Namespace:zhangsan 下創(chuàng)建配置文件

  • DataId:nacos-namespace-one-dev.yml
  • Group:namespace-one-dev
  • 配置格式:YAML
  • 配置內(nèi)容:
nacos: 
    config: 項(xiàng)目:nacos-namespace-one,Namespace:張三,環(huán)境:dev

繼續(xù)創(chuàng)建test環(huán)境配置文件

  • DataId:nacos-namespace-one-test.yml
  • Group:namespace-one-test
  • 配置格式:YAML
  • 配置內(nèi)容:
nacos: 
    config: 項(xiàng)目:nacos-namespace-one,Namespace:張三,環(huán)境:test

參照以上操作,在Namespace:lisi命名空間中創(chuàng)建配置文件nacos-namespace-two-dev.yml和nacos-namespace-two-test.yml

注意:核對DataId、Group、和配置內(nèi)容

修改項(xiàng)目的配置文件bootstrap.yml

修改項(xiàng)目nacos-namespace-one的dev配置文件bootstrap-dev.yml

server:
  port: 9911
spring:
  application:
    name: nacos-namespace-one
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
#        方案2:NamespaceID\Group
        namespace: e0d75068-a12c-4314-9296-3f396139d5b3
        group: namespace-one-dev
      config:
        server-addr: 127.0.0.1:8848
        prefix: ${spring.application.name}
        file-extension: yml
#        方案2:NamespaceID\Group
        namespace: e0d75068-a12c-4314-9296-3f396139d5b3
        group: namespace-one-dev

修改test配置文件bootstrap-test.yml

server:
  port: 9912
spring:
  application:
    name: nacos-namespace-one
  profiles:
    active: test
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
#        方案2:NamespaceID\Group
        namespace: e0d75068-a12c-4314-9296-3f396139d5b3
        group: namespace-one-test
      config:
        server-addr: 127.0.0.1:8848
        prefix: ${spring.application.name}
        file-extension: yml
#        方案2:NamespaceID\Group
        namespace: e0d75068-a12c-4314-9296-3f396139d5b3
        group: namespace-one-test

重復(fù)以上操作相應(yīng)的修改項(xiàng)目nacos-namespace-two的dev和test配置文件

主要修改namespace和group屬性,與命名空間lisi的ID和其下配置文件的Group對應(yīng)

啟動項(xiàng)目

分別啟動兩個項(xiàng)目的兩個環(huán)境(四個啟動類),啟動成功如下圖

此時兩個項(xiàng)目分別啟動兩個環(huán)境后,注冊到Nacos上不同的Namespace下,并讀取相應(yīng)環(huán)境的配置,具體如下:

nacos-namespace-one

  • dev: 注冊到Namespace:zhangsan,讀取Namespace:zhangsan下Group:namespace-one-dev的配置
  • test: 注冊到Namespace:zhangsan,讀取Namespace:zhangsan下Group:namespace-one-test的配置

nacos-namespace-two

  • dev: 注冊到Namespace:lisi,讀取Namespace:lisi下Group:namespace-two-dev的配置
  • test: 注冊到Namespace:lisi,讀取Namespace:lisi下Group:namespace-two-test的配置

此時Nacos控制臺如下圖:

ok我們來測試下各個環(huán)境的服務(wù)能否訪問到對應(yīng)的配置

訪問127.0.0.1:9911/getValue,返回:項(xiàng)目:nacos-namespace-one,Namespace:張三,環(huán)境:dev
訪問127.0.0.1:9912/getValue,返回:項(xiàng)目:nacos-namespace-one,Namespace:張三,環(huán)境:test
訪問127.0.0.1:9921/getValue,返回:項(xiàng)目:nacos-namespace-two,Namespace:李四,環(huán)境:dev
訪問127.0.0.1:9922/getValue,返回:項(xiàng)目:nacos-namespace-two,Namespace:李四,環(huán)境:test

通過訪問服務(wù)的接口,各個服務(wù)都可以準(zhǔn)確的讀取到各自環(huán)境下的配置文件

方案二可以看到同樣支持服務(wù)和配置的隔離分組,同時支持業(yè)務(wù)的擴(kuò)展,有較好的擴(kuò)展性

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論