目录
1 单体应用架构
2 垂直应用架构
3 分布式架构
3.1 RPC
3.2 SOA
4 微服务架构
本文介绍后台应用的各种架构,以及各架构的优缺点对比
将所有的代码功能都写在一个项目中(例如:MVC结构,SSM框架),同时打包,同时部署
优点:便于管理,减少开发、维护、运维成本
缺点:一个小功能的修改就需要将整个项目重新打包部署、一个小bug的排查就需要对整个项目进行排查
根据业务把一个项目切分成互不相干的多个项目(注册登录系统,订单管理系统,积分系统...)
优点:业务相互独立,一个业务故障,其它业务不受影响; 对访问量大的业务模块可以增加多个服务器支持
缺点:系统之间相互独立,系统与系统之间无法调用; 多个系统之间存在重复开发的问题
将一个系统拆分成多个独立的子系统,和"垂直架构"不同的是,分布式架构还可以将重复的业务代码抽取出来作为一个独立的子系统,并且各个子系统之间是可以相互调用的
RPC(Remote Procedure Call远程过程调用),多个子系统被部署在不同的服务器上,由于子系统之间不在同一个内存空间,因此各子系统不能直接相互调用,需要通过远程服务(例:dubbo,http等)调用
缺点:各种分布式问题(分布式缓存(redis解决),分布式锁(redis或zookeeper解决),分布式事务(redis解决)); 系统间耦合度提高,调用关系错综复杂
优点:抽取公共代码,避免重复开发; 可以单独对访问量大的子系统增加服务器节点
SOA(Service-Oriented Architecture面向服务架构),把一个个业务功能封装成标准化的服务,服务之间通过精确定义的接口进行通讯,SOA架构有3种实体:ServiceProvider(服务提供者)、serviceRequester(服务请求者)、ServiceRegister(服务注册中心),服务提供者和服务请求者是完全解耦的,并且都需要在服务注册中心注册,
缺点:在服务调用过程中增加了额外的中间组件,降低了服务的响应时间和性能; 架构搭建复杂,适合中大型的项目
优点:理论上SOA架构拥有无限的服务扩展性,任何新的服务都可以以注册的形式新增到整个系统中; 服务之间轻耦合
微服务架构是对SOA架构的扩展,服务拆分更细致化
缺点:架构复杂,开发成本高
优点:独立打包、部署、升级; 微服务之间采用轻量级的http协议(Restful,dubbo,feign等)相互调用