1、单体架构
概念:所有的模块集中在一个项目中,打包到一起并放在一个web容器中运行。
适合场景:项目初创期、业务简单且响应要求高
优点:开发、测试、部署运维简单,响应快
缺点:
1、资源没法隔离
2、部署周期长
3、可靠性低所有模块都集中在一起导致核心与非核心业务出现问题相互影响
4、没法单模块水平拓展
图1:
2、集群架构
概念:同一个业务,部署在多个服务器上;
适合场景:业务流程简单且需要增强流量处理能力
优点:吞吐并发能力强突破单机性能瓶颈、高可用避免单点故障、伸缩性强
缺点:
1、需要负载均衡
2、session失效问题
3、缓存一致性问题
4、定时任务执行问题
图2:
3、垂直架构
概念:根据业务把项目垂直切割成多个项目。简单理解为分层。
适合场景:业务垂直流程长,如数据爬取、清洗和应用
优点:纵向拓展性高
缺点:
1、需要负载均衡
2、服务之间相互调用,如果某个服务的端口或者ip地址发生改变,调用的系统得手动改变
3、需要接口调用规范
图3:
4、SOA架构(Service Oriented Architecture,面向服务的架构)
概念:以业务系统为单位的服务,不同服务的分布式架构
适合场景:单个业务系统较为简单,需要做分布式,
优点:可用性高、服务之间耦合度低、可复用
缺点:
1、调用链路长
2、服务接口数量不宜控制
3、粒度控制复杂
图4:
5、微服务架构
概念:以业务系统模块为单位的服务,不同服务的分布式架构。
适合场景:单个业务系统已经较为复杂且单个模块已有一定复杂度,需要拆分模块为独立服务
优点:
1、服务可单独团队负责,适合敏捷开发
2、复用性高
3、容易实现开发运维一体化
缺点:
1、服务数量多,管理难度较高
2、服务之间响应速度不如单体
3、对监控运维问题定位有较高要求
4、需要注册和配置中心
5、需要调度中心
图5: