1. Nacos概述

官方地址:https://nacos.io/zh-cn/

下载地址 github地址:https://github.com/alibaba/nacos

**面试题:**微服务间远程交互的过程?

  1. 先去注册中心查询服务的服务器地址
  2. 调用方给对方发送http请求

1.1. 什么是 Nacos

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1.2. 为什么是Nacos

常见的注册中心:

  1. Eureka(原生,2.0遇到性能瓶颈,停止维护)
  2. Zookeeper(支持,专业的独立产品。例如:dubbo)
  3. Consul(原生,GO语言开发)
  4. 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主要提供以下四大功能:

  1. 服务发现和服务健康监测
  2. 动态配置服务
  3. 动态DNS服务
  4. 服务及其元数据管理

2.下载及安装

2.1.下载

下载地址:https://github.com/alibaba/nacos/releases

下载完成后,window直接解压,并放在英文路径下

没有注册中心的微服务架构 微服务注册中心nacos_spring cloud

在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

没有注册中心的微服务架构 微服务注册中心nacos_微服务_02

2.4.访问

启动完成后,访问http://localhost:8848/nacos,可进入nacos的管理页面,(用户名和密码默认都是 nacos / nacos )

没有注册中心的微服务架构 微服务注册中心nacos_没有注册中心的微服务架构_03

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

没有注册中心的微服务架构 微服务注册中心nacos_微服务_04

没有注册中心的微服务架构 微服务注册中心nacos_nacos_05

选择 Spring Cloud Alibaba / Nacos Service Discovery

没有注册中心的微服务架构 微服务注册中心nacos_没有注册中心的微服务架构_06

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中 查看服务

启动项目后 可以看到

没有注册中心的微服务架构 微服务注册中心nacos_没有注册中心的微服务架构_07

点击 详细 查看

没有注册中心的微服务架构 微服务注册中心nacos_没有注册中心的微服务架构_08

4.开启多实例

4.1.配置启动名称及端口

没有注册中心的微服务架构 微服务注册中心nacos_spring_09

没有注册中心的微服务架构 微服务注册中心nacos_微服务_10

4.2.复制实例配置

没有注册中心的微服务架构 微服务注册中心nacos_spring_11