SpringBootNacos——微服務治理的好幫手

一、服務註冊和發現

服務註冊和發現是微服務架構中比較重要的一環,而SpringBootNacos提供了強大的服務註冊和發現功能,讓我們的微服務架構更加健壯。關於Nacos的安裝和配置,這裡就不詳細闡述了,下面直接從使用SpringBootNacos註冊服務開始說明。

首先配置pom.xml文件,添加以下依賴(同時需要保證SpringBoot的版本不低於2.0.4):


    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>

接著在application.yml中配置註冊中心的地址:


spring:
  application:
    name: service-provider  #服務名稱
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #Nacos服務端地址

然後在啟動類上添加註解@EnableDiscoveryClient即可實現服務的註冊和發現。

二、動態配置管理

SpringBootNacos還提供了強大的動態配置管理功能,可以輕鬆實現配置的熱更新、多環境配置等功能。下面我將從實際應用的角度來介紹。

我們可以在配置Nacos上配置多個配置集和多個配置文件。例如:


data-id: example
group: test
refreshable-dataid: true
data-type: json
content:
  server:
    port: 8080
    context-path: /api
    #讀取其他配置文件
    bootstrap:
      #指定環境
      profiles:
        active: dev
      cloud:
        #指定從Nacos讀取配置文件
        nacos:
          config:
            server-addr: localhost:8848
            file-extension: yaml #讀取解析yaml格式文件
            group: test
            prefix: service-pro #配置文件的前綴
            refreshable: true

可以看到我們使用的是yaml格式的配置文件,SpringBootNacos也支持其他常見的配置格式(properties、json等)。其中,bootstrap.yml用來設置環境變數,因為SpringBoot默認會讀取配置文件中的application.yml,而bootstrap.yml比它的優先順序更高。

配置好這些文件後,我們就可以在業務代碼中直接使用@Value去讀取配置文件中的值,如下所示:


@Configuration
public class AppConfig {
    @Value("${server.port}")
    private int port;   //讀取埠號

    @Bean
    public RestHighLevelClient restHighLevelClient(){
        return new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost(host, port, "http")));
    }
}

配置的變動會自動觸發SpringBoot的刷新機制,幾乎不需要進行額外的配置和代碼編寫。

三、分散式事務管理

SpringBootNacos提供了完整的分散式事務管理解決方案。本節介紹如何使用TXC透明分散式事務來實現跨資料庫事務。

在pom.xml中引入相應的依賴:


<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-seata-all</artifactId>
    <version>2.2.1.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>1.4.2</version>
</dependency>

然後需要在application.yml中添加seata的配置:


spring:
  application:
    name: txc-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    alibaba:
      seata:
        tx-service-group: my_test_tx_group  #開啟分散式事務
    config:
        enabled: true
        type: nacos
        nacos:
          server-addr: localhost:8848
          group: DEFAULT_GROUP                         #對應配置文件中的GROUP
          namespace: 4ba55e16-16df-4bd7-a436-075a2bde0c32 #對應命名空間ID
        label: master

在業務代碼上通過添加@GlobalTransactional註解來實現分散式事務,其中TXC是Seata中專為分庫分表場景設計的事務管理模式,可以在較低的性能損耗下完成一致性事務操作。


@Service
@Slf4j
public class TxcDemoServiceImpl implements ITxcDemoService {

    @Autowired
    private TxcMapper txcMapper;

    @GlobalTransactional
    public void insertUser(UserDO user) {
        txcMapper.insertUser(user);
        // insert other tables...
    }

    @GlobalTransactional
    public void deleteAll() {
        txcMapper.deleteAll();
        // delete other tables...
    }
}

結語

本文介紹了SpringBootNacos的三個重要功能:服務註冊和發現、動態配置管理、分散式事務管理。不得不說,SpringBootNacos為微服務架構的實現提供了非常便捷的幫助,極大地降低了開發的難度和維護的成本。希望本文對大家了解SpringBootNacos有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/310107.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:32
下一篇 2025-01-04 19:32

相關推薦

  • 極光 IM:實現即時通訊的好幫手

    一、極光 IM 簡介 極光 IM (JMessage)是由極光推出的即時通訊雲服務,可為開發者提供穩定、快速的消息推送、聊天、群組等功能。藉助極光 IM,開發者可以快速實現即時通訊…

    編程 2025-02-05
  • 自動刷課插件:提高學習效率的好幫手

    隨著網路課程的普及,學生們越來越需要藉助計算機來完成學習任務。然而,在線學習也有一些弊端,比如需要花費大量的時間刷課。近年來,自動刷課插件應運而生,成為了學生們提高學習效率的好幫手…

    編程 2025-01-16
  • 提高Android應用性能,LRUCache是個好幫手

    在Android應用開發中,優化應用性能是一項非常重要的任務。應用程序的性能優化需要仔細考慮內存使用和緩存管理。在這篇文章中,我將介紹一種優化緩存管理的技術——LRUCache,並…

    編程 2024-12-31
  • Mac分屏軟體——提高工作效率的好幫手

    分屏軟體是現代專業人士必不可少的工具之一,特別是在Mac操作系統上。Mac分屏軟體讓用戶可以將屏幕分成多個部分,並同時運行多個應用程序,進而提高工作效率。本文章將從多個方面介紹Ma…

    編程 2024-12-28
  • CSS Min: 優化網頁性能的好幫手

    CSS Min是一個用於壓縮CSS代碼的工具,它通過刪除CSS中的無用空格、注釋等內容,將CSS代碼壓縮至更小的體積,從而優化網頁性能。使用CSS Min可以使網頁的載入速度更快,…

    編程 2024-12-19
  • echartvue:實現數據可視化的好幫手

    一、什麼是echartvue echartvue是一種基於Vue.js框架的數據可視化庫,其內置了ECharts圖表庫,讓前端開發者可以輕鬆地實現各種互動式的數據可視化圖表。使用e…

    編程 2024-12-12
  • Oxidized: 自動備份網路設備的好幫手

    一、什麼是Oxidized? Oxidized是一個Ruby編寫的開源項目,它能夠幫助我們備份網路設備配置文件並進行版本控制。它通過SSH和Telnet來連接網路設備,將設備的配置…

    編程 2024-11-15
  • linter/formatter: 編程中的好幫手

    在編寫代碼的過程中,我們經常會遇到一些與代碼規範/格式有關的問題。如果沒有一種好的工具來輔助我們檢查、格式化代碼,那麼將會降低編碼效率,也可能導致代碼的質量下降。 一、什麼是lin…

    編程 2024-11-03
  • Swift Playground: 編程學習的好幫手

    Swift Playground是蘋果開發的一個互動式的編程學習應用,它可以幫助初學者學習Swift編程語言。本文將從不同的方面對Swift Playground進行詳細的闡述,包…

    編程 2024-10-25
  • .bash: 在命令行下的全能好幫手

    一、bash是什麼 Bash是Unix及Linux的一個命令行解釋器,是「Bourne Again SHell」的縮寫。它由Brian Fox為GNU操作系統開發。Bash是大多數…

    編程 2024-10-24

發表回復

登錄後才能評論