SpringCloud
集群
- 下面介绍一个传统服务请求的全过程:
- 用户需要通过ip(但因为ip太难记了,所以要买一个域名绑定ip)访问网站;
- 请求进入Nginx网关,负责
负载均衡
(如轮询、权重)和流量转发; - 发送给部署了相同jar包的服务器,这样实现了高可用高并发;
- 数据库也可以部署在多台服务器上。
集群就是同一个功能的副本
分布式架构
- 定义:分布式架构是将一个大型应用的功能拆分为多个小型服务(微服务),分别部署在不同的服务器上,彼此协作完成整个业务流程。
- 下面介绍大致流程
- 原来的大型应用的功能都被拆分成了小模块,可以去部署到同一ip下的不同位置;
- 不同功能之间想要请求数据时要发一个http请求,获得json数据,就需要
远程调用(RPC)
; - 每个服务都将自己的地址信息注册到注册中心(如Nacos、Eureka),其他服务可通过注册中心获取其地址,实现服务发现与调用;
- 注册中心也可以进行客户端或服务端负载均衡;
- 为了提高系统的稳定性,还会加入服务熔断、限流、降级等机制(如使用 Sentinel、Hystrix)。
- 如果采用分布式,访问的流程
- 先访问域名,请求还是会来到
网关
,网关会通过注册中心找到请求路由分发到不同的服务器上 - 如果要微服务:SpringBoot
- 如果是注册中心、配置中心:Spring Cloud Alibaba Nacos
- 网关:SpringCloud GateWay
- 远程调用:Spring Cloud OpenFeign
- 服务熔断:Spring Cloud Alibaba Sentinel
- 先访问域名,请求还是会来到
创建SpringCloud parent项目
1 | <?xml version="1.0" encoding="UTF-8"?> |
- 看父子结构,src相当于是写代码的地方,父结构只需要导入依赖,不需要写代码,所以src的都删掉;
- 架构是cloud-demo -> service -> service-product&&servicie-order
安装nacos(naming and configuration service)
- 注意配置好JAVA_HOME的路径,说明我变强了哈哈,能看出gpt给出来的东西是错的,明明我知道java 17安装在d盘的,之前一直被gpt忽悠在c盘,难怪配置总是失败。
- 端口号是8848,还要加上一个/nacos
- 配置管理就是配置中心;服务管理就是注册中心
- 体验注册中心,也就是功能来的时候,要去哪个地方访问另一个功能。
启动微服务项目
- 为order项目添加springboot web依赖,然后
更新maven
; - 编写好注册类(添加SpringBootApplication注解)以及application.properties来确定端口号及注册中心地址。
1 | spring.application.name=service-product |
服务发现(注解:@EnableDiscoveryClient)
- 最重要的就是启动注解@EnableDiscoveryClient,之后应该都能上层封装,可以获取ip,端口号
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Explainfuture's Blog!