项目结构
单体架构
在一个项目中,如果所有的接口功能(包含多个业务功能),都集中到一个应用进程中,这种项目结构 就属于单体项目。
例如,地摊小吃:下单,制作,收银,出餐都是一人。
优点
结构简单,创建和开发成本比较低
运维简单,部署成本低
缺点
前提: 互联网行业需求--业务复杂,变化迅速,用户人群广,并发比较高
代码在大型项目系统中,会越来越臃肿.维护更新变动非常困难
难以满足并发的需求,功能并发冲突问题.(并发流量的木桶原则)
应用场景
如果开发的项目是互联网公司的项目,产品. 功能多,扩展更新快. 并发高,用户多,需求大.
例如: 大众点评,饿了么,美团,高德,百度地图,腾讯地图.....
这种项目不适合使用单体项目开发.
传统项目,产品,功能不复杂,用户量不大.需求更新速度按版本定期执行更新.
适合单体项目来使用开发的.
例如: 养殖系统,农业系统, 办公自动化OA系统.国企内部项目 银行内部系统.
分布式
一个任务,由多个角色组成,每个角色完成这个任务的不同部分,就是分布式。
代码层面:将一个项目去拆分成多个子级项目。
作用:给项目去中心化,提高子项目任务效率
例如,小餐馆:下单,制作,收银,出餐各一人。
集群
一个任务,由多个成员同时进行,所做的工作是完全相同的,相互可以代替。
代码层面:将一个项目部署到多个服务器上。
作用:解决并发请求压力
例如,某个功能模块出现了问题随时可以有另一个相同功能模块去顶替。
分布式集群
既有分布式 又有集群的结构- 分布式集群。
一个项目拆分成多个子项目,一个子项目由集群构成,通过负载均衡去调度各个子级模块
例如,大餐馆:人流量大,下单两人,制作三人,收银两人,出餐两人。
项目结构拆分
横向
分包:service、mapper、controller
纵向
单体架构演变成分布式集群应用结构必经过纵向拆分。
将一个系统中 按照功能,逻辑,划分成多个独立运行的单体系统,进行纵向拆分。
根据应用功能,进行纵向拆分,必定导致2个直接的问题出现:
拆分的独立系统之间 需要引入解决方案解决沟通问题.
如果需要沟通,相互应该传递应用信息.
结果: 在拆分之后,要解决更多新的问题,否则架构不能使用.