Spring CloudAlibaba:Nacos


服务注册和配置中心的组合

Nacos=erueka+config+bus

Nacos官网地址:https://nacos.io/zh-cn/,可以在这里下载和查阅官方文档。

​ 各种服务注册中心的比较

服务注册与服务发现框架CAP模型控制台管理社区活跃度
EurekaAP支持低(2.x版本闭源)
ZookeeperCP不支持
ConsulCP支持
NacosAP支持

在这里插入图片描述

1.1 安装Nacos

1.1.1 Windows安装

通过github下载Nacos下载地址选择合适的版本(最好选稳定版本)下载zip包,需要本地配置好了Java8和Maven环境,解压缩后,运行startup.cmd启动Nacos,浏览器访问http://localhost:8848/nacos查看管理后台,输入用户名密码(都是nacos)进入。

启动Nacos(后台cmd窗口服务开启)

​ 在bin下,进入cmd

./startup.cmd
在这里插入图片描述
访问Nacos(前台可视化界面访问)

​ Nacos默认监听8848

​ 访问地址:http://localhost:8848/nacos

​ 账号和密码:默认都是nacos
在这里插入图片描述

1.2 使用Nacos(服务注册中心Eureak)

1.21 基于Nacos的服务提供者9001

官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_start_a_provider_application

新建cloudalibaba-provider-payment9001模块,在父pom.xml的dependencyManagement坐标的dependencies中加入spring-cloud-alibaba-dependencies坐标。

现在不需要额外的服务注册模块了,Nacos单独启动了

父项目管理alibaba的依赖:
在这里插入图片描述
在这里插入图片描述
(1)9001生产者pom.xml

修改子模块的pom.xml,加入``spring-cloud-starter-alibaba-nacos-discovery`坐标。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud2020</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cloudalibaba-provider-payment9001</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

(2)9001yam配置文件

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos服务注册中心地址,

#对外暴露的监控
management:
  endpoints:
    web:
      exposure:
        include: '*'

(3)9001启动类

添加主启动类,带上@EnableDiscoveryClient用于开启服务发现功能
在这里插入图片描述
(4)9001 controller:
在这里插入图片描述
(5)测试

启动Nacos,启动生产者9001模块访问http://192.168.232.1:8848/nacos,点击左侧“服务管理”-“服务列表”即可看到Provider9001服务已经注册进来了。(很奇怪,这些IP地址都可以访问到nacos客户端)

在这里插入图片描述
Nacos自带负载均衡,为了演示负载均衡,仿照cloudalibaba-provider-payment9001模块创建cloudalibaba-provider-payment9002模块,端口号做相应的修改即可,其他大致相同。

创建完成后,启动Provider9002,查看Nacos管理后台,nacos-payment-provider服务名对应的实例数由1变成了2。
在这里插入图片描述

1.22 基于Nacos的消费者模块83

官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_start_a_consumer_application

新建cloudalibaba-consumer-nacos-order83模块,pom.xml和cloudalibaba-provider-payment9001一样。添加application.yml。

(1)83 pom.xml与9001一样

为什么Nacos支持负载均衡?

​ Nacos直接集成了Ribon,所以有负载均衡

(2)yaml 83配置文件
在这里插入图片描述
这个server-url的作用是,我们在controller,需要使用RestTempalte远程调用9001,

这里是指定9001的地址

(3)主启动类
在这里插入图片描述
(4)编写配置类

nacos和eureka一样,内部都集成了ribbon,所以不用单独导入ribbon依赖,就实现负载均衡了。
在这里插入图片描述
因为Naocs要使用Ribbon进行负载均衡,那么就需要使用RestTemplate
在这里插入图片描述
(5)controller:

这里的serverURL直接@value从yaml里面引入,不需要像之前一样再定义变量。
在这里插入图片描述
(6)测试

启动83,访问9001,9002,可以看到,实现了负载均衡
在这里插入图片描述
输入:http://localhost:83/consumer/payment/nacos/1
在这里插入图片描述

在这里插入图片描述

1.3 Nacos与其他服务注册的对比

Nacos它既可以支持CP,也可以支持AP,可以切换

在这里插入图片描述
在这里插入图片描述
下面这个curl命令,就是切换模式

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

1.4 使用Nacos作为配置中心(Config)

在这里插入图片描述
需要创建配置中心的客户端模块(3377)

新建cloudalibaba-config-nacos-client3377模块,修改pom.xml,加入spring-cloud-starter-alibaba-nacos-configspring-cloud-starter-alibaba-nacos-discovery坐标。

这里的服务配置的 服务端配置中心是Nacos; 配置中心的客户端是3377微服务模块

(1)3377 pom.xml

在9001的基础上添加spring-cloud-starter-alibaba-nacos-config服务配置中心的依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

(2)yaml 3377配置文件

3377模块需要配置两个yaml文件,application.yml和bootstrap.yml

​ 主要是为了可以与spring clodu config无缝迁移
在这里插入图片描述
在这里插入图片描述

(3)主启动类

在这里插入图片描述
(4)controller

这里的config.info是在Nacos中配置的内容的标签,相当于与之前的GitHub上设置的标签一样。

这样就可以获取远程仓库的内容。

可以看到,这里也添加了@RefreshScope
之前在Config配置中心,也是添加这个注解实现动态刷新的

在这里插入图片描述
在这里插入图片描述
(5)在Nacos服务配置中心添加配置信息

Nacos的配置规则:

在这里插入图片描述
配置规则,就是我们在客户端如何指定读取配置文件,配置文件的命名的规则

DataId默认的命名方式:
在这里插入图片描述

prefix:
		默认就是当前服务的服务名称
 		也可以通过spring.cloud.necos.config.prefix配置
spring.profile.active:
		就是我们在application.yml中指定的,当前是开发环境还是测试等环境
    这个可以不配置,如果不配置,那么前面的 -  也会没有
file-extension
     就是当前文件的格式(后缀),目前只支持yml和properties

在这里插入图片描述
在这里插入图片描述
在web UI上创建配置文件:(相当于GitHub和配置中心服务端结合在一起)

添加Data ID:这个配置要与bootstrap.yml一一对应

在这里插入图片描述
在这里插入图片描述
注意,DataId就是配置文件名字:

​ 名字一定要按照上面的规则命名,否则客户端会读取不到配置文件

(6)测试

重启3377客户端

访问3377:http://localhost:3377/config/info
在这里插入图片描述
拿到了配置文件中的值

1.5 注意默认就开启了自动刷新(不用在bus服务总线了)

此时我们修改了配置文件

客户端是可以立即更新的

因为Nacos支持Bus总线,会自动发送命令更新所有客户端
在这里插入图片描述
在这里插入图片描述

1.6 Nacos配置中心之分类配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
NameSpace默认有一个:public名称空间

这三个类似java的: 包名 + 类名 + 方法名

在这里插入图片描述
在这里插入图片描述

1,配置不同DataId

在这里插入图片描述
在这里插入图片描述
通过配置文件,实现多环境的读取:
在这里插入图片描述

此时,改为dev,就会读取dev的配置文件,改为test,就会读取test的配置文件
2,配置不同的GroupID:

直接在新建配置文件时指定组
在这里插入图片描述
在这里插入图片描述
在客户端配置,使用指定组的配置文件:
在这里插入图片描述
这两个配置文件都要修改
在这里插入图片描述
重启服务,即可

3. 配置不同的namespace:

在这里插入图片描述
在这里插入图片描述
==客户端配置使用不同名称空间:==需要配置 命名空间ID
在这里插入图片描述
要通过命名空间id指定

OK,测试
在这里插入图片描述

1.7 Nacos集群和持久化配置

在这里插入图片描述
Nacos默认有自带嵌入式数据库,derby,但是如果做集群模式的话,就不能使用自己的数据库

​ 不然每个节点一个数据库,那么数据就不统一了,需要使用外部的mysql
在这里插入图片描述

1,单机版,切换mysql数据库:(windows配置)

将切换到使用我们自己的mysql数据库:

1,nacos默认自带了一个sql文件,在nacos安装目录下,/conf目录 nacos-mysql.sql

​ 将它放到我们的mysql执行创建数据库

在这里插入图片描述
在这里插入图片描述
2,修改Nacos安装目录下 /conf目录 application.properties,添加:
在这里插入图片描述

#**********************切换到mysql数据库***********************#
spring.datasource.platform=mysql
 
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?useUnicode=true&charcaterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
db.user=root
db.password=jh7851192

3,此时可以重启nacos,那么就会改为使用我们自己的mysql
在这里插入图片描述

Linux上配置Nacos集群+Mysql数据库

官方架构图:
在这里插入图片描述
需要一个Nginx作为VIP

1,下载安装Nacos的Linux版安装包

(1)将压缩包放在 cd /usr/src目录下,并解压:tar -zxvf nacosxxxxx
(2)为了操作,建议备份文件:cp -r nacos /mynacos/

在这里插入图片描述
2,进入 nacos 安装目录 conf 文件下,找到 nacos-mysql.sql 脚本

创建 nacos_config 数据库,并执行 nacos-mysql.sql 脚本。
在这里插入图片描述
和windos操作差不多,直接复制该sql文件到Linux下的mysql数据库,进入mysql,执行sql文件。

Linux下载mysql(遇到Linux磁盘空间不足,按照这篇文章配置扩展空间https://www.pianshen.com/article/99111626893/)

解压过程也分为两层:xz -d mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz,之后就会出现mysql-8.0.18-linux-glibc2.12-x86_64.tar文件

然后tar xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar即可完成解压.

启动mysql: service mysql start

改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

进入mysql:./mysql -u root -p

3.修改配置文件conf,切换为我们的mysql

​ 就是上面windos版要修改的几个属性
在这里插入图片描述
(1)在mysql上创建nacos_config数据库并建表,和Windows操作一样
在这里插入图片描述
(2)备份:cp application.properties application.properties.bk

然后vim application.properties
在这里插入图片描述
4,修改cluster.conf,指定哪几个节点是Nacos集群
在这里插入图片描述
(1)在conf目录下,输入cp cluster.conf.example cluster.conf,复制集群备份文件

(2)查看linux下的IP地址(不要写 127.0.0.1,必须是Linux的真实IP):ifconfig,192.168.146.129

(3)修改vim cluster.conf

​ 这里使用3333,4444,5555作为三个Nacos节点监听的端口(3个构成集群)
在这里插入图片描述
5,编辑startup.sh启动文件

(1)备份文件 cp startup.sh startup.sh.bk

​ 既然要在一个节点上启动不同Nacos实例,就要修改startup.sh,使其根据不同端口启动不同Nacos实例

vim startup.sh进入编辑
在这里插入图片描述
在这里插入图片描述
可以看到,这个脚本就是通过jvm启动nacos

​ 所以我们最后修改的就是,nohup java -Dserver.port=3344

bin目录下启动命令: ./startup.sh -p 3333/4444/5555
在这里插入图片描述
6,配置Nginx:( /usr/local/nginx/conf/nginx.conf)

修改nginx.conf文件如下:

  • 监听端口直接用80吧,原先用1111端口错误,蓝色框一定要对应名称,否则访问不到;

  • 如果 用其他端口 建议开启防火墙端口不屏蔽(或者直接关闭防火墙)
    在这里插入图片描述
    在这里插入图片描述

7,启动Nacos:
./startup.sh -p 3333

​ ./startup.sh -p 4444

​ ./startup.sh -p 5555

如果想关闭的话,Nacos关闭服务,切换到bin目录,执行命令:sh shutdown.sh

7,启动nginx

配置完成,进入 sbin 目录,使用 ./nginx -c /usr/local/env/nginx-1.16.0/conf/nginx.conf 启动 nginx,使用 -c 加载指定配置文件,路径为 nginx.conf 所在路径。启动完成,通过命令:ps aux | grep nginx 查看 nginx 是否启动。
在这里插入图片描述
8,测试:

​ 访问http://192.168.146.129:80/nacos/#/login(192.168.146.129:80代表nginx.conf下server的访问路径)

​ 如果可以进入nacos的web界面,就证明安装成功了
在这里插入图片描述
集群nacos3333/4444开启后,就通过nginx访问到nacos集群了,然后nacos的数据库也切换到mysql了
在这里插入图片描述
9,将微服务注册到Nacos集群:
在这里插入图片描述

server:
  port: 9003

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.146.129:80 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

10,进入Nacos的web界面

​ 可以看到,已经注册成功
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值