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/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

发表回复

登录后才能评论