Spring Cloud Alibaba生态之Nacos使用

Spring Cloud Alibaba 是国产的微服务开发一站式解决方案,与原有 Spring Cloud 兼容的同时对微服务生态进行扩展,通过添加少量的配置注解,便可实现更符合国情的微服务架构。

Spring Cloud Alibaba

Spring Cloud Alibaba 是一组由阿里巴巴开发的基于 Spring Cloud 微服务框架的开源项目。它为微服务架构提供了一组组件,并使用阿里巴巴的微服务解决方案来帮助用户更快速地构建微服务应用程序。该项目中包含了服务注册与发现、配置中心、消息总线、分布式会话、分布式锁、分布式事务等组件。

服务与发现Nacos

Nacos是什么呢?

Nacos 读法:/nɑ:kəʊs/

Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos是阿里巴巴开源的一款分布式服务发现、配置管理和服务治理平台,类似于consul、zookeeper等服务,但具有更多的功能和特性。

Nacos可以实现以下功能:

服务发现:nacos支持多种协议的服务注册和发现,包括HTTP/REST、gRPC、DNS、UDP等。

配置管理:nacos提供了统一的配置管理平台,可以将应用程序的配置信息集中管理,支持多环境、版本管理。

服务路由:nacos支持服务路由和负载均衡,可以通过配置规则进行流量控制、灰度发布等。

服务治理:nacos提供了健康检查、故障转移、服务降级、熔断等功能,保证服务的可靠性和稳定性。

动态配置:nacos支持动态配置更新,可以实现配置的实时生效。

安全保障:nacos提供了身份认证、访问控制等安全保障措施。

总之,nacos是一款功能强大、易用性高的分布式服务发现、配置管理和服务治理平台,可以帮助企业构建高可用、高可靠的分布式系统。

Nacos 的关键特性包括:

1.Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。

2.动态配置服务

可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

3.动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。

4.Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

下图是Nacos生态全景图:

代码语言:javascript
复制
<dependencies>
...

&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
    &lt;artifactId&gt;dubbo&lt;/artifactId&gt;
    &lt;version&gt;3.0.5&lt;/version&gt;
&lt;/dependency&gt;

&lt;!-- Dubbo Nacos registry dependency --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
    &lt;artifactId&gt;dubbo-registry-nacos&lt;/artifactId&gt;
    &lt;version&gt;3.0.5&lt;/version&gt;
&lt;/dependency&gt;

&lt;!-- Alibaba Spring Context extension --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba.spring&lt;/groupId&gt;
    &lt;artifactId&gt;spring-context-support&lt;/artifactId&gt;
    &lt;version&gt;1.0.11&lt;/version&gt;
&lt;/dependency&gt;
...

</dependencies>

通过上面的全景图可以发现,Nacos可以支持很多主流的插件服务,比如跟Dubbo融合只需要增加 “Maven 依赖”以及“配置注册中心“。上面的代码块就是增加Maven依赖的形式融合Nacos.

通过Nacos的架构图可以知道,Nacos具备服务,服务注册中心,服务提供者,服务消费者,配置,元数据,名字服务,配置服务等等模块。

Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。

Nacos 支持将注册中心(Service Registry)与配置中心(Config Center) 在一个进程合并部署或者将2者分离部署的两种模式。

总结一下Nacos的使用方法:

1.下载Nacos:从Nacos官网(https://nacos.io/zh-cn/)下载最新版本的Nacos。

2.启动Nacos:解压缩Nacos压缩包,进入bin目录,执行startup.sh(Linux/Mac)或startup.cmd(Windows)启动Nacos。

3.访问Nacos:在浏览器中输入http://localhost:8848/nacos/,进入Nacos的控制台页面。

4.注册服务:在Nacos控制台页面的左侧菜单中,点击“服务管理”,然后点击“新增服务”,输入服务名称、IP地址和端口号,点击“提交”。

5.发现服务:在Nacos控制台页面的左侧菜单中,点击“服务管理”,然后点击“查询服务”,输入服务名称,点击“查询”。此时,Nacos会返回该服务的IP地址和端口号,以便其他服务可以调用该服务。

6.配置管理:在Nacos控制台页面的左侧菜单中,点击“配置管理”,然后点击“新增配置”,输入配置的命名空间、数据ID和数据内容,点击“提交”。配置更新后,Nacos会通知订阅了该配置的服务。

7.动态DNS解析:Nacos支持动态DNS解析,可以将服务名称解析为IP地址。在Nacos控制台页面的左侧菜单中,点击“服务管理”,然后点击“域名解析”,输入服务名称和IP地址,点击“提交”。

此时,Nacos会将服务名称解析为IP地址,以便其他服务可以调用该服务。