Nacos

基本概念

(1)Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

(2)常见的注册中心:

  • Eureka(原生,2.0遇到性能瓶颈,停止维护)

  • Zookeeper(支持,专业的独立产品。例如:dubbo)

  • Consul(原生,GO语言开发)

  • Nacos

相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config ,Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config 通过 Nacos Server 和spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

(3)Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。
Nacos主要提供以下四大功能:

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态DNS服务
  • 服务及其元数据管理

部署nacos

下载地址和版本

下载地址:https://github.com/alibaba/nacos/releases
下载版本:nacos-server-1.1.4.tar.gz或nacos-server-1.1.4.zip,解压任意目录即可

启动nacos服务

  1. Linux/Unix/Mac
    启动命令(standalone代表着单机模式运行,非集群模式)
    启动命令:sh startup.sh -m standalone

期间在linux解压后,启动nacos服务,查看log日志,出现报错

Error: Could not find or load main class 
Caused by: java.lang.ClassNotFoundException:

解决办法:

使用JDK16
在Nacos-Server的 bin / startup.sh
由JAVA_OPT_EXT_FIX 配置引起启动报错

在startup.sh文件中替换下方配置

x JAVA_OPT_EXT_FIX="-Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
√ JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"

x echo "$JAVA $JAVA_OPT_EXT_FIX ${JAVA_OPT}"
√ echo "$JAVA ${JAVA_OPT}"

x echo "$JAVA $JAVA_OPT_EXT_FIX ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
x nohup "$JAVA" "$JAVA_OPT_EXT_FIX" ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
√ echo "$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
√ nohup $JAVA ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &

解决完后,重新启动nacos服务,查看日志再次报错

Caused by: java.lang.IllegalStateException: No DataSource set

解决方案:

在nacos的conf中找到application.properties,配置数据库
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true
db.user=root
db.password=123456

启动成功后
访问:http://服务器ip:8848/nacos
用户名密码:nacos/nacos

  1. Windows
    启动命令:cmd startup.cmd 或者双击startup.cmd运行文件。
    访问:http://localhost:8848/nacos
    用户名密码:nacos/nacos

服务注册(service_edu为例)

把service-edu微服务注册到注册中心中,service-vod步骤相同

引入依赖在service的pom文件中

配置Nacos客户端的pom依赖

<!--服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在要注册的服务的配置文件中 application进行配置Nacos地址

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

在启动类添加注解

在客户端微服务启动类中添加注解

@EnableDiscoveryClient //nacos注解

启动客户端微服务

启动注册中心
启动已注册的微服务,可以在Nacos服务列表中看到被注册的微服务