目录
传送门
SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口
前言
本文第一代SpringCloudNetflix和第二代SpringCloudAlibaba都有讲解。参考尚硅谷周阳老师的资料。
下面文章不定期更新中。。。
SpringCloud服务注册中心
SpringCloud服务调用
SpringCloud服务降级
SpringCloud服务网关
SpringCloud服务配置
SpringCloud服务总线
SpringCloud消息驱动
SpringCloud链路跟踪
SpringCloud分布式事务
总共Config、Nacos两个服务配置
一、Config
1、概念
Spring Cloud Config是一个用于集中管理配置信息的工具。它提供了一个中央仓库,用于存储应用程序的配置文件,并且可以根据需要将配置文件提供给其他微服务应用程序。通过使用Spring Cloud Config,可以轻松地管理不同环境下的配置文件,如开发环境、测试环境和生产环境。此外,Spring Cloud Config还支持配置文件的版本控制和动态刷新功能,使得配置的更改可以实时生效,而不需要重启应用程序。
并没有停更,只是被更好的Nacos超越了
2、入门案例
2.1、服务端修改
改pom
改yml
改启动类
http://localhost:3344/application-dev.yml 访问正常
gitee的配置,按照视频github一直不行,改换gitee可以了
master和dev等来区分分支,加上master也可以读取
2.2、bootstrap.yml说明
2.3、客户端修改
改pom
改yml
Controller增加逻辑拿配置
2.4、动态刷新
2.5、坑
坑
因为版本原因,客户端一直没有测试通过。
而且上面的配置也没有真正的动态刷新到,
还需要单独post请求。需要真正动态刷新,
则需要配合bus处理。
加了动态刷新配置后没有效果,需要再次post请求一下这个接口才行 -X PSOT 加上就是post请求,不加就是git请求
具体的也可以看 传送门 SpringCloudNetflix文章。
二、Nacos
Nacos既是注册中心,又是配置中心。
Nacos (Naming and Configuration Service) 是一个基于云原生应用的动态服务发现、配置管理和服务管理平台。它可以帮助开发人员更好地构建、部署和管理微服务架构的应用。
Nacos 提供了以下核心功能:
- 服务发现和注册:可以将微服务注册到 Nacos 上,并可以通过 Nacos 进行服务的发现和调用。
- 动态配置管理:可以将应用的配置信息存储在 Nacos 上,并且可以实时动态更新配置,无需重启应用。
- 服务和流量管理:可以通过 Nacos 进行服务的路由、流量控制等管理操作。
- 健康检查和故障治理:可以通过 Nacos 对服务的健康状态进行监测和管理,提供故障治理能力。
在 Spring Cloud 中,Nacos 提供了集成模块,可以方便地与 Spring Cloud 相结合,实现微服务的注册、发现、配置管理等功能。通过使用 Nacos,开发人员可以更加方便地构建和管理微服务架构的应用。
1、概念
Nacos=Eureka+Config+Bus
1.1、下载
https://github.com/alibaba/nacos 这个网站 点nacos.io过去就是官网
点开源版会回到前面截图
这边版本下载
1.2、安装运行
直接解压,出来一个nacos文件夹
bin下cmd运行命令 startup.cmd -m standalone 因为默认是集群模式了,这边要指明单机模式启动 linux对应为 sh startup.sh -m standalone
http://localhost:8848/nacos 浏览器访问 账号密码 默认都是 nacos
1.3、访问
为了版本一致性,降低到1.4.2了
2、注册中心
2.1、服务提供者配置
注意:总pom的版本一定要按照官网上要求的来,不然各种坑,各种报错。一定要版本保持一致。
改pom
改yml
改启动类
业务类 (payment9001 和 payment9002类似,启动集群)
测试成功
2.2、消费者配置
改pom
改yml
改启动类
业务类
restTemplate的坑
消费者要单独引入,不然报 payment这个url是未知host地址
报错原因猜测就是 新版并没有看到包含ribbon了。
测试结果,请求轮询 9001 9002
2.3、坑
版本一定要匹配,项目中我用错了Alibaba的版本,用的2.2.7导致,服务提供者一直无法注册进去
为了保证版本一直,将nacos下载安装的降低到1.4.2版本了。下载一个tar.gz包就行了,在三个操作系统window(同上安装)、mac、Linux(官网命令)都能用。
3、配置中心
3.1、概念
两个配置,bootstrap和application
官网理论
视频的配置案例说明(注意深坑,nacos那边配置时, .yml不行呀,要.yaml才行)
视频的配置(注意深坑,.yml不行呀,要.yaml才行)
视频的配置(注意深坑,.yml不行呀,要.yaml才行)(这里截图是对的,data ID 要有.yaml的后缀结尾。注意!注意!注意!)
小总结
3.2、客户端配置(nacos本身就是服务端)
改pom
改yml(红框的字,不知道后面有没有优化)(坑:注意yaml的格式,不能被其他配置插入影响了)
改yml
改启动类(这个上面加个@RefreshScope,全局影响)
业务类(这个@RefreshScope可以放在启动类,全局影响)
nacos配置文件。这个具体可以看上面的概念截图。坑多,配置要非常仔细。(不用像config那样搞github,非常方便)
测试结果。成功
3.3、坑
客户端启动错误,坑1,但是还是不行啊,看后面截图
https://blog.csdn.net/wyz0923/article/details/118303072
网速源码解析
在application.yml加上name配置就可以了,在bootstrap加上就不行。原因就在于改了规则,得引入bootstrap的依赖
坑2
深坑
深坑,还是报错,因为ymal写错了,正确的是 yaml
这才是正确的
3.4、动态刷新
Controller上面加个@RefreshScope注解。
支持nacos的动态刷新,不是被动的,是真正的,不像config那样还得主动post请求什么的,或者结合mq还是要请求。这个主动刷新了,nacos那边的配置一改,马上生效,不用人工去post,不用重启任何微服务,不用重启nacos,真棒!!!。
真正的动态刷新。秒杀config+bus,帅的一批
3.5、分类配置概念
4、集群和持久化
4.1、概念
持久化说明:
不能用自带的内嵌数据库derby,当要弄nacos集群的时候,每个都在自己带的数据库里面存,数据有一致性问题,所以要 集中用MySQL数据库
4.2、数据库操作(同理移植到Linux系统)
在自己MySQL数据库创建数据库
改application文件
视频的修改截图
我自己修改的截图,注意数据库名称 和用户名和密码修改成自己MySQL数据库的,改错了又是深坑。而且url参考了这个配置文件的(比官网东西多)
重启后发现之前的dev和test等都不见了,说明对了,之前是存到内嵌数据库的,现在链接到了MySQL数据库了。
4.3、nacos的修改
改conf下面文件
改conf下面文件(注意,这边一定要在Linux系统查看hostname -i 看到的ip地址,不能是localhost和127)
养成好习惯,先备份原来的配置文件 .bk结尾
视频截图,这个我下的版本已经有了,不用搞这个
视频截图,这个我下的版本由于前面截图已经有了,后面不用跟着搞了,实测可以
启动命令:
sh startup.sh -p 3333(在bin目录下./startup.sh -p 3333这个居然不行)
sh startup.sh -p 4444
sh startup.sh -p 5555
ps -ef | grep nacos| grep -v grep|wc -l 命令检查几个启动了,是3才对
4.4、nginx的修改
视频截图
我自己的截图
开启端口*(注意把8848也加上去)
启动命令:
nohup /usr/local/nginx/sbin/nginx &
4.5、坑
在吉帆Linux启动nacos集群的时候,发现linux内存不够用,改shartup.sh把,值改小,依次为 64 64 40,生产环境一般不用改。还是不够用,Linux环境测试放弃
4.6、日志的坑
默认按照上面的配置启动后,会有大量日志产生。所以后面要关闭一下配置再去启动。
vim /usr/local/nacos/conf/application.properties
4.7、小总结
1、集群和持久化,都在Linux系统环境中弄;
2、首先Linux中的MySQL数据库要安装弄好,并且创建数据库nacos_config,然后nacos安装路径下面的application.properties文件要增加db连接等内容连接到Linux系统上的MySQL数据库;
3、其次Linux中的nacos安装好后,在conf文件下创建新文件cluster.conf文件,里面加上3个或3个以上的ip地址和端口;视频改了shutup.sh的启动文件,但是新版本不用改了。并且window环境下需要三份nacos文件,而linux环境下不需要,启动的时候带参数就能抽像成三份。
4、再次Linux中的Nginx要修改nginx.config文件,增加3个ip地址的负载均衡和反向代理。(Nginx本身没有做集群) nohup /usr/local/nginx/sbin/nginx & 启动。
5、上面四个注册中心对比
对比(这里面nacos显示了支撑ap,其实cp也支撑,可以切换),nacos全场景覆盖,相当牛批
下面命令就是切换cp模式