【Spring Cloud】Nacos介绍、下载、服务注册和发现的使用

最近了解到一个新东西,Nacos,是阿里巴巴的新开源项目,其核心定位是 “一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台”。

什么是Nacos?

Nacos 的关键特性包括:

  • 服务发现和服务健康监测

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

Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。

  • 动态配置服务

动态配置服务可以以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。

动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

  • 动态 DNS 服务

动态 DNS 服务支持权重路由,更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。

… …

Nacos下载与安装

Nacos 依赖 Java 环境来运行。如果我们是从代码开始构建并运行Nacos,需要配置 Maven环境,并确保是在以下版本环境中安装使用:

  • 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  • 64 bit JDK 1.8+。
  • Maven 3.2.x+。

官网当前推荐的稳定版本为1.3.1,我们可以通过下载源码或安装包的方式获取Nacos.

  • 从 Github 上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/
  • 下载编译后压缩包方式

我们也可以从https://github.com/alibaba/nacos/releases直接下载 nacos-server-$version.zip 包。

启动Nacos

  • Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

  • Windows

启动命令:

cmd startup.cmd

或者双击startup.cmd运行文件。

启动成功可以看到如下界面:
【Spring Cloud】Nacos介绍、下载、服务注册和发现的使用_第1张图片
并且我们可以访问窗口输出的控制台地址:http://169.254.134.94:8848/nacos/index.html,看到管理平台页面:

【Spring Cloud】Nacos介绍、下载、服务注册和发现的使用_第2张图片

与Spring Cloud集成使用

在Nacos Server启动成功后,我们就可以在Spring Cloud 应用中使用 Nacos 实现服务注册和发现功能。

和之前学习使用其他注册中心一样,我们新建两个模块,命名为nacos-service-provider和nacos-service-invoker模块,如何在代码中集成,具体步骤如下:

  • 添加依赖

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

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

  • 配置服务提供者,从而服务提供者可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上

i. 在 application.properties 中配置 Nacos server 的地址:

server.port=8070
spring.application.name=nacos-service-provider

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

ii. 通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能:

@SpringBootApplication
@EnableDiscoveryClient
public class NacosServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosServiceProviderApplication.class, args);
    }

}

iii. 对外提供一个接口

/**
 * @Description : Nacos服务注册demo控制类
 * @Author : huzhiting
 * @Date: 2020-08-22 10:01
 */
@RestController
public class HelloController {

    @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
    public String echo(@PathVariable String string) {
        return "Hello Nacos Discovery " + string;
    }
}
  • 配置服务消费者,从而服务消费者可以通过 Nacos 的服务注册发现功能从 Nacos server 上获取到它要调用的服务

i. 在 application.properties 中配置 Nacos server 的地址:

server.port=8080
spring.application.name=nacos-service-invoker

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

ii. 通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosServiceInvokerApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosServiceInvokerApplication.class, args);
    }

}

iii. 提供服务消费者接口

/**
 * @Description : nacos服务消费控制类
 * @Author : huzhiting
 * @Date: 2020-08-22 10:22
 */
@RestController
public class TestHelloController {

    @Resource
    private RestTemplateConfig restTemplateConfig;

    @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
    public String echo(@PathVariable String str) {
        return restTemplateConfig.restTemplate().getForObject("http://nacos-service-provider/echo/" + str, String.class);
    }

}
  • 启动 NacosServiceProviderApplication和 NacosServiceInvokerApplication

服务启动成功后,我们可以在Nacos管理控制台服务列表看到服务已经注册成功,如下:

【Spring Cloud】Nacos介绍、下载、服务注册和发现的使用_第3张图片
最后,我们可以通过invoker调用 http://localhost:8080/echo/2020接口,得到provider返回的内容为:Hello Nacos Discovery 2020

总结

通过本篇博客,可以让我们对Nacos有一个大概了解,并通过服务注册与发现功能的demo实现掌握了与Spring Cloud项目的快速集成,Spring Cloud与Nacos集成代码已上传github。

你可能感兴趣的:(【架构设计】,#,Spring,Cloud,java,Spring,Cloud,Nacos)