目录

一、概述

二、Nacos discovery——服务的注册与发现

1. 版本关系

2. 下载安装

(1)下载

(2)启动

(3)浏览器访问

三、Nacos服务注册与发现实战

1. 构建Spring Cloud Alibaba工程

(1)创建父工程

(2)创建子项目

2. 编写测试Controller

3. 服务注册与发现的配置

4. 验证负载均衡配置


一、概述

Nacos是一个更易于构建云原生应用的动态服务发现配置管理服务管理平台

特性:

(1)服务发现与服务健康检测

(2)动态配置服务

(3)动态 DNS 服务

(4)服务及其元数据管理

二、Nacos discovery——服务的注册与发现

Nacos Discovery Starter 可以帮助您将服务自动注册到 Nacos 服务端,并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery Starter 也将服务实例自身的一些元数据信息-例如 host,port,健康检查URL,主页等-注册到 Nacos 。

1. 版本关系

关于Spring Cloud Alibaba与Spring boot, Spring Cloud Alibaba 与其他微服务组件之间的版本对应关系:Home · alibaba/spring-cloud-alibaba Wiki · GitHub

这里截取部分对应关系,我使用的 Spring Cloud Alibaba 版本为 2.2.9.RELEASE。

2. 下载安装

(1)下载

Nacos 下载地址:Releases · alibaba/nacos (github.com)

这里我下载的Windows版本:

(2)启动

将压缩包放至文件夹解压即可,运行bin目录下startup.cmd脚本即可启动:

注意:这里启动的是单机模式,默认是集群模式

(3)浏览器访问

默认用户名和密码都是 nacos

三、Nacos服务注册与发现实战

说明:这里先构建一个父工程,父工程下分别有两个微服务模块,一个是订单模块,一个是库存模块,订单要调用库存模块的接口,下面演示如何调用,以及使用Nacos进行服务的注册与发现。

1. 构建Spring Cloud Alibaba工程

(1)创建父工程

(2)创建子项目

创建订单服务模块:

 创建库存服务模块:

 搭建父子关系:

更改父工程 pom.xml 的打包方式,并引入子模块:


  1. <packaging>pom</packaging>
  2. <modules>
  3. <module>order-nacos</module>
  4. <module>stock-nacos</module>
  5. </modules>

在子模块中指定父模块:


  1. <parent>
  2. <groupId>com.example</groupId>
  3. <artifactId>nacos-learn-parent</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </parent>

2. 编写测试Controller

在order启动类中引入RestTemplate,用于微服务之间的接口调用


  1. @SpringBootApplication
  2. public class OrderNacosApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(OrderNacosApplication.class, args);
  5. }
  6. @Bean
  7. public RestTemplate restTemplate(RestTemplateBuilder builder) {
  8. RestTemplate restTemplate = builder.build();
  9. return restTemplate;
  10. }
  11. }

在订单的微服务模块下创建 OrderController:


  1. @RestController
  2. @RequestMapping("/order")
  3. public class OrderController {
  4. @Autowired
  5. RestTemplate restTemplate;
  6. @RequestMapping("/add")
  7. public String add() {
  8. System.out.println("下单成功!");
  9. String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
  10. return "下订单了!" + msg;
  11. }
  12. }

在库存的微服务模块下创建 StockController:


  1. @RestController
  2. @RequestMapping("/stock")
  3. public class StockController {
  4. @Value("${server.port}")
  5. String port;
  6. @RequestMapping("/reduct")
  7. public String reduct() {
  8. System.out.println("扣减库存");
  9. return "库存-1,调用的库存服务的端口号为:" + port;
  10. }
  11. }

3. 服务注册与发现的配置 

订单模块Application.yml 配置:


  1. server:
  2. port: 8020 #订单服务启动的端口
  3. spring:
  4. application:
  5. name: order-service #nacos会将该名称当作服务名称
  6. cloud:
  7. nacos:
  8. server-addr: 127.0.0.1:8848 #nacos服务地址
  9. discovery:
  10. username: nacos #登录到nacos管理平台的用户名
  11. password: nacos #登录到nacos管理平台的密码
  12. namespace: public #服务的命名空间,就相当于一个文件夹,用来区分服务实例

库存模块Applicaion.yml 配置:


  1. server:
  2. port: 8021 #库存服务启动的端口号
  3. spring:
  4. application:
  5. name: stock-service #nacos会将该名称当作服务名称
  6. cloud:
  7. nacos:
  8. server-addr: 127.0.0.1:8848 #nacos服务地址
  9. discovery:
  10. username: nacos #登录到nacos管理平台的用户名
  11. password: nacos #登录到nacos管理平台的密码
  12. namespace: public #服务的命名空间,就相当于一个文件夹,用来区分服务实例

启动两个服务:

访问浏览器测试调用接口是否成功:


  1. @Bean
  2. @LoadBalanced
  3. public RestTemplate restTemplate(RestTemplateBuilder builder) {
  4. RestTemplate restTemplate = builder.build();
  5. return restTemplate;
  6. }

查看Nacos 管理面板:

可以看到两个服务以及注册到nacos。

补充:关于 Nacos Starter 更多的配置项信息

配置项 Key 默认值 说明

服务端地址

spring.cloud.nacos.discovery.server-addr

Nacos Server 启动监听的ip地址和端口

服务名

spring.cloud.nacos.discovery.service

${spring.application.name}

给当前的服务命名

服务分组

spring.cloud.nacos.discovery.group

DEFAULT_GROUP

设置服务所处的分组

权重

spring.cloud.nacos.discovery.weight

1

取值范围 1 到 100,数值越大,权重越大

网卡名

spring.cloud.nacos.discovery.network-interface

当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址

注册的IP地址

spring.cloud.nacos.discovery.ip

优先级最高

注册的端口

spring.cloud.nacos.discovery.port

-1

默认情况下不用配置,会自动探测

命名空间

spring.cloud.nacos.discovery.namespace

常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

AccessKey

spring.cloud.nacos.discovery.access-key

当要上阿里云时,阿里云上面的一个云账号名

SecretKey

spring.cloud.nacos.discovery.secret-key

当要上阿里云时,阿里云上面的一个云账号密码

Metadata

spring.cloud.nacos.discovery.metadata

使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息

日志文件名

spring.cloud.nacos.discovery.log-name

集群

spring.cloud.nacos.discovery.cluster-name

DEFAULT

配置成Nacos集群名称

接入点

spring.cloud.nacos.discovery.enpoint

UTF-8

地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址

是否集成Ribbon

ribbon.nacos.enabled

true

一般都设置成true即可

是否开启Nacos Watch

spring.cloud.nacos.discovery.watch.enabled

true

可以设置成false来关闭 watch

注册的IP地址类型

spring.cloud.nacos.discovery.ip-type

IPv4

可以配置IPv4和IPv6两种类型

4. 验证负载均衡配置

Nacos 默认使用的是 Ribbon 提供的负载均衡机制,Ribbon 属于客户端的负载均衡,默认使用的方式是轮询。

(1)在RestTemplate配置上加 @LoadBalanced注解


  1. @Bean
  2. @LoadBalanced
  3. public RestTemplate restTemplate(RestTemplateBuilder builder) {
  4. RestTemplate restTemplate = builder.build();
  5. return restTemplate;
  6. }

(2)在StockController 的/reduct接口被调用时,返回该服务的端口号


  1. @RestController
  2. @RequestMapping("/stock")
  3. public class StockController {
  4. @Value("${server.port}")
  5. String port;
  6. @RequestMapping("/reduct")
  7. public String reduct() {
  8. System.out.println("扣减库存");
  9. return "库存-1,调用的库存服务的端口号为:" + port;
  10. }
  11. }

(3)启动两个库存服务,右键点击 Copy Configuration 选项,选择启动的端口号为8022:

就是库存服务要在多个端口启动时,这样来操作

可以看到在Nacos服务列表中,stock-service多了一个实例:

 验证负载均衡:

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览113544 人正在系统学习中

[转帖]服务注册与发现:Nacos Discovery的更多相关文章

  1. Alibaba Nacos 学习(三):Spring Cloud Nacos Discovery - FeignClient,Nacos 服务注册与发现

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  2. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  3. Spring Cloud Alibaba | Nacos服务注册与发现

    目录 Spring Cloud Alibaba | Nacos服务注册与发现 1. 服务提供者 1.1 pom.xml项目依赖 1.2 配置文件application.yml 1.3 启动类Produ ...

  4. Spring Cloud Alibaba(一) 如何使用nacos服务注册和发现

    Nacos介绍 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构 ...

  5. nacos 的服务注册与发现

    nacos的服务注册于发现. 这个要求服务统一注册到注册中心,然后调用的时候就不需要通过ip来调用,直接通过服务名即可. 服务提供者 pom.xml配置,需要spring-cloud-starter- ...

  6. Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现

    服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...

  7. 2021升级版微服务教程4—Nacos 服务注册和发现

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 默认文件1610014380163 教程全目录「含视 ...

  8. Spring Cloud Alibaba Nacos 服务注册与发现功能实现!

    Nacos 是 Spring Cloud Alibaba 中一个重要的组成部分,它提供了两个重要的功能:服务注册与发现和统一的配置中心功能. 服务注册与发现功能解决了微服务集群中,调用者和服务提供者连 ...

  9. Nacos服务注册与发现的2种实现方法!

    Spring Cloud Alibaba 技术体系中的 Nacos,提供了两个重要的功能:注册中心(服务注册与发现)功能和配置中心功能. 其中注册中心解决了微服务调用中,服务提供者和服务调用者的解耦, ...

  10. Spring Cloud进阶之路 | 一:服务注册与发现(nacos)

    转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12068846.html 1.版本 最新稳定版本为1.1.4,也可以从发版说明.博客 ...

随机推荐

  1. 物联网为什么需要5G?

    摘要:5G,这个词,我想每个接触ICT行业的朋友都有听过,可5G的到来,对物联网行业的帮助究竟是什么? 我相信,95%的ICT从业者对5G这一概念没有一个清晰的认知. 这一期文章的主题主要是普及一些5 ...

  2. 扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说

    摘要:本月我们要重点介绍王泽锋(Kevin Wang),他是 CNCF 社区的长期贡献者,华为云原生开源团队的负责人,KubeEdge 和 Volcano 项目的联合创始人.Kevin 回答了几个关于 ...

  3. DarkMode(4):css滤镜 颜色反转实现深色模式

    在<DarkMode(1):产品应用深色模式分析>提过,单纯反转是不行的.但是,把不需要反转的,在反转过来.或者用js,给想要反转的,加上反转样式,再对其他的做微调.这样个人觉得,开发成本 ...

  4. Flutter加固原理及加密处理

    ​ 引言 为了保护Flutter应用免受潜在的漏洞和攻击威胁,加固是必不可少的措施之一.Flutter加固原理主要包括代码混淆.数据加密.安全存储.反调试与反分析.动态加载和安全通信等多个方面.通过综 ...

  5. HanLP 学习

    学习 HanLP 需要了解, 双数组Trie树 (Double-array Trie) Aho-Corasick DoubleArrayTire 算法 ACDAT - 基于双数组字典树的AC自动机 T ...

  6. Python openpyxl 将 Excel中的汉字 转换成拼音首字母

    将Excel中的汉字列,转换成拼音首字母,并保存 需要安装导入  pypinyin.openpyxl 库 # pip install pypinyin from pypinyin import laz ...

  7. 给科研人的 ML 开源发布工具包

    什么是开源发布工具包? 恭喜你的论文成功发表,这是一个巨大的成就!你的研究成果将为学界做出贡献. 其实除了发表论文之外,你还可以通过发布研究的其他部分,如代码.数据集.模型等,来增加研究的可见度和采用 ...

  8. VMware15.5安装Ubuntu20.04

    一.安装前的准备 1.下载好Ubuntu20.04的镜像文件,直接从官网下载就好,激活密匙. 2.准备好VMware软件,这里就忽略安装过程了. 二.建立虚拟机以及开启正式的Ubuntu安装过程 参考 ...

  9. 实时渲染前沿研究:在浏览器上实现了Facebook提出的DLSS算法

    大家好,我基于WebNN在浏览器上实现了2020年Facebook提出的Neural-Supersampling-for-Real-time-Rendering算法.它是一个用于实时渲染的神经网络超采 ...

  10. Java虚拟机——类加载器深入剖析

    一.java虚拟机与程序的生命周期 在如下几种情况下,java虚拟机将结束生命周期: 1.执行了System.exit()方法 2.程序正常执行结束 3.程序在执行过程中遇到了异常或错误而异常终止 4 ...