使用SpringCloudAlibaba注意各组件的版本适配
SpringCloudAlibaba已经包含了适配的各组件(nacos、MQ等)的版本号,也是一个版本仲裁者,但是可能已经有了父项目Spring-Boot-Starter-Parent这个版本仲裁者,又不能加多个父项目,可以使用,
可以使用dependencyManagement来添加版本仲裁者
下面是固定格式,只有版本号可以变
type和scope不能少
dependencyManagement只是添加了一个版本仲裁者,当前项目没有添加SpringCloudAlibaba进来,子项目也并不会继承这个依赖,子项目要添加依赖,必须要显示的声明,添加SpringCloudAlibaba里面的组件nacos、MQ等,不用声明版本号了
而dependencies中的依赖,子项目会直接继承
Spring-Boot-Starter-Parent这个版本仲裁者也可以放到dependencyManagement当中
因为公司实际开发中都有自己的一个maven项目给我们继承,这样就留出了继承父maven项目的地方
每一个微服务,会有一个定时任务,定时发送心跳到注册中心
还会有一个定时任务,定时拉取其他服务列表,缓存到当前服务中(当前服务就可以看成一个客户端,调用的另一个服务,可以看成服务器)。
每一个微服务也是一个客户端
如何搭建nacos?
在windows上下载nacos可执行文件
或者在linux中用docker拉取nacos镜像
并启动。
可以在nacos的配置文件中设置访问nacos的账号、密码、或者修改其他默认配置
然后在springboot项目中导入nacos的依赖
nacos集群,就是为了防止一个nacos服务坏了,所以会有多台nacos服务,也叫nacos集群。
这种多台服务的都会有一个主节点,多个从节点,主从架构
如何注册到nacos服务中心
肯定要提供 服务名称,而服务的ip和端口,不用提供,nacos能够自己获取到
命名空间可以根据不同的项目去划分,也可以根据一个项目的不同开发环境去划分,都可以,只是起到一个服务隔离的作用(分组的作用也是一样的)
注册到nacos服务中心的默认是 临时实例
如何进行nacos服务调用
之前服务调用的方式(调用stock-service库存服务,需要知道库存服务的ip+端口号)
利用服务发现的方式后,将ip+端口号 改成 库存服务的名称即可(注册到nacos服务中的名称为stock-service)
因为要调用nacos服务的时候,中间必须要使用负载均衡器,所以在RestTepmlate上要加上@LoadBalanced注解
需要利用负载均衡器,去帮我们把 服务名称 解析成 ip地址+端口号
负载均衡器默认是采用轮询的方式去调用服务 实例
nacos默认采用的就是ribbon的负载均衡技术
权重:结合负载均衡器ribbon使用,分配一个权重
订阅者列表可以查看服务 的访问记录
nacos各个配置项的含义
配置服务名称,通过上面配置了,下面也可以不写了,默认采用上面的名称
如何搭建nacos集群
准备工作
1. 在三台服务器上安装nacos,或者在本地安装三次nacos
2.修改nacos中的配置文件
设置远程(或者本地)mysql的访问ip和账号密码
这里的ip是三台服务器上nacos的实际访问ip地址+端口
3.在mysql数据库中,建一个名为nacos的数据库,将这个文件里的sql建表语句执行一遍
4.修改启动脚本中的参数(防止服务器内存不足,因为默认参数比较大)
5.在三台服务器上分别启动nacos。
搭建好了后,如何访问nacos集群?
能直接改nacos服务地址吗?不能,有多个nacos服务,如果改成其中一个nacos的地址,还是单节点nacos的模式。
如何设置集群的名称,默认就DEFAULT
我们需要通过访问nginx,然后通过nginx帮我们转发
下载在某台服务器上下载nginx后,修改里面的配置文件,通过nginx反向代理的方式,去访问nacos集群
如果访问了这台电脑(公网ip192.168.56.220)的8847端口,并且后面加了/nacos/,例如地址是http://192.168.56.220:8847/nacos,
就会反向代理 到上面三个ip地址+端口号中的其中一个(默认是轮询)
把上面三个ip地址+端口中的一个,拿下来 代替 nacoscluster 这个字符串 的位置
注意:因为nginx和上面三个nacos(集群)都部署在了远程服务器192.168.56.220上,所以对于
nginx监听的地址就是本地ip 127.0.0.1,对于反向代理,转发到的地址也是本地ip 127.0.0.1
使用docker部署nacos集群,上面的有些步骤更加简单。具体步骤搜索网上教程