《深入浅出SpringCloud》Spring Cloud Alibaba:Nacos

本文详细介绍了Nacos作为Spring Cloud Alibaba的核心组件,如何用作注册中心和配置中心。内容包括Nacos的特性、与Eureka的区别、选型建议、安装运行、服务注册、配置管理、动态刷新及集群配置等。

Nacos作为注册中心和配置中心使用

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍。

Nacos简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 具有如下特性:

  • 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求;
  • 动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置;
  • 动态 DNS 服务:动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务;
  • 服务及其元数据管理:支持从微服务平台建设的视角管理数据中心的所有服务及元数据。

Nacos和Eureka的区别以及选型

模块 Nacos Eureka 说明
注册中心 服务治理基本功能,负责服务中心化注册
配置中心 Eureka需要配合Config实现配置中心,借助git托管,配置与服务分开,且不提供管理界面
动态刷新 Eureka需要配合MQ动态配置刷新,nacos采用Netty保持Tcp 的长链接实时推送
可用区AZ 对服务集群划分为不同区域,实现区域隔离,并提供容灾自动切换
分组 nacos 可根据业务和环境进行配置分组管理
元数据 提供服务标签,例如环境或者服务标识
权重 Nacos默认提供权重设置功能,调整承载流量压力
健康检查 Nacos支持由客户端或者服务端发起的健康检查,Eureka是有客户端发起心跳
负载均衡 均提供负载均衡策略,采用ribbon
管理界面 Nacos支持对服务在线管理,Eureka 通过dashboard 只预览服务状态

选型建议

采用Eureka方案的考虑

想用Spring Cloud原生全家桶
想用本地文件和Git作为配置管理的,将配置与服务分开管理
考虑短期的稳定性

采用Nacos方案的考虑

想在线对服务进行上下线和流量管理
不想采用MQ实现配置中心动态刷新
不想新增配置中心生产集群
考虑引入Spring Cloud Alibaba生态

使用Nacos作为注册中心

安装并运行Nacos

  • 我们先从官网下载Nacos,这里下载的是nacos-server-1.1.4.zip文件,下载地址:https://github.com/alibaba/nacos/releases

  • 配置JAVA_HOME环境变量,不配置会导致无法运行Nacos;

JAVA_HOME=D:\developer\env\Java\jdk1.8.0_91

  • 解压安装包,直接运行bin目录下的startup.cmd,或者执行命令单机启动 startup.cmd -m standalone
    在这里插入图片描述

  • 运行成功后,访问http://localhost:8848/nacos可以查看Nacos的主页,默认账号密码都是nacos。
    在这里插入图片描述

创建应用注册到Nacos

我们通过改造consul-user-service和consul-ribbon-service来演示下服务注册与发现的功能。

  • 创建nacos-user-service模块和nacos-ribbon-service模块;

  • 如果要使用Spring Cloud Alibaba 的组件都需要在pom.xml中添加如下的配置;

com.alibaba.cloud spring-cloud-alibaba-dependencies 2.1.0.RELEASE pom import
  • 修改相关依赖,添加注册发现的依赖:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • 修改配置文件application.yml,注册发现配置为Nacos的:
server:
  port: 8410
spring:
  application:
    name: nacos-user-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include: '*'

Ribbon Service 的配置参考上一节Ribbon负载均衡,同样添加nacos-discovery 依赖

  • 运行两个nacos-user-service和一个nacos-ribbon-service,在Nacos页面上可以看到如下信息:
    在这里插入图片描述

负载均衡功能

由于我们运行了两个nacos-user-service,而nacos-ribbon-service默认会去调用它的接口,我们调用nacos-ribbon-service的接口来演示下负载均衡功能。

多次调用接口:http://localhost:8401/user/1 ,可以发现两个nacos-user-service的控制台交替打印如下信息。

`2019-11-06 14:28:06.458 INFO 12092 — [nio-8207-exec-2] c.macro.cloud.controller.UserController : 根据id获取用户信息,用户名称为:yuan11

使用Nacos作为配置中心

我们通过创建nacos-config-client模块,并在Nacos页面中添加配置信息来演示下配置管理的功能。

创建nacos-config-client模块

  • 在pom.xml中添加相关依赖:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-clo
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值