随着互联网的发展,网站的应用也不断扩大,从而导致系统架构不断的进行变化,从互联网早起到现在,系统架构大致经历了下面几个过程。
单体应用架构
所有功能都集中在一个应用中,统一开发、部署、维护。
- 优点:开发成本、部署成本、维护成本低
- 缺点:对于大型项目来说,项目模块紧密耦合、单点容错率低、无法针对某一个模块优化和水平扩展。
垂直应用架构
将之前的单体应用拆分成多个应用,提升效率。比如,电商系统可以拆分成电商系统、后台系统等。
- 优点:项目拆分实现流量分担,解决并发问题,可以针对某一个模块优化和水平扩展,同时应用之间不会相互影响,提高容错率。
- 缺点:应用相互存在又是独立的,对于相同的功能会造成一定的冗余。
分布式架构
随着业务的增加,在垂直应用中的冗余代码会越来越多。将冗余代码抽取出来单独的服务提供应用调用形成分布式架构。
- 优点:抽取公共的功能作为服务层,提高代码复用。
- 缺点:系统间耦合变高,调用关系错综复杂,难以维护。
SOA架构
分布式架构的缺点就是应用和服务之间调用复杂,难以维护,尤其是当服务节点越来越多的时候。SOA就是为了解决资源调度和治理的问题。
- 优点:使用治理中心(ESB/Dubbo)解决服务间调用关系的自动调节。
- 缺点:服务间有依赖关系,某一环节出现问题影响较大。
微服务架构
某种程度上SOA架构发展的下一步,微服务架构更加强调服务的拆分,每个服务独立部署互不影响,更加轻巧、轻量级。
- 优点:服务独立打包部署和升级,功能划分清晰,利于扩展。
- 缺点:成本高、复杂度高。
SOA架构&微服务架构对比
- 微服务架构更加精细,专业的人做专业的事。
- 微服务架构中,每个服务独立部署。
- 微服务架构中,每个服务都是单独的数据库。
- 微服务架构更加适合互联网敏捷开发、快速迭代版本。
分布式应用开发解决方案
Spring Cloud提供微服务开发的一站式解决方案,包含开发分布式应用微服务的必须组件,方便开发者通过Spring Cloud编程模型轻松开发分布式应用服务。目前Spring Cloud生态有Spring Cloud Netflix、Spring Cloud Alibaba两套框架。