单体架构与分布式系统区别对比
一、单体架构
1.概念:
- 整个系统的所有功能单元,整体部署到同一个进程(所有代码可以打包成1个或多个文件),我们可以称之为”单体架构”
单体式应用易于部署,只需要把打包应用拷贝到服务器端,通过在负载均衡器后端运行多个拷贝就可以轻松实现应用扩展。在早期这类应用运行的很好。
- 单体架构,是指将开发好的项目打包成war包,然后发布到tomcat等容器中的应用
2.举例
-
描述:用一个婚纱系统网站举例
用户并发量有限制
- ①并发:同一时间多个线程访问同一个资源(tomcat、mysql、数据);
- ②一个tomcat通常能够承载200~300并发(取决于硬件及网络等外界条件)
- ③一个mysql默认并发数100
优点
- 易于开发: 当前开发工具和IDE的目标是支持单体应用程序的开发
- 易于部署:只需在适当的运行时 部署WAR文件(或目录层次结构)
- 易于扩展:可以通过在负载均衡器后面运行应用程序的多个副本来扩展应用程序
瓶颈问题
- ①可靠性差:比如婚宴场地中出现内存溢出(OOM)BUG,会导致整个系统宕机,从而导致婚纱摄影也不可用。
- ②维护成本高:比如对婚宴场地进行更新升级(停机更新),会导致婚纱摄影功能也不可用。
- ③吞吐量小:一个tomcat同时能处理的请求是有上限的。当业务多了之后,系统访问速度变慢、或者请求超时。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UFz6QAGS-1678239298620)(https://xingqiu-tuchuang-1256524210.cos.ap-shanghai.myqcloud.com/674/20220811162654.png)]
二、分布式架构
1.概念简介
- 整个系统的功能分散到不同的进程,然后各个进程共同提供不同的业务能力,称为“分布式架构”
2.举例
- 如上述系统网站
分布式架构的特点
- 将一个系统的两个功能分别部署在两个tomcat节点上,共同协调完成任务,所有节点组成同一个系统。
- 吞吐量大:婚宴场地的请求由左边tomcat负责处理和响应,婚纱摄影由右边tomcat进行处理和响应。
- 可靠性强:如果婚宴场地出现OOM异常导致宕机,不会影响婚纱摄影功能的正常访问。
- 单个服务维护成本低:比如婚宴场地停机更新,不会影响婚纱摄影。或者去掉婚宴场地功能模块。
分布式架构的缺点
- 对技术要求高,人力成本比较大
- 人员数量需求多,人力陈本大
- 需要的服务器数量多,硬件资源成本大
分布式与集群的区别
- 分布式是将不同的业务分散到不同的服务器上,集群是同一个业务由多台服务器一起完成
- 分布式是软件层面,集群是硬件层面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bJpRas1M-1678239298621)(https://xingqiu-tuchuang-1256524210.cos.ap-shanghai.myqcloud.com/674/20220811163102.png)]
如上图婚纱摄影这个板块分布在不同的服务器上一起完成这就是集群
什么时候需要使用
- 场景:一个饭店请一个厨师负责配菜和炒菜,一天最多只能炒300份菜。当饭店生意越来越火,一天超过300份菜,怎么办呢?
- 应用:一个服务器也有请求上限,当一个服务器处理不过来的时候,就再加一个服务器分担工作任务。
- 这就是分布式,也是需要分布式的原因。
三、架构的不同风格
任何一个体系(产业平台、商业模式等)如果象牙发展壮大,途径只有两个模式:
- 1.容器模式从外部提供越来越多的资源和能力,注入到体系的内部,不断地从内向外扩展自己。单体架构的系统类似这种模式
- 2.生态模式:以自己的核心能力为内核,持续地在外部吸引合作者,形成一个可以不断成长的生态体系。分布式架构越来越像这种模式
1.单体架构细分
- 对于单体架构,根据设计期和开发实现期的不同模式和划分结构,可以分为以下几种模式
2.分布式架构细分
- 对于分布式架构,根据设计期的架构思想和运行期的不同结构,可以分为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BIDro0C7-1678239298621)(https://xingqiu-tuchuang-1256524210.cos.ap-shanghai.myqcloud.com/674/20220811163719.png)]
- 也可以把如上的各个架构风格总结为4个大的架构发展阶段