• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SpringCloud - Nacos學習筆記

    標簽: java  微服務

    nacos簡介

    Nacos 支持幾乎所有主流類型的“服務”的發現、配置和管理:

    • Spring Cloud
    • Dubbo
    • Spring Boot

    Nacos 的關鍵特性包括:

    • 服務發現和服務健康監測
    • 動態配置服務
    • 動態 DNS 服務
    • 服務及其元數據管理

    詳細介紹請到nacos官網 https://nacos.io/zh-cn/docs/what-is-nacos.html

    Nacos使用

    這里僅通過SpringCloud來介紹Nacos的使用

    Nacos Server安裝

    下載地址 https://github.com/alibaba/nacos/releases,我這里使用的是1.2.1版本
    在這里插入圖片描述

    unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
    cd nacos/bin
    

    Nacos啟動

    sh startup.sh -m standalone
    

    Nacos關閉

    sh shutdown.sh
    

    單機模式支持mysql

    1. 初始化mysql數據庫,數據庫初始化文件:nacos-mysql.sql(/usr/local/nacos/conf)
    2. 修改conf/application.properties文件,增加支持mysql數據源配置(目前只支持mysql),添加mysql數據源的url、用戶名和密碼
    3. 再以單機模式啟動nacos,nacos所有的數據都寫到了mysql

    集群部署

    參考官網 https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

    配置管理

    客戶端使用方式

    完成上面步驟后開始使用nacos完成配置管理

    1. 添加pom依賴
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>0.2.1.RELEASE</version>
    </dependency>
    
    1. 在bootstrap.properties或bootstrap.yml中配置 Nacos server 的地址和應用名
    spring:
      application:
        name: mall-web-order
      cloud:
        nacos:
          config:
            server-addr: 127.0.0.1:8884
            file-extension: yaml
    
    之所以需要配置 spring.application.name ,是因為它是構成 Nacos 配置管理 dataId字段的一部分。
    
    ```yml
    ${prefix}-${spring.profiles.active}.${file-extension}
    ```
    - prefix 默認為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
    - spring.profiles.active 即為當前環境對應的 profile,詳情可以參考 Spring Boot文檔。 注意:當 spring.profiles.active 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 
    
    ```yml
    ${prefix}.${file-extension}
    ```
    - file-exetension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型。
    
    1. 在Nacos管理中心添加配置
      在這里插入圖片描述

    在這里插入圖片描述
    通過上面配置,就可以替換本地配置文件

    動態刷新

    1. 讀取輸出配置
    //動態刷新
    @RefreshScope
    @RestController
    @RequestMapping("/config")
    public class ConfigController {
    	//讀取配置
        @Value("${config.msg}")
        private String msg;
    
        @GetMapping("get")
        public String get(){
    
            return msg;
        }
    }
    
    1. 在配置中心中添加配置
      在這里插入圖片描述

    在這里插入圖片描述

    1. 修改配置
      在這里插入圖片描述

    命名空間與分組

    命名空間

    用于進行租戶粒度的配置隔離。不同的命名空間下,可以存在相同的 Group 或 Data ID 的配置 Namespace 的常用場景之一是不同環境的配置
    的區分隔離,例如開發測試環境和生產環境的資源(如配置、服務)隔離等。 在沒有明確指定 ${spring.cloud.nacos.config.namespace} 
    配置的情況下, 默認使用的是 Nacos 上 Public 這個namespace
    

    在這里插入圖片描述

    生成命名空間id:47384e27-b550-4e8d-b957-eefff432a52c 通過配置指定命名空間

    spring:
      cloud:
        nacos:
          config:
            server-addr: 49.233.166.26:8848
            file-extension: yaml
            namespace: 47384e27-b550-4e8d-b957-eefff432a52c
    

    分組

    在新建配置中指定分組
    在這里插入圖片描述
    通過group指定分組

    spring:
      cloud:
        nacos:
          config:
            server-addr: 49.233.166.26:8848
            file-extension: yaml
            group: DEFAULT_GROUP
    

    自定義擴展的 Data Id 配置

    服務注冊發現

    1. 引入pom依賴
      <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
           <version>${nacos.version}</version>
       </dependency>
    
    1. 在application.yml添加配置
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 49.233.166.26:8848
            metadata:
              management:
                context-path: ${server.servlet.context-path}/actuator
    
    1. 通過springcloud注解@EnableDiscoveryClient 開始服務注冊發現

    在這里插入圖片描述

    1. 注冊成功之后就可以通過服務名調用指定的服務,見官網例子
      @RestController
      public class TestController {
    
           private final RestTemplate restTemplate;
    		
    		@LoadBalanced
    	    @Bean
    	    public RestTemplate restTemplate() {
    	        return new RestTemplate();
    	    }
    	    
           @Autowired
           public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
    
           @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
           public String echo(@PathVariable String str) {
               return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
           }
       }
    
    版權聲明:本文為zhanglisheng2122原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/zhanglisheng2122/article/details/109285079

    智能推薦

    基于TCP/IP的網絡聊天室用Java來實現

    基于TCP/IP的網絡聊天室實現 開發工具:eclipse 開發環境:jdk1.8 發送端 接收端 工具類 運行截圖...

    19.vue中封裝echarts組件

    19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...

    劍指Offer39-調整數組順序使奇數位于偶數前面

    一開始想著用冒泡排序的方法來做,但是bug還是很多,后來看了評論區答案,發現直接空間換時間是最簡單的,而且和快排的寫法是類似的。...

    【一只蒟蒻的刷題歷程】【藍橋杯】歷屆試題 九宮重排 (八數碼問題:BFS+集合set)

    資源限制 時間限制:1.0s 內存限制:256.0MB 問題描述 如下面第一個圖的九宮格中,放著 1~8 的數字卡片,還有一個格子空著。與空格子相鄰的格子中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。 我們把第一個圖的局面記為:12345678. 把第二個圖的局面記為:123.46758 顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。 本題目的任務是已知九宮的初態...

    dataV組件容器寬高發生變化后,組件不會自適應解決方法

    項目中需要大屏幕數據展示,于是使用了dataV組件,但是使用是發現拖動瀏覽器邊框,dataV組件顯示異常,如圖: 于是查了官網,官網的解釋如下:   于是按照官網的意思編寫代碼: 于是可以自適應了...

    猜你喜歡

    CSS3干貨10:如何做一個板塊標題水平線左邊帶顏色效果

    很多網站在設計欄目標題的時候,喜歡用下劃線分開欄目標題和內容部分。 而且線條左邊的部分往往還有顏色,且這個顏色跟標題的文字長短保持一致。效果如圖所示: 這種效果其實很簡單。 我這里給大家推薦兩種方式: 假定我們的標題部分 HTML 結構如下: 方式一:利用下邊框。灰色部分是 h1 的下邊框,藍色部分是 span 標簽的下邊框。 h1 的高度為 40px,span 也設置它的高度為 40px。這樣,...

    拜師————python基礎入門——程序的構成,對象,引用,棧內存和堆內存,標識符命名規則——day4

    第九節課:任務9:009.程序的構成 Python程序的構成,一個程序是由什么構成的 1.python程序由模塊組成 , 一個模塊對應一個python源文件,(文件后綴名.py) 2.模塊由語句構成 運行程序時,安裝模塊中語句的順序依次執行。 代碼的組織和縮進 “龜叔”在設計python時,直接通過縮進來組織代碼 縮進時,幾個空格都是允許的,但是空格數必須統一,我們通常用四...

    spark 總結 算子篇

    1、創建工程 在這里添加 spark core包,添加bulid 插件。 算子總結 map 算子 主要是做數據結構的轉換,數據條數不變。 mapPartitions(func) 對分區數據進行轉換。將某一個分區的所有數據拿過來形成一個可迭代的集合要求 返回可迭代的集合。提高效率會使用它。 應用場景: 只對分區內數據進行數據。缺點是不釋放,可能導致oom。 當內存空間較大的時候建議使用 mapPar...

    淺析Redis復制過程

    文章目錄 摘要 復制 當 Master 關閉持久化時,復制的安全性 復制的工作原理 配置 只讀 Slave 寫入Master Slave如何處理key的過期 參考 摘要 Redis默認使用異步復制,其特點是低延遲和高性能。異步復制就意味著在故障轉移期間,有丟失數據的風險。你可以參考Redis 集群文檔,了解關于高可用性和故障轉移的信息,本文主要討論Redis 復制功能的基本特性。 復制 在 Red...

    OpenStack(kilo)界面dashboard的二次開發(二)-增加PanelGroup

    上一博文開了一個頭,簡單的總結了下代碼結構及Panel的增加,這一篇對Panelgroup的增加做一個詳細的總結。 增加Panelgroup Panelgroup字面意思很好理解就是panel組,在openstack的界面中就是多個panel的集合。上一次的代碼分析中其實已經有了對PanelGroup的簡單介紹,這次就看看如何增加panelgroup。 這次直接查看Admin(管理員)Dashbo...

    精品国产乱码久久久久久蜜桃不卡