每日笔记8.29

Nacos实现服务注册中心和服务配置

服务注册中心

启动nacos,8848端口

添加子模块到nacos-server

pom.xml
<!--引入nacos场景驱动器-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
application.yml
#配置nacos
spring:   
 cloud:
  nacos:
    discovery:
      server-addr: localhost:8848 #配置nacos-server的地址
启动类加@EnableDiscoveryClient

服务名就是spring: application: name:下的名称

  可以配置消费者consumer和生产provider,消费者可加ribbon+restemplate   

consumer子模块请求nacos的provider子模块集群(member-service-nacos-provider),默认根据轮询来选择调用哪个provider子模块和对应的controller

controller
@RestController
public class MemberNacosConsumerController {
//member-service-nacos-provider就是服务名
    public static final String MEMBER_SERVICE_PROVIDER_URL =
            "http://member-service-nacos-provider";

    @Resource
    private RestTemplate restTemplate;

    @Resource
    private DiscoveryClient discoveryClient;

    //添加member数据到数据库
    @PostMapping("/member/nacos/consumer/save")
    public Result<Member> save(Member member){

        //member :发送到对应url的数据
        //Result.class :返回数据类型
        return restTemplate.postForObject(MEMBER_SERVICE_PROVIDER_URL
                +"/member/save",member,Result.class);
    }

Nacos与eureka服务注册中心的区别

前者支持ap和cp,后者只支持ap(无心跳服务不会立即销毁)

cp和ap切换

Nacos 集群默认支持的是CAP原则中的AP原则,但是也可切换为CP原则(一般不切
换)
 CURL切换命令: curl -X PUT
'$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

 URL指令:
$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP

服务配置

pom.xml

<!--nacos-config配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-nacos-config</artifactId>
</dependency>

application.yml

spring:
  profiles:
    active: dev #指定环境是 dev/test/prod...开发环境(dev)、测试环境(test)和生产环境(prod)

bootstrap.yml

server:
  port: 5000

spring:
  application:
    #这里的 name 需要参考 nacos 配置中心的 Data Id
#     zyz-nacos-config-client-dev.yaml
    name: zyz-nacos-config-client
  cloud:
    nacos:
#     配置中心
      config:
        server-addr: localhost:8848
        file-extension: yaml #指定 yaml 格式的配置
#     服务注册中心
      discovery:
        server-addr: localhost:8848

添加配置

获取config的配置信息

@RestController
@Slf4j
@RefreshScope//实现配置数据的自动刷新
public class ConfigNacosController {
    @Value("${config.ip}")
    private String configIp;
    @Value("${config.name}")
    private String configName;

    @GetMapping("/config/nacos/ip")
    public String getConfigIp() {
        return configIp;
    }
    @GetMapping("/config/nacos/name")
    public String getConfigName() {
        return configName;
    }
}

注意细节

@Value("${config.ip}"), 是 import org.springframework.beans.factory.annotation.Value;
而不是 lombok 包下的. 

配置文件 application.yml 和 bootstrap.yml 结合会得到配置文件/资源的地址

file-extension: yaml而不是yml

springboot 中配置文件的加载是存在优先级顺序的,bootstrap.yml 优先级高于application.yml

@RefreshScope 是 springcloud 原生注解,实现配置信息自动刷新, 如果在 Nacos Server 修改了配置数据,Client 端就会得到最新配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值