一、服務註冊和發現
服務註冊和發現是微服務架構中比較重要的一環,而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-hant/n/310107.html