初学SpringCloud Alibaba——Nacos

我只是个新手小白,很多地方考虑不到,欢迎大家指出,不要喷我。ヾ(◍°∇°◍)ノ゙

Nacos简介

官方文档

是什么

1.一个更易于构建原生应用的动态服务发现、配置管理和服务管理平台
2.Nacos:Dynamic Naming and Configuration Service
3.Nacos就是注册中心+配置中心的组合。
Nacos=Eureka+Config+Bus

各大注册中心对比

| 服务注册于发现框架 | CAP 模型 |控制台管理|社区活跃度||--|--|-- |--||Eureka|AP|支持|低(2.x版本闭源)|Zookeeper|CP|不支持|中|Consul|CP|支持|高|Nacos|AP|支持|高|
Nacos切换CP、AP:
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverModel&value=CP'

Nacos作为注册中心的使用

在这里插入图片描述

POM文件

<!--SpringCloud ailibaba nacos -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置文件

spring:
  application:
    name: server-name
  cloud:
    nacos:
      discovery:
        server-addr: IP:port #配置Nacos地址

作为消费者使用与eureka一样,也是使用restTemplate或者openFeign通过服务名访问就好。
举个栗子:

@RestController
@Slf4j
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;

	// 这里填服务者注册的服务名
    @Value("${http://nacos-payment-provider}")
    private String serverURL;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }

}

注:nacos包里带了ribbon,所以支持负载均衡。

Nacos作为配置中心的使用

POM

<!--nacos-config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置文件:

bootstrap.yml:

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: IP:port #Nacos服务注册中心地址
      config:
        server-addr: IP:port #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: TEST_GROUP # 指定组
        namespace: f18ae372-519c-4407-9495-ba0824858b84 # 指定命名空间

# 配置文件匹配规则
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml

举个栗子:
在nacos控制台中,
在命名空间ID:f18ae372-519c-4407-9495-ba0824858b84中新增配置
在这里插入图片描述在这里插入图片描述

@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

测试结果:
在这里插入图片描述

Nacos的匹配规则

在这里插入图片描述${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

动态刷新

Nacos自带动态刷新!且不需要我们再发送指令!敲方便!

分类配置

问题1:
实际开发中,通常一个系统会准备
dev开发环境
test测试环境
prod生产环境
如何保证指定环境启动时服务能正确读到Nacos上相应环境的配置呢

问题2:
一个大型分布式微服务系统会有很多微服务子项目
每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…
那怎么对这些微服务配置进行管理呢?

图形化管理
配置管理

命名空间

在这里插入图片描述

Namespace+group+data ID三者关系?为什么这么设计?
  1. 是什么
    类似java的package名和类名
    最外层的namespace用于区分部署环境,Group和DataId逻辑上区分两个目标对象
  2. 三者情况
    在这里插入图片描述

Nacos集群和持久化配置

官方架构图
在这里插入图片描述翻译:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值