最近空闲时间想要重新搭建一套springCloud环境,注册中心自然选择nacos。
发现新版本2.0发布了,决定尝一尝鲜,现记录部分重要的内容。
官方文档地址: Nacos
Nacos 2.0
概述
经过社区的讨论和开发, Nacos 基于长连接的2.0.0版本的核心功能已开发完成,目前2.0.0正式版本已发布。
启动方式与Nacos 1.x相同,2.0.0支持Nacos1.X服务端的平滑升降级的能力。
相比1.X版本,在性能上有了很大的提升,以下面的做百万服务级别的机器压测:
指标 | 参数 |
---|---|
机器 | 8核 16g |
集群规模 | 3 |
- 注册实例:注册性能总体提升至少2倍,在服务端机能减半的情况下,服务实例数基本一致的情况下,TPS仍能做到2倍左右的提高。
- 查询实例:查询性能总体提升至少3倍,在服务端机能减半的情况下,服务实例数基本一致的情况下,TPS仍能做到3倍左右的提高,单机多线程场景甚至有10倍的提升。
- 注销实例:注销性能总体提升至少2倍,在服务端机能减半的情况下,服务实例数基本一致的情况下,TPS仍能做到2倍左右的提高。
相比1.X版本,新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成:
端口 | 与主端口偏移量 | 描述 |
---|---|---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
注意 使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。
注意 Nacos2.0客户端由于使用了gRPC,无法兼容Nacos1.X服务端,请勿使用2.0以上版本客户端连接Nacos1.X服务端。
部署Nacos2.0
nacos依赖jdk环境,安装前确保您的环境有jdk1.8+。
安装包下载
本文使用2.0.3版本。
可以通过源码和发行包两种方式来获取 Nacos,本文直接给出最新发行版地址:nacos发行版
建议下载zip包:
解压后如下所示:
修改配置
进入conf,打开application.properties,记性修改。主要有以下几个位置要注意:
端口,默认即可,可修改
1 | ### 访问路劲跟着的后缀,如localhost:8848/nacos: |
数据库mysql放开
1 | ### If use MySQL as datasource: |
还有mysql的初始化sql,我不知道当前版本是否会自动初始化,如果不行的话,后面自己执行下就可以:nacos-mysql.sql
如果是部署集群还需要添加cluster.conf
文件,内部配置自己的服务ip + port:
1 | 192.168.16.101:8847 |
同时需要VIP或者nginx做动态代理。不要忘记前面提到的要使用TCP
的配置。
启动
进入bin目录
- windows启动 修改startup.cmd:双击startup.cmd
1
set MODE="standalone"
访问本地地址http://localhost:8848/nacos
默认账号密码nacos/nacos - Linux启动
1
2### 单实例启动,集群不应加 -m standalone
./start.sh -m standalone
Nacos Spring Cloud
下面主要介绍下客户端如何配置nacos,分为两个部分服务发现
和服务配置
。
依赖
我们需要分别引入下面两个依赖
1 | <!-- 服务发现--> |
需要注意的是版本,我是用的2.2.7版本对应springboot版本
在maven仓库 mvnrepository.com/ 自己对比,尽量保证一直,避免不必要的麻烦。
更加不要将1.5.X对应到2.X,遵循下面的规则:
版本 2.2.x.RELEASE 对应的是 Spring Boot 2.2.x 版本。
版本 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 版本。
配置
首先需要在服务的启动类增加注解:@EnableDiscoveryClient
,开启服务发现功能。
关于配置文件我直接列出来我的:
1 | server: |
nacos找配置文件的格式是:${spring.application.name}-${spring.profiles.active}.${file-extension}
- spring.application.name 即应用名。
- spring.profiles.active 即为当前环境对应的 profile,
注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成:${spring.application.name}.${file-extension}
- file-extension 为配置的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
启动服务
直接启动springboot的启动类即可,成功后访问nacos,看看结果:
关于nacos 2.0的安装部署还有使用,其实对于用户来说并没有太大的感知,只需要注意两个新增的gRpc端口的开放,以及nginx或VIP做负载的TCP配置,再就是版本一定对应好了。其他的就不多说了,后面遇到新的问题会持续更新的。