基于Spring全家桶的java后端分布式框架
框架图
最近开始在公司实习(摸鱼ing),自己理了一下后端分布式的大体框架,可以如以下简单的示意图所示(抽象派画家O(∩_∩)O。。。)
- 首先用户通过SpringCloud Security进行授权登录(涉及JWT/OAthu2等)
- 用户在浏览器或者客户端发送访问请求,经过GateWay网关(包含拦截,过滤,负载均衡以及路由功能)
- 请求经过GateWay路由到控制层相应的方法中
- controller从nacos注册中心获取相应服务的地址,并进行服务请求
- controller层通过Nginx负载均衡从service集群中获取对应的服务器服务
- 在service中编写服务逻辑,高优先级的先进行处理(与数据库交互等),低优先级的走消息队列异步处理。
- 由于是分布式架构,不同服务之间通过Feign进行远程调用,并且由熔断监控检测各个服务是否异常熔断,如果熔断就执行服务降级。
- service层与数据交互时,存储在数据库中的数据直接调用mapper接口访问redis和db,复杂数据经过elasticsearch进行访问。
- 所有Spring组件的版本信息都交由SpringCloud Config管理,将本地config配置推送到git上,然后配备多个server注册到git上进行集群同步。之后新增的业务组件都访问这些server集群获取本项目组的组件配置信息。
<---------------------------------------------------华丽的分割线------------------------------------------------->
ps:本人刚进新手村,以上只是目前自己眼中的见解,今后要先把上面的组件逐个攻破,后续会不断更新自己新的看法。(好啦,朝着删库跑路的伟大目标不断奋勇前进!)