接下来学习我们的SpringCloudAlibaba
一、介绍
1、官网
- 地址:https://gitee.com/mirrors/Spring-Cloud-Alibaba
- 地址二:https://spring.io/projects/spring-cloud-alibaba
2、介绍
其实可以理解为,已经可以把SpringCloudNetflix完全替代了。
二、SpringCloudAlibaba之服务注册与配置中心
在前面的文章中,我们的服务注册用到了Eureka,Consul,Zookeeper,服务配置用到config,而服务总线用到了Bus。
(一)前提条件
1、Nacos下载和安装
(1)介绍
- Nacos就兼顾了三者,服务注册与配置中心,消息总线。前四个字母分别叫Naming和configuration的前两个字母。s为service
- 是一个更易于构建云原生的应用的动态服务发现,配置管理和服务管理平台。
- 其实就是配置中心和注册中心的组合:替代Eureka做服务注册中心,替代config做配置中心。
(2)下载安装
-
下载地址:https://nacos.io/zh-cn/
点进去后一直往下面拉 -
安装教程:没什么教程就是要创建一个数据库,执行命令,还有就是配置一下(参考文章)
默认账号密码都是nacos
(二)替代Eureka作为服务注册中心
1、基于Nacos的服务提供者
首先编写之前肯定要导入依赖,依赖就来源于spring官网:https://spring-cloud-alibaba-group.github.io/github-pages/2021/en-us/index.html#_spring_cloud_alibaba_nacos_discovery
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
只要在父项目导入即可。
(1)建9001
- 建模块
- 导入pom依赖
<dependencies>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<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>
<!--日常通用jar包配置-->
<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>
- yaml
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
# 监控的端点
management:
endpoints:
web:
exposure:
include: '*'
-
主启动
-
看业务
业务都不复杂,之前在SpringCloud就细入的讲解了。 -
启动测试
(2)建9002
http://localhost:9001/payment/nacos/1或者http://localhost:9002/payment/nacos/1测试都可以。
2、基于Nacos的服务消费者
nacos已经自己就实现了负载均衡。
(1)建项目
- 名字如下
- 到pom
<dependencies>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<dependency>
<groupId>cn.mldn</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- SpringBoot整合Web组件 -->
<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>
<!--日常通用jar包配置-->
<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>
- yaml
server:
port: 83
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
- 主启动
(2)业务
http://localhost:83/consumer/payment/nacos/1
3、Nacos服务注册中心对比提升
nacos强大之处在于支持AP与CP(但是不能同时支持),可以进行切换使用。
(三)替代Config作为服务配置中心
1、Nacos作为配置中心-基础配置
(1)建项目
- pom
<dependencies>
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--web + actuator-->
<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>
- 建yaml
这里建立了个boostrap,因为为了后续能无缝迁移。
- 主启动
(2)业务逻辑(Bus与Config的作用)
都是去抄前面的Bus的动态刷新吧。
(3)Nacos中添加配置信息
- 根据我们的配置文件如何
所以我们要配置的名字为nacos-config-client-dev.yaml
BootStrap.yaml配置
而且注意格式要写yaml,不能写yml。
- 之后可以再修改你的nacos文件,然后会发现更新。
太好了吧。
2、Nacos作为配置中心-分类配置
- 问题描述
- nacos图形化管理界面
(1)Nacos之Data ID方案
指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置文件。【比较常用】
-
新建我们dev和test环境
同一组的管理文件。 -
spring.profile.active指定多环境配置
-
启动测试
从我们的生产环境切换到了我们的测试环境,达到了无缝的对接。
(2)Nacos之Group分组方案
- 通过Group实现环境区分
新建Group
虽然有DataId一样,但是Group不一样。
- 启动测试即可发现
- 另外一种情况(分组发生变化)
(3)Nacos之Namespace方案
- 使用namespace实现分离环境。
新建dev与test命名空间
- 在test下创建一个dev(分两组)
- 通过namespace进行设置
- 启动测试
我又重新建了一个测试的,这个命名空间让他自己生成的吧,不要写dev或者test,其他应该也可以
(4)小总结
之前的我们的config进行配置的时候,我们要新建GitHub的地址,然后进行配置一个中心的服务配置中心后再进行其他的配置,而我们现在直接通过我们这个阿里提供的这个就可以访问了,很方便。我们通过三种方案实现环境的隔离,它也可以处理另外的一些方案,暂时模拟不出来。
三、Nacos集群和持久化配置
在实际开发中,我们肯定不可能只配置一个Nacos配置中心,然后当你其中一台主机宕了后,其他的也可以正常执行,达到不影响你项目运行的效果,所以还是得来玩集群。
https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
1、集群配置
(1)Nacos集群配置介绍
- 对官网的理解(vip类似于Nginx)
- 我们安装Nacos的时候就执行了它下面的命令吧
用mysql进行数据库的存储,然后实现了数据的一致性。
就是上面我们配置的这些,它全部存储到了数据库,然后如果到时候的集群的话,也是到同一个数据库里面去读取,然后达到数据库的一致性。
(2)Nacos持久化切换配置
-
Nacos默认的嵌入式数据库derby数据库。
-
Derby切换到mysql。
执行你的数据库脚本,
这个在你的数据库执行即可。
跟着我一直做下来的就应该上面的在安装哪里就配置了。
2、Nacos在Linux下安装
前提是有jdk与mysql,但是我这次没有mysql,因为我虚拟机死活安装不上,后续补充吧,就操作我Windows下的数据库。
-
妈耶,好久没登录腾讯云服务器了
在线吐槽一下腾讯的这个,售后比较垃圾,说真的,我都没有干过什么坏事情,都给我疯了,建议还是考虑阿里的吧。
来吧,开始用VMware配置一台,(好吧这个我也放弃,我电脑配置比较低,不是启动蓝屏,而TMD安装就蓝屏(离谱) ,先把这个部分的理论学完吧,后续去买个阿里的云服务器),那么可以自己去找文章看看。 -
我通过Xshell操控VMware不死机了,意外啊,来看看如何安装吧。
-
在Windows下载,通过Xftp传过去,如下,然后解压。
-
启动的话就是我们的sh
3、配置集群
(1)配置nacos
-
配置集群(三个nacos配置文件,比如3333,3344,3355)
-
第一步配置mysql(本来是要执行这个mysql资源的文件,但是上面已经介绍过了,本次操控我电脑的mysql)
-
第二步配置application.properties
- 备份一下文件(记住,操作这总的时候,一定要备份一份)
- 查看一下Windows的ip地址
- 配置
- 备份一下文件(记住,操作这总的时候,一定要备份一份)
-
配置Linux下的nacos的集群配置cluster.conf(模拟三台集群,3333,4444,5555)
-
修改端口号
没有是上面的getopts的P的自己添一下。
-
启动服务
- 我第一个用了-p3333
- 用 -k试一试(结果显示不行,说明还是用它自带的即可)
- 我第一个用了-p3333
-
启动好了上面的配置,发现自己nginx不会(发现自己没有学,所以这里明后天再来继续学习吧,先去补习一下Nginx)
这里又花了两天来学习Nginx,结果我的文章审核未通过,好吧,你们自己去找文章看看吧。
(2)配置nginx
-
把之前自己的练习删除了,再把之前拷贝的nginx.conf.init复制一个,不管是操作什么,都记得拷贝一份。
-
再进配置
查看测试
ps -ef|grep nacos|grep -v grep|wc -l
刚才没有仔细看
改改参数。【我是直接减半的】
-
然后访问:http://192.168.243.130:8848/nacos即可【自己ip地址】
这里有点小问题,但是是打通了通道了,OK了
(3)配置一下我们的项目
- 启动OK啦