前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud进阶(2)–Nacos基础2

SpringCloud进阶(2)–Nacos基础2

作者头像
摸鱼的G
发布2023-12-20 11:19:00
1130
发布2023-12-20 11:19:00
举报
文章被收录于专栏:火属性小虫火属性小虫
SpringCloud进阶(2)–Nacos基础2

集群分区

在一个分布式应用中,一个相同的服务可能会在不同的机器、位置上启动,当我们一个服务去调用另一个服务,如果被调用的服务存在多个分布式,我们应该优先选择调用方同一区域的服务进行调用,使得响应速度更快。

因此我们需要对不同机房部署的服务进行分区,而Nacos默认的分区是DEFAULT分区。

注:Eureka也存在集群分区如:

这里写入的就是集群分区

在Nacos中我们通过配置文件来实现:

代码语言:javascript
复制
spring:
  application:
    name: borrowservice
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        # 修改为重庆地区的集群
        cluster-name: Chongqing

当然我们也可以在启动配置中直接写入环境变量spring.cloud.nacos.discovery.cluster-name

之后就可以看到服务被划分到不同的集群了:

之后,我们需要开启Nacos的负载均衡才能实现区域优先调用机制,配置文件:

代码语言:javascript
复制
spring:
  application:
    name: borrowservice
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        cluster-name: Chengdu
    # 将loadbalancer的nacos支持开启,集成Nacos负载均衡
    loadbalancer:
      nacos:
        enabled: true

除了根据区域优先调用之外,同一个区域内的实例也可以单独设置权重,Nacos会优先选择权重更大的实例进行调用,我们可以直接在管理页面中进行配置,也可以在配置文件进行配置:

代码语言:javascript
复制
spring:
  application:
    name: borrowservice
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        cluster-name: Chengdu
        # 权重大小,越大越优先调用,默认为1
        weight: 0.5

配置中心

如同Erueka支持配置中心远程加载配置,Nacos也有配置中心的功能。

我们在管理页面的配置管理中可以添加配置信息,注意Data ID的格式跟之前一样,应用名称-环境.yml,如果只编写应用名称,那么代表此配置文件无论在什么环境下都会使用,然后每个配置文件都可以进行分组,也算是一种分类方式:

之后我们在项目中引入依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

然后就可以配置bootstrap.yml(在application.yml之前加载,可以实现配置文件远程获取)了:

同时,Nacos还支持配置文件热更新,我们只需要使用注解@RefreshScope如:

代码语言:javascript
复制
@RestController
@RefreshScope   //添加此注解就能实现自动刷新了
public class TestController {

    @Value("${test.txt}")
    String txt;

    @RequestMapping("/test")
    public String test(){
        return txt;
    }
}

这样该Controller的信息就会随着配置文件改变而热更新了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringCloud进阶(2)–Nacos基础2
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档