1. SpringCloud Alibaba Nacos 之 服务注册中心

SpringCloud Alibaba系列文章列表

0. SpringCloud Alibaba入门简介
1. SpringCloud Alibaba Nacos 之 服务注册中心
2. SpringCloud Alibaba Nacos 之 服务配置中心
3. SpringCloud Alibaba Nacos 之 集群
4. SpringCloud Alibaba Sentinel 服务限流熔断(万字长文)

前言

官方文档:
https://nacos.io/zh-cn/docs/quick-start.html
https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/zh-cn/index.html#_spring_cloud_alibaba_nacos_discovery

1. Nacos简介


1.1 是什么

Nacos 是一个 Alibaba 开源的、易于构建云原生应用的动态服务发现配置管理和服务管理平台。

使用 Spring Cloud Alibaba Nacos Discovery,可基于 Spring Cloud 的编程模型快速接入 Nacos 服务注册功能。

Nacos是注册中心+配置中心的组合,等价于 Eureka + Config + Bus

1.2 能干嘛
  • 服务注册中心
  • 服务配置中心
1.3 去哪下

下载地址 : https://github.com/alibaba/nacos/releases

在这里插入图片描述

1.4 各种注册中心对比
服务注册与发现框架CAP模型控制台管理社区活跃度
EurekaAP支持低(2.x版本闭源)
ZookeeperCP不支持
ConsulCP支持
NacosAP/CP支持

2. 安装运行Nacos


当前以windows版本为例,下载nacos-server-1.4.0.zip
解压zip包,得到nacos文件夹
nacos/bin目录下,cmd命令行,执行命令

startup.cmd -m standalone (standalone代表着单机模式运行)

在这里插入图片描述
访问 http://127.0.0.1:8848/nacos , 用户名nacos,密码 nacos
登录成功如下图,则nacos启动成功。
在这里插入图片描述

3. 服务注册中心


image-20201222154316084

3.1 简介

如上图,搭建

两个服务提供者 cloudalibaba-provider-payment9001、cloudalibaba-provider-payment9002

一个消费者 cloudalibaba-consumer-order83

通过Ribbon+ RestTemplate远程调用;(nacos自带负载均衡,因为依赖了ribbon)

image-20201222162550911

3.2 服务提供者

新建子项目 cloudalibaba-provider-payment9001

  • pom.xml
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • application.yml

    server:
      port: 9001
    
    spring:
      application:
        name: nacos-payment-provider
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848 #配置nacos地址
    
    management: #暴露端口
      endpoints:
        web:
          exposure:
            include: '*'
    
  • 启动类

    @EnableDiscoveryClient
    
  • 业务类 Controller

    @RestController
    public class PaymentController {
    
        @Value("${server.port}")
        private String serverPort;
    
        @GetMapping(value = "/payment/nacos/{id}")
        public String getPayment(@PathVariable("id") Integer id)
        {
            return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
        }
    
    }
    
  • 接口测试

    启动nacos,启动cloudalibaba-provider-payment9001

    查看nacos,服务列表,如下图注册成功;

    image-20201222161827525

    浏览器访问 http://localhost:9001/payment/nacos/123

    image-20201222161634632

    新建子模块cloudalibaba-provider-payment9002,代码和9001相同;只需要把application.yml中的server.port改成9002即可;

3.3 消费者

新建子模块cloudalibaba-consumer-order83

  • pom.xml

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  • application.yml

    server:
      port: 83
    spring:
      application:
        name: nacos-consumer83
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848 # nacos地址
            register-enabled: false #不注册到nacos
    
    service-url: #非必要;定义要调用的服务地址,便于远程调用
      nacos-payment-service: http://nacos-payment-provider
    
    
  • 启动类

    @EnableDiscoveryClient
    
  • RestTemplate配置类

    @Configuration
    public class RestTempleteConfig {
    
        @Bean
        @LoadBalanced
        RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }
    
  • 业务类Controller

    @RestController
    public class ConsumerController {
    
        @Autowired
        RestTemplate restTemplate;
    
        @Value("${service-url.nacos-payment-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);
        }
    }
    
  • 测试

    启动cloudalibaba-consumer-order83

    浏览器访问 http://localhost:83/consumer/payment/nacos/86 看看能否远程调用到服务提供者

    image-20201222162113922

  • 负载均衡测试

    启动cloudalibaba-provider-payment9002

    image-20201222163354944

    浏览器多次访问 http://localhost:83/consumer/payment/nacos/86

    发现9001和9002交替出现;


点赞+评论+关注
本文源码地址: https://gitee.com/shuaidawang/SpringCloudDemo.git
有错误的地方欢迎指正!可以加入qq交流群: 700637673

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

臭小子帅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值