Nacos 服务注册中心

Nacos概念

1、Nacos 的缩写 (Dynamic Naming Configueration Service),Nanaming/nameServer 即注册中心,coconfiguration 即配置中心,service 是指该注册/配置中心都是以服务为核心。
2、Nacos 是什么?Nacos = Eureka + Config +Bus】:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 就是注册中心 + 配置中心的组合。
3、Nacos 能干嘛?
(1)替代 Eureka 做服务注册中心
(2)替代 Config 做服务配置中心

Nacos的安装运行、集群部署和持久化配置

Nacos 安装、集群部署和持久化配置:https://blog.csdn.net/qq_36763419/article/details/121179174

Nacos 服务注册中心

SpringCloud Alibaba Nacos Discovery 官方文档

基于 Nacos 的服务提供者

一、新建 cloud-alibaba-nacos-provider-payment9001 模块
1、引入 pom 依赖
(1)父工程 pom 依赖

<!--SpringCloud Alibaba 依赖-->
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-alibaba-dependencies</artifactId>
     <version>2.1.0.RELEASE</version>
     <type>pom</type>
     <scope>import</scope>
</dependency>

(2)本模块 pom 依赖

<!--Nacos 服务注册与发现依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、写 yml 配置文件

server:
  port: 9001

spring:
  application:
    name: nacos-discovery-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

management:
  endpoints:
    web:
      exposure:
        include: "*"

3、主启动

@SpringBootApplication
//此处开启的注解是:@EnableDiscoveryClient
@EnableDiscoveryClient
public class NacosDiscoveryProviderPaymentMain9001 {
    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryProviderPaymentMain9001.class, args);
    }
}

4、业务类

@RestController
@Slf4j
public class PaymentController {

    @Value(value = "${server.port}")
    private String serverPort;

    @GetMapping(value = "/provider/nacos/discovery/{string}")
    public String echo(@PathVariable String string) {
        return "Nacos provider " + serverPort + " : Hello " + string;
    }
}

5、测试验证:启动nacos server控制台:http://localhost:8848/nacos,启动服务提供者,可以在 Nacos 的服务管理 》服务列表中 看到服务提供者的服务名称:
在这里插入图片描述

二 、同理参考 9001 新建负载均衡:cloud-alibaba-nacos-provider-payment9002
1、也可以通过虚拟映射,如下图所示:
在这里插入图片描述

基于 Nacos 的服务提供者

1、新建cloud-alibaba-nacos-discovery-consumer-order80模块
2、引入 pom 依赖

<!--Nacos 服务注册与发现依赖-->
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3、写 yml 配置文件

server:
  port: 80

spring:
  application:
    name: nacos-discovery-payment-order
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

management:
  endpoints:
    web:
      exposure:
        include: "*"

4、主启动

@SpringBootApplication
//此处开启的注解是:@EnableDiscoveryClient
@EnableDiscoveryClient
public class NacosDiscoveryConsumerOrderMain80 {
    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryConsumerOrderMain80.class, args);
    }
}

5、配置类

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

6、controller

@RestController
@Slf4j
public class PaymentController {

    private  String INVOKE_URI = "http://nacos-discovery-payment-provider";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping(value = "/consumer/nacos/discovery/{string}")
    public String echo(@PathVariable String string) {

        return restTemplate.getForObject(INVOKE_URI + "/provider/nacos/discovery/" + string, String.class);
    }
}

测试:消费者访问服务提供者负载均衡正常。因为 Nacos 的依赖包中集成了 Netflix Ribbon
在这里插入图片描述

服务注册中心对比

一、Nacos 与其他注册中心特性对比图
在这里插入图片描述
二、Nacos 支持 AP 和 CP 模式的切换
1、C 是所有节点在同一时间看到的数据是一致的;而 A 的定义是所有的请求都会收到响应。
2、何时选择使用 AP 或 CP 模式?

(1)一般来说,如果不需要存储服务级别的信息且服务实例是通过 nacos-client 注册,并能够保持心跳上报,那么选择 AP 模式。当前主流的服务如:SpringCloud 和 Dubbo 服务,都适合用于 AP 模式,AP 模式为了服务的可能性而减弱一致性,因此 AP 模式下只支持注册临时实例
(2)如果需要在服务级别编辑或者存储配置信息,那么 CP 是必须,K8S 服务和 DNS 服务都是用于 CP 模式。CP 模式则支持注册持久换实例,此时是以 Raft 协议为集群运行模式。该模式下注册实例之前必须先注册服务,如果服务不存在,则返回错误。
(3)模式切换:curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌守

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值