SpringCloud Alibaba Nacos(一)

Nacos简介

Nacos服务注册和配置中心,兼顾两种

为什么叫Nacos

前四个字母分别为:Naming(服务注册) 和 Configuration(配置中心) 的前两个字母,后面的s 是 Service

是什么

一个更易于构建云原生应用的动态服务发现,配置管理和服务

Nacos:Dynamic Naming and Configuration Server

Nacos就是注册中心 + 配置中心的组合

等价于:Nacos = Eureka + Config

能干嘛

替代Eureka做服务注册中心

替代Config做服务配置中心

下载

官网:https://github.com/alibaba/nacos

nacos文档:https://nacos.io/zh-cn/docs/what-is-nacos.html

比较

在这里插入图片描述
Nacos在阿里巴巴内部有超过10万的实例运行,已经过了类似双十一等各种大型流量的考验

安装并运行

本地需要 java8 + Maven环境

下载:地址

github经常抽风,可以使用:https://blog.csdn.net/buyaopa/article/details/104582141

解压后:运行bin目录下的:startup.cmd

打开:http://localhost:8848/nacos

结果页面
在这里插入图片描述

Nacos作为服务注册中心

服务提供者注册Nacos

引入依赖

<!--SpringCloud alibaba nacos-->

<dependency>

    <groupId>com.alibaba.cloud</groupId>

    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

修改yml

server:

  port: 9002

spring:

  application:

    name: nacos-payment-provider

  cloud:

    nacos:

      discovery:

        server-addr: 127.0.0.1:8848   # 配置nacos地址

management:

  endpoints:

    web:

      exposure:

        include: '*'

主启动类
添加 @EnableDiscoveryClient 注解

@SpringBootApplication

@EnableDiscoveryClient

public class PaymentMain9002 {

    public static void main(String[] args) {

        SpringApplication.run(PaymentMain9002.class);

    }

}

业务类

@RestController

public class PaymentController {

    @Value("${server.port}")

    private String serverPort;



    @GetMapping("/payment/nacos/{id}")

    public String getPayment(@PathVariable("id") Integer id) {

        return "nacos registry ,serverPore:"+serverPort+"\t id:"+id;

    }

}

启动

nacos-payment-provider已经成功注册了
在这里插入图片描述
这个时候 nacos服务注册中心 + 服务提供者 9001 都OK了

通过IDEA的拷贝映射
在这里插入图片描述
添加

-DServer.port=9003

在这里插入图片描述
最后能够看到两个实例
在这里插入图片描述
在这里插入图片描述

服务消费者注册到Nacos

Nacos天生集成了Ribbon,因此它就具备负载均衡的能力

引入依赖


<!--SpringCloud alibaba nacos-->

<dependency>

    <groupId>com.alibaba.cloud</groupId>

    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

修改yml


server:

  port: 83

spring:

  application:

    name: nacos-order-consumer

  cloud:

    nacos:

      discovery:

        server-addr: localhost:8848



# 消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)

service-url:

  nacos-user-service: http://nacos-payment-provider

增加配置类
因为nacos集成了Ribbon,因此需要配置RestTemplate,同时通过注解 @LoadBalanced实现负载均衡,默认是轮询的方式


@Configuration

public class ApplicationContextConfig {

    @Bean

    @LoadBalanced

    public RestTemplate getRestTemple() {

        return new RestTemplate();

    }

}

业务类


@RestController

@Slf4j

public class OrderNacosController {



    @Resource

    private RestTemplate restTemplate;



    @Value("${service-url.nacos-user-service}")

    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);

    }

}

测试


http://localhost:83/consumer/payment/nacos/13

得到的结果


nacos registry ,serverPore:9001 id:13

nacos registry ,serverPore:9002 id:13

我们发现只需要配置了nacos,就轻松实现负载均衡

服务中心对比

之前我们提到的注册中心对比图
在这里插入图片描述
但是其实Nacos不仅支持AP,而且还支持CP,它的支持模式是可以切换的,我们首先看看Spring Cloud Alibaba的全景图,
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值