随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。
系统架构也因此也不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构 。
1.单体应用
优点:
架构图简单易懂
对于一些小项目来讲,开发维护比较的简单
部署在一个单点的tomcat上面,后期维护比较的方便
缺点:
对于大型项目来讲,分工,维护比较的困难
模块之间紧密耦合,单点容错率比较的低
无法单独的对一个模块进行水平的扩展
2.垂直应用架构
优点:
系统拆分之后就可以进行水平扩展和优化,提高了单点的容错容错性
缺点:
系统之间无法相互调用,会有一部分的重复的代码
3.分布式的架构
优点:
将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率
缺点:
系统间耦合度变高,调用关系错综复杂,难以维护
4.SOA架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键
优点:
使用服务治理中心,帮我们维护复杂的调用关系
缺点:
服务有依赖性,可能会因为一个服务的问题,导致其它的服务不可调用的问题。
5.微服务架构
优点:
服务原子化的拆分,独立打包,部署和升级,保证每个微服务清晰的任务划分,利于扩展
缺点:
分布式技术开发的成本高(容错,分布式事务等)