1. Nacos概述
官方地址:https://nacos.io/zh-cn/
下载地址 github地址:https://github.com/alibaba/nacos
**面试题:**微服务间远程交互的过程?
- 先去注册中心查询服务的服务器地址
- 调用方给对方发送http请求
1.1. 什么是 Nacos
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
1.2. 为什么是Nacos
常见的注册中心:
- 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-config 实现配置的动态变更。
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
1.3. 可以干什么
Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。
Nacos主要提供以下四大功能:
- 服务发现和服务健康监测
- 动态配置服务
- 动态DNS服务
- 服务及其元数据管理
2.下载及安装
2.1.下载
下载地址:https://github.com/alibaba/nacos/releases
下载完成后,window直接解压,并放在英文路径下
在mysql中新建一个数据库,命名为:nacos。在解压的文件夹中,找到conf下的nacos-mysql.sql文件,并导入到新建的数据库中。
找到并修改conf下的application.properties文件中的连库信息
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user.0=nacos
# db.password.0=nacos
2.2.linux环境解压
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
2.3.启动
在解压文件的 bin目录 下,打开cmd窗口并输入命令
window启动命令( standalone代表着单机模式运行,非集群模式 ):
.\startup.cmd -m standalone
也可以 修改 startup.cmd 文件中 set MODE=“cluster”
修改成:
rem set MODE="cluster"
set MODE="standalone"
linux 启动命令
sh startup.sh -m standalone
2.4.访问
启动完成后,访问http://localhost:8848/nacos,可进入nacos的管理页面,(用户名和密码默认都是 nacos / nacos )
2.5.linux 下安装
2.5.1.安装jdk
2.5.2.将 nacos 压缩文件复制到 /usr/local
2.5.3.解压
# 安装 解压工具
$ yum install -y unzip zip
# 解压 nacos.zip 文件
$ cd /usr/local
$ unzip nacos-server-2.0.0.zip
2.5.4.单例启动
# 跳转到 nacos/bin
$ cd nacos/bin
# 单例启动
$ sh startup.sh -m standalone
/usr/local/jdk/bin/java -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Djava.ext.dirs=/usr/local/jdk/jre/lib/ext:/usr/local/jdk/lib/ext -Xloggc:/usr/local/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/usr/local/nacos/plugins/health,/usr/local/nacos/plugins/cmdb -Dnacos.home=/usr/local/nacos -jar /usr/local/nacos/target/nacos-server.jar --spring.config.additional-location=file:/usr/local/nacos/conf/ --logging.config=/usr/local/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
nacos is starting with standalone
nacos is starting,you can check the /usr/local/nacos/logs/start.out
2.5.5.外部访问
关闭防火墙(或者 打开默认8848端口), 在 外网通过 浏览器 访问
命令: firewall-cmd --query-port=8848/tcp
结果:no
命令: firewall-cmd --add-port=8848/tcp
结果:success
命令:firewall-cmd --query-port=8848/tcp
结果:yes
2.5.6.启动异常
在mysql中新建一个数据库,命名为:nacos。
在解压的文件夹中,找到conf下的nacos-mysql.sql文件,并导入到新建的数据库中。
找到并修改conf下的application.properties文件中的连库信息
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
# spring.datasource.platform=mysql
### Count of DB:
# db.num=1
### Connect URL of DB:
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user.0=nacos
# db.password.0=nacos
3.注册项目
3.1.创建项目
创建 模块 , 选择 https://start.aliyun.com
选择 Spring Cloud Alibaba / Nacos Service Discovery
3.2. pom.xml 导入 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.3.配置文件 中 配置地址
# 应用名称
spring.application.name=sca-nacos-provider
# 应用服务 WEB 访问端口
server.port=10001
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# Nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public
3.4.在启动配置类 增加 注解
@EnableDiscoveryClient
3.5.在 Nacos中 查看服务
启动项目后 可以看到
点击 详细 查看
4.开启多实例
4.1.配置启动名称及端口
4.2.复制实例配置