logo头像

From zero to HERO

Spring Cloud 整合Nacos服务注册发现功能详细图文教程

前言

上一篇我们实现了Spring Cloud从nacos server 远端拉取并加载配置。今天我将给大家介绍nacos的另一个重要功能服务注册与发现。服务注册与发现功能在微服务中服务治理的基础。本篇将对nacos的服务治理进行介绍和一些入门使用。

nacos 服务注册与发现

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

f75492ea1f4127ecc59382972dcbb6af.png

Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。

这个是文档中关于服务发现的介绍。其实跟Consul这一类差不多。naocs有一个很重要的特色是提供了一个动态DNS服务。支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。你可以通过CoreDNS可以实现相关的功能。

使用Nacos 进行Spring Cloud服务治理

上一篇我们集成了nacos的配置中心功能。现在我们来集成其服务注册发现功能。
我们接着对应上一篇demo的provider-service,克隆一个consumer-service,然后通过feigin来消费provider-service的服务api,流程如下图:

63433339452b012636569209d40aa6a6.png

在service模块加入以下组件:

<!--   nacos 服务注册发现依赖组件     -->

       <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <!-- 服务间通讯组件使用feign并用okhttp优化feign  -->
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </dependency>

在本地配置bootstrap.yml或者远端nacos server 上对应的配置文件加入以下配置:

3aece754b0a621222680454212a60fae.png

这就完了吗?当然光这个配置是不行的,记得以前我们使用eureka作为服务注册发现中心是如何启用的吗?通过@EnableEurekaClient 注解,事实上我们知道@EnableDiscoveryClient是个更通用的注解。因为我们启用了feign,所以我们要加上feign的启用注解@EnableFeignClients 。我们在需要以上功能的Spring Boot 应用上增加相应的注解如下:

5860880f949686779faa308afd4c5a94.png

到这里配置相关的已经完了,接下来我们在provider-service下编写接口:

d947eaa701b691494f0f22125d0f68dc.png

在consumer-service 编写feign接口来调用上面的接口:

2687f061736474e72a79d4b46cf64f8b.png

注意使用 @FeignClient注解,统一降级工厂类也要注册为Spring Bean 。可查看demo源码。

接着在consumer-service编写消费接口:

0c76febf965d0c184ac07a52d3431f2e.png

分别启动provider-service和consumer-service服务,并调用消费接口:

f841283fc3dfaef9c8ffab36f5a45c52.png

如果我们手动剔除provider-service ,会引发服务降级。到这里nacos的服务注册发现入门就完成了。

总结

通过两篇的简单介绍相信你已经很快入门了nacos,用起来其实相对于开发来说还是非常友好的。不足是对一些敏感数据没有加密功能。nacos server 开放性OpenApi的安全性目前官方还没有过多介绍。不过相对于eureka、consul而言UI更加友好,使用起来也比较方便。
相关代码:https://gitee.com/felord/tino-cloud.git

评论系统未开启,无法评论!