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

红太狼 2022-12-28 08:22 360阅读 0赞

SpringCloud Alibaba系列文章列表

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

文章目录

      • **SpringCloud Alibaba系列文章列表**
        1. Nacos简介
        • 1.1 是什么
        • 1.2 能干嘛
        • 1.3 去哪下
        • 1.4 各种注册中心对比
        1. 安装运行Nacos
        1. 服务注册中心
        • 3.1 简介
        • 3.2 服务提供者
        • 3.3 消费者

前言

官方文档:
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模型 控制台管理 社区活跃度
Eureka AP 支持 低(2.x版本闭源)
Zookeeper CP 不支持
Consul CP 支持
Nacos AP/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


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery


    org.springframework.boot
    spring-boot-starter-web


    org.springframework.boot
    spring-boot-starter-actuator
  • application.yml

    1. server:
    2. port: 9001
    3. spring:
    4. application:
    5. name: nacos-payment-provider
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 127.0.0.1:8848 #配置nacos地址
    10. management: #暴露端口
    11. endpoints:
    12. web:
    13. exposure:
    14. include: '*'
  • 启动类

    1. @EnableDiscoveryClient
  • 业务类 Controller

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

    启动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

    1. <dependency>
    2. <groupId>com.alibaba.cloud</groupId>
    3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    4. </dependency>
    5. <dependency>
    6. <groupId>org.springframework.boot</groupId>
    7. <artifactId>spring-boot-starter-web</artifactId>
    8. </dependency>
    9. <dependency>
    10. <groupId>org.springframework.boot</groupId>
    11. <artifactId>spring-boot-starter-actuator</artifactId>
    12. </dependency>
  • application.yml

    1. server:
    2. port: 83
    3. spring:
    4. application:
    5. name: nacos-consumer83
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 127.0.0.1:8848 # nacos地址
    10. register-enabled: false #不注册到nacos
    11. service-url: #非必要;定义要调用的服务地址,便于远程调用
    12. nacos-payment-service: http://nacos-payment-provider
  • 启动类

    1. @EnableDiscoveryClient
  • RestTemplate配置类

    1. @Configuration
    2. public class RestTempleteConfig {
    3. @Bean
    4. @LoadBalanced
    5. RestTemplate restTemplate(){
    6. return new RestTemplate();
    7. }
    8. }
  • 业务类Controller

    1. @RestController
    2. public class ConsumerController {
    3. @Autowired
    4. RestTemplate restTemplate;
    5. @Value("${service-url.nacos-payment-service}")
    6. private String serverURL;
    7. @GetMapping(value = "/consumer/payment/nacos/{id}")
    8. public String paymentInfo(@PathVariable("id") Long id)
    9. {
    10. return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    11. }
    12. }
  • 测试

    启动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

发表评论

表情:
评论列表 (有 0 条评论,360人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringCloud注册中心-Nacos

    Nacos简介 Nacos是阿里巴巴开源的一款支持服务注册与发现,配置管理以及微服务管理的组件。用来取代以前常用的注册中心(zookeeper , eureka等等),以