SpringCloud Alibaba之Nacos

1,075 阅读4分钟

前言

阿里开源的Nacos从去年7月份第一个release版本到现在已经出到1.1.3版本,官方的版本规划为:Nacos从0.8.0开始支持生产可用,1.0版本可大规模生产可用。

关于 Nacos 名字:前四个字母分别为 Naming 和 Configuration 的前两个字母,最后的 s 为Service。

Nacos是什么

Nacos是什么?小伙伴们是不是没有听说吧。但Eureka做过微服务的肯定知道吧,在SpringCloud中做服务注册中心组件,类似Duboo的Zookeeper,还有Consul。

Nacos也是一个注册中心组件,不过它不仅仅是注册中心。Nacos也是一个配置中心,比如SpringCloud中的Config,将配置文件版本化管理。

那么Nacos到底是什么呢, 总结为官网一句话就是:

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

简单来说 Nacos 就是注册中心 + 配置中心的组合,提供简单易用的特性集,帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。

Nacos还是Spring Cloud Alibaba组件之一,负责服务注册与发现。

为什么是 Nacos

现在的微服务生态中,已经有很多服务注册与发现的开源组件,如 Eurka,ZooKeeper,Consul,为什么还要用Nacos呢,我们看下这些框架的简单对比:

据说 Nacos 在阿里巴巴内部有超过 10 万的实例运行,已经过了类似双十一等各种大型流量的考验

相比之下,目前的Nacos无论是部署,还是使用上都简单,更重要的是文档资料齐全,社区活跃度高。

并且Nacos与目前主流的开源生态都提供了很好的支持:

1、Nacos 是专为 Dubbo 而生的注册中心与配置中心

2、Nacos 会完全兼容 Spring Cloud

3、Nacos 支持 Service Mesh 集成,Kubernetes 集成

除此之外,阿里巴巴正在通过Dubbo + Nacos以及一系列开源项目打造服务发现、服务及流量管理、服务共享平台,未来还在不断地发展和演进,相信未来会有更多的地方上使用 Nacos。

单机部署

准备环境

Nacos依赖Java环境来运行,所以部署前需要保证环境要求:

1、64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix。

2、64 bit JDK 1.8+

去github上搜索nacos,发现releases发布版本

解压运行

这里 Nacos 单机部署方式使用命令 -m standalone ,如果是 Windows 命令,可以直接双击 startup.cmd 文件即可。

浏览器访问http://{ip}:8848/nacos/index.html,点击就进入了Nacos的可视化管理界面,需要账号密码登录访问,默认都为nacos

登录之后就能在网站侧边栏上看到Nacos的主要功能菜单:配置管理,服务管理,集群管理,命名空间。

服务提供者

通过一个简单的示例来感受一下如何将服务注册到Nacos,其实和Eureka没有太大差别

POM

创建一个工程名为shop-goods-service的服务提供者项目,pom.xml配置如下:

注:因为我们使用Dubbo的RPC,所以也引用了Dubbo;这个以后会讲

Application

通过@EnableDiscoveryClient注解表明是一个Nacos客户端,该注解是Spring Cloud提供的原生注解

定义接口实现

注意:GoodsServiceImpl的接口实现类上面有@Service注解,是org.apache.dubbo.config.annotation.Service

application.yml

启动工程

通过浏览器访问 http://192.168.5.153:8848/nacos,即 Nacos Server 网址

你会发现一个服务已经注册在服务中了,服务名为goods-provider。这个过程其实蛮简单的,跟之前dubbo的使用没什么不一样。

当然这个是服务提供者,要想看到效果,我们再来新建服务消费者

服务消费者

POM

这个POM文件和提供者很类似,因为消费者我们将用web演示,所以增加个依赖包

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

Application

application.yml

注意:服务提供者和消费者,yml配置中,在2.1.x后需要增加

spring.main.allow-bean-definition-overriding: true

服务消费

新建一个Controller,请求某个商品id的基本信息。

注意:@Reference这个注解是org.apache.dubbo.config.annotation.Reference

启动工程

我们会发现多了一个名为 goods-consumer 的服务。我们浏览器访问http://localhost:9092/goods/12

总结

我们上面完成一个简单的服务发现和注册,以及服务消费,小伙伴们是不是感觉很简单,他不单单支持dubbo,还能无缝支持SpringCloud的微服务。

当然Nacos不仅仅是服务注册发现功能,还有强大的配置中心功能,下一篇文章持续分享nacos,谢谢!!!