1单体架构
1.1架构图
单体架构就是一个项目里面包含这个项目中全部代码。一个应用搞定全部功能。
DNS 服务器可以是单映射,也可以配置多个映射。
1.2软件代码结构
在单体架构项目中,团队都是通过包(package)进行区分每个模块。
总体包结构:com.xphs.*.分层包。
项目名:
-- com
--xphs
-- common
-- utils
--user
-- controller
-- service
-- mapper
-- sys
-- controller
-- service
-- mapper
1.3优缺点
1.3.1优点
部署简单、维护方便、开发成本低
1.3.2缺点
当项目规模大、用户访问频率高、并发量大、数据量大时,会大大降低程序执行效率,甚至出现服务器宕机等情况。
1.4适用项目
传统管理项目,小型互联网项目。
2分布式架构
2.1架构图(简易版)
分布式架构会把一个项目按照特定要求(多按照模块或功能)拆分成多个项目,每个项目分别部署到不同的服务器上。
2.2软件代码结构
项目1:
--com.xphs.xxx
-- controller
-- service
-- mapper
项目2
--com.xphs.mmm
-- controller
-- service
-- mapper
2.3优缺点
2.3.1优点
增大了系统可用性。减少单点故障,导致整个应用不可用。
增加重用性。因为模块化,所以重用性更高。高内聚、低耦合。
增加可扩展性。有新的模块增加新的项目即可。
增加每个模块的负载能力。因为每个模块都是一个项目,所以每个模块的负载能力更强。
2.3.2缺点
成本更高。因为技术多、难,所以开发成本、时间成本、维护成本都在变高。
架构更加复杂。
整体响应之间变长,一些业务需要多项目通信后给出结果。
吞吐量更大。吞吐量= 请求数/秒。
2.4适用项目
中、大型互联网项目。客户多,数据多,访问并发高,压力大,吞吐量高。
2.5待解决问题
分布式架构中各个模块如何进行通信?
可以使用Http协议,也可以使用RPC协议通信,也可以使用其他的通信方式。我们本阶段使用的是RPC协议,因为它比HTTP更适合项目内部通信。