<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Nacos的基本使用(注冊中心、配置中心)

      1、Nacos的基本介紹

      Nacos 官方介紹:Nacos致力于幫助您發現、配置和管理微服務。Nacos提供了一組簡單易用的特性集,幫助您實現動態服務發現、服務配置管理、服務及流量管理。Nacos幫助您更敏捷和容易地構建、交付和管理微服務平臺。Nacos是構建以“服務”為中心的現代應用架構的服務基礎設施。

      Nacos 是阿里巴巴的開源的產品,現在是 SpringCloud 中的一個組件。相比Eureka功能更加豐富,在國內受歡迎程度較高。Nacos是用來發現、配置和管理微服務。Nacos提供了一組簡單易用的特性集,幫助快速實現動態服務發現、服務配置、服務元數據及流量管理。Nacos的一大優勢是整合了注冊中心、配置中心功能。

      Nacos主要提供以下四大功能:

      1. 服務發現與服務健康檢查。Nacos使服務更容易注冊,并通過DNS或HTTP接口發現其他服務,Nacos還提供服務的實時健康檢查,以防止向不健康的主機或服務實例發送請求。
      2. 動態配置管理。動態配置服務允許您在所有環境中以集中和動態的方式管理所有服務的配置。Nacos消除了在更新配置時重新部署應用程序,這使配置的更改更加高效和靈活。
      3. 動態DNS服務。Nacos提供基于DNS協議的服務發現能力,旨在支持異構語言的服務發現,支持將注冊在Nacos上的服務以域名的方式暴露端點,讓三方應用方便地查閱及發現。
      4. 服務和元數據管理。Nacos能讓您從微服務平臺建設的視角管理數據中心的所有服務及元數據,包括管理服務的描述、生命周期、服務的靜態依賴分析、服務的健康狀態、服務的流量管理、路由及安全策略。

      這里動態配置管理的特性說明了Nacos的配置管理能力。

       

      2、Nacos的下載安裝

      2.1、Nacos的下載安裝(window版)

      2.1.1、下載 nacos 安裝包

      可直接到 nacos 的 github 網站的 release 中下載,下載鏈接:https://github.com/alibaba/nacos/releases

      如上圖,.zip 包是用于 window 系統的,.tar.gz 包是用于 Linux 系統的。

       

      2.1.2、安裝 nacos

      下面我們安裝一個 window 系統版本的,安裝 nacos 其實非常簡單,只需將壓縮包解壓即可。

      解壓后目錄結構如下:

      目錄說明:

      • bin:啟動腳本
      • conf:配置文件

      Nacos的默認端口是8848,如果你電腦上的其它進程占用了8848端口,請先嘗試關閉該進程。如果無法關閉占用8848端口的進程,也可以進入安裝目錄的 conf/application.properties 文件,修改配置文件中的端口:

       

       

      2.1.3、啟動nacos

      啟動 nacos 非常簡單,進入安裝目錄的 bin 目錄下,直接雙擊 startup.cmd 文件,但是這樣默認是以集群模式啟動的 nacos,此時就會讀取集群的一些配置文件,可能會導致一些報錯,所以我們可以通過 cmd 命令行來指定運行時的一些配置,比如下面命令指定以單體模式運行 nacos:

      startup.cmd -m standalone

      啟動結果如下:

      在瀏覽器輸入地址:http://127.0.0.1:8848/nacos 即可訪問到 nacos,如下:

      默認的登錄賬戶和密碼都是 nacos。

       

      2.2、Nacos的下載安裝(Linux版)

      Linux 或者 Mac 安裝方式都跟 Windows 差不多,都只是解壓壓縮包,執行命令文件即可。

      Nacos 依賴于JDK運行,所以 Linux上 也需要安裝 JDK 才行。

       

      3、Nacos注冊服務

      nacos 搭建 nacos client 并注冊服務跟 eureka 的流程差不多,先引入客戶端依賴,然后添加配置即可。啟動 nacos client 后就會自動往注冊中心注冊服務。需注意,nacos 服務端需保持啟動狀態,否則連接不上服務端將會注冊失敗。

      首先,我們先引入依賴,下面假設父工程 springclouddemo 作為依賴管理,父工程下面有子模塊 order-service 作為服務需注冊到 nacos 注冊中心當中。

      在父工程 springclouddemo 的 pom.xml 中添加 nacos 管理依賴:

      <!--nacos的管理依賴-->
      <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-alibaba-dependencies</artifactId>
          <version>2.2.5.RELEASE</version>
          <type>pom</type>
          <scope>import</scope>
      </dependency>

      在子模塊 order-service 中添加客戶端依賴:

      <!-- nacos客戶端依賴包 -->
      <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>

      往子模塊 order-service 的配置文件 application.yaml 中添加配置,如下:

      server:
        port: 8081
      
      spring:
        application:
          name: orderservice #設置當前應用名稱,在eureka中Aoolication顯示,通過該名稱可以獲取路徑
        cloud:
          nacos:
            server-addr: http://localhost:8848 # nacos服務地址

      啟動order-service 的入口啟動類即可,可以在 nacos 頁面中的服務列表中看到 order-service 已經注冊成功。如下:

      使用 nacos 和使用 eureka 來調用另一服務的接口的代碼是一樣的,也就是可以跟使用 eureka 時一樣,使用 RestTemplate 來發起 http 請求,并且使用服務名來替代目標服務的 ip 和端口,避免 ip 和端口需要硬編碼寫死的情況。

       

      詳細的 pom.xml 文件內容示例:

      父工程 springclouddemo 的 pom.xml 文件內容:

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      
          <modelVersion>4.0.0</modelVersion>
      
          <packaging>pom</packaging>
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.2.5.RELEASE</version>
              <relativePath/>
          </parent>
      
          <groupId>com.example</groupId>
          <artifactId>springclouddemo</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>springclouddemo</name>
          <description>Demo project for Spring Boot</description>
      
          <modules>
              <module>eureka-server</module>
          </modules>
      
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
              <java.version>1.8</java.version>
              <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
          </properties>
      
          <dependencyManagement>
              <dependencies>
                  <!-- springCloud -->
                  <dependency>
                      <groupId>org.springframework.cloud</groupId>
                      <artifactId>spring-cloud-dependencies</artifactId>
                      <version>${spring-cloud.version}</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-dependencies</artifactId>
                      <version>2.2.5.RELEASE</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
                  <!--nacos的管理依賴-->
                  <dependency>
                      <groupId>com.alibaba.cloud</groupId>
                      <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                      <version>2.2.5.RELEASE</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
          </build>
      
      </project>

      order-service 子模塊的 pom.xml 文件內容:

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <parent>
              <groupId>com.example</groupId>
              <artifactId>springclouddemo</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </parent>
      
          <groupId>com.example</groupId>
          <artifactId>order-service</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>order-service</name>
          <description>Demo project for Spring Boot</description>
          <properties>
              <java.version>1.8</java.version>
          </properties>
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-jdbc</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.mybatis.spring.boot</groupId>
                  <artifactId>mybatis-spring-boot-starter</artifactId>
                  <version>2.2.2</version>
              </dependency>
      
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <scope>runtime</scope>
              </dependency>
      
              <!-- nacos客戶端依賴包 -->
              <dependency>
                  <groupId>com.alibaba.cloud</groupId>
                  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
              </dependency>
      
          </dependencies>
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
          </build>
      
      </project>

       

      4、Nacos服務分級存儲模型(服務、集群、實例)

      Nacos服務分級存儲模型:一級是服務;二級是集群,比如可以按區域機房劃分集群,北京集群、上海集群、廣州集群等等;三級是實例,例如北京機房的某臺服務器部署的某服務

      在服務互相調用時我們應該盡可能地去選擇本地集群,即同一集群的服務,因為跨集群調用延遲較高,只有當本地集群的需調用的服務不可訪問時,再去訪問其它集群。

       

      4.1、給nacos服務配置集群

      在 nacos 注冊的服務如果沒有配置集群的話,默認是沒有集群的,也就是在一個名為 DEFAULT 的集群下,如下:

      我們可以在 nacos 服務的配置文件中通過配置指定該服務的集群,只需在配置文件比如 application.yml 中添加 spring.cloud.nacos.discovery.cluster-name 屬性即可,如下:

      spring:
        application:
          name: orderservice
        cloud:
          nacos:
            server-addr: http://localhost:8848 # nacos服務地址
            discovery:
              cluster-name: HZ # 配置集群名稱,例如:HZ,代指杭州集群

      此時,注冊在 nacos 中的服務可以看到它的集群名稱就是我們配置的集群名稱,如下:

       

      4.2、配置優先訪問同一集群

      在服務互相調用時我們應該盡可能地去選擇本地集群,即同一集群的服務,因為跨集群調用延遲較高,只有當本地集群的需調用的服務不可訪問時,再去訪問其它集群。但是使用 springcloud 在 nacos 中注冊的服務,默認的負載均衡策略是輪詢,也就是會輪詢各個服務,不會區別是否同一集群。我們可以通過配置負載均衡策略來使得調用服務時優先選擇同一集群的服務。

      假設 order-service 和 user-service 兩種服務在各個集群中都有實例存在,而我們想要配置在 order-service 中調用 user-service 服務的接口時,優先選擇同一集群的服務,只需在 order-service 服務中設置負載均衡的 IRule 為 NacosRule ,如下:

      userservice:    #指定給某個目標服務發起請求時的負載均衡規則,這里是目標服務的服務名稱
        ribbon:
          NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  #負載均衡規則

      NacosRule 負載均衡策略會優先尋找與自己在同一集群的服務,只有在同一集群中找不到服務提供者,才去其它集群尋找,并且當使用了其他集群的服務時,服務消費者中會提示類似以下的警告信息:

      如果一個集群中的服務提供者有多個實例,則會使用隨機調用的策略。

       

      4.3、配置實例的權重

      當配置了優先訪問同一集群內的服務時,在同一集群內如果有多個服務提供者實例的話,此時會使用隨機訪問的策略。當有時候,服務器設備之間的性能是有差異,部分實例所在的機器性能較好,另一些較差,我們可能會希望性能好的機器能承擔更多的用戶請求,而 Nacos 也提供了權重配置來讓我們控制實例的訪問頻率,權重越大則訪問頻率越高。

      我們可以在 Nacos 的控制臺中設置實例的權重值,如下:

      點擊實例后面的編輯按鈕,彈出窗口可以設置權重值,如下:

      所有的實例的權重值默認都是1,我們可以將將權重值設置為 0~1,權重越低,被訪問到的概率就越低,為 0 時則完全不會被訪問到。

       

      5、nacos環境隔離(namespace命名空間)

      Nacos 中服務存儲和數據存儲的最外層都是一個名為 namespace 的東西,用來做最外層隔離,namespace 是用來來實現環境隔離功能的。

      nacos 的領域模型劃分:

       

      • Nacos 中可以有多個 namespace,默認為“public",每個namespace都有唯一id
      • 不同 namespace 之間相互隔離,不同 namespace 之間的服務互相不可見
      • namespace 下可以有分組 group、服務 service 等。group 用作微服務的分組,不同的分組之間微服務也不能互相不可見。服務的默認分組都是 “DEFAULT_GROUP”,分組一般來說不用修改。

      同一個namespace,同一個group下,不同的集群 cluster-name 之間的服務是可以相互調用的。但是應該盡量避免服務的跨集群調用,因為不同集群通常是跨地域部署的,跨地域會有網絡延時,所以要優先保證同一集群調用。

       

      5.1、新增namespace

      默認情況下,所有 service、data、group 都在同一個 namespace,名為 public(保留空間),如下:

        

      我們可以命名空間菜單頁新增 namespace,如下:

        

      新增結果如下:

       

      5.2、配置服務的namespace

      給微服務配置 namespace 可以通過修改服務的配置文件來實現,只需修改 spring.cloud.nacos.discover.namespace 屬性即可。

      例如,修改 order-service 的 application.yml 文件:

      spring:
        application:
          name: orderservice #設置當前應用名稱,在eureka中Aoolication顯示,通過該名稱可以獲取路徑
        cloud:
          nacos:
            server-addr: http://localhost:8848 # nacos服務地址
            discovery:
              cluster-name: HZ # 配置集群名稱,例如:HZ,代指杭州集群
              namespace: 202e0704-a251-41f3-9d67-8e640688c5a5 #這里填的是命名空間的id而不是名稱

      結果如下:

       

      6、nacos注冊中心運行機制

      運行機制如下圖:

      nacos 運行機制跟 eureka 差不多,都支持服務注冊和服務拉取,都支持服務提供者心跳方式做健康檢測。但是 nacos 不僅僅可以由服務區拉取服務列表,也可以由注冊中心主動推送服務變更信息給服務,這樣服務得到的服務清單能得到及時更新。并且 nacos 中的服務還區分臨時實例和非臨時實例。

      臨時實例和非臨時實例的區別:

      • 臨時實例:nacos 采用心跳模式來檢測臨時實例的狀態,也就是需要由服務實例來主動發出心跳。臨時實例如果心跳不正常則會被直接剔除
      • 非臨時實例:nacos 采用主動檢測模式來檢測非臨時實例的狀態,也就是由注冊中心主動去詢問實例的狀態。非臨時實例狀態異常并不會被剔除。

      默認情況下,在 nacos 中注冊的服務實例都是臨時實例。要想修改為非臨時實例,可以通過修改服務的配置文件來實現,只需修改 spring.cloud.nacos.discover.ephemeral 屬性即可,如下:

       

      6.1、Nacos與Eureka的區別

      Nacos與Eureka的區別如下:

      1. Nacos 支持服務端主動檢測提供者狀態:臨時實例采用心跳模式,非臨時實例采用主動檢測模式
      2. 臨時實例心跳不正常會被剔除,非臨時實例則不會被剔除
      3. Nacos 支持服務列表變更的消息推送模式,服務列表更新更及時
      4. Nacos 集群默認采用AP方式,當集群中存在非臨時實例時,采用CP模式;Eureka采用AP方式

       

      posted @ 2022-04-22 17:00  wenxuehai  閱讀(18982)  評論(0)    收藏  舉報
      //右下角添加目錄
      主站蜘蛛池模板: 久久一日本道色综合久久| 亚洲精品第一页中文字幕| 色 亚洲 日韩 国产 综合| 国产不卡的一区二区三区| xxxxbbbb欧美残疾人| 久久精品蜜芽亚洲国产av| 国产成人欧美综合在线影院| 久久精品国产一区二区三| 东京一本一道一二三区| 国自产拍偷拍精品啪啪模特| 国产一区二区三区九九视频| 国产一区二区三区av在线无码观看| 深夜福利成人免费在线观看| 中文字幕日韩精品国产| 国产午夜福利免费入口| 精品国产这么小也不放过| 挺进粗大尤物人妻中文字幕| 97精品伊人久久久大香线蕉| 日韩精品无码人妻一区二区三区| 久热这里有精品视频播放| 人妻系列无码专区69影院| 国产精品高清一区二区三区不卡 | 精品国产精品午夜福利| 又黄又爽又色视频免费| 亚洲精品无码你懂的| 国产成人AV国语在线观看| 中文字幕人妻不卡精品| 国产玩具酱一区二区三区| 92国产精品午夜福利| 四虎影院176| 久久亚洲女同第一区综合| 日韩有码中文在线观看| 精品国产免费一区二区三区香蕉 | 亚洲国产亚洲综合在线尤物| 无码人妻精品一区二区三区东京热| 日韩精品成人一区二区三| 免费无码AV一区二区波多野结衣| 精品麻豆国产色欲色欲色欲WWW| 久久久无码精品亚洲日韩蜜桃| 国产成人无码A区在线观看视频| 国产羞羞的视频一区二区|