一个系统中包含所有业务模块(用户、订单、库存等),所有模块共用一个数据库
优点:
1、架构简单
2、易开发(前期)
3、易部署,
4、易测试,
5、开发成本低,
6、适用于小团队
缺点:
1、耦合度高
2、容错效率低
3、扩展性差
4、不利团队协同开发
一个系统复制部署在不同服务器上,形式上分布,逻辑上单体。
SOA Service-Oriented Architecture 面向服务的体系结构
将一个系统按模块拆分成多个子系统(用户系统,订单系统,库存系统),各个系统之间通过(webservice,dubbo,thrift)相互调用。
优点:
1、加强系统可用,天然的解决单点故障问题。
2、加强模块的复用性
3、提高单模块的开发部署效率
4、提高系统的扩展性
5、提高团队协助能力
缺点:
1、增加了架构设计变得复杂(分布式事务,分布式锁)
2、增加了运维、部署的复杂度(单模块简洁快速,多模块更加复杂)
3、增加服务的响应时间(多模块相互调用,增加的调用链的长度,增加的响应时间)
4、增加的排查问题的成本(各模块逐一排查)
5、增加项目管理维护的复杂度
将分布式项目进行更加精细化的划分,每个拆分出来的服务保证职责单一(微服务属于分布式模式,只是拆分更加精细,职责跟进单一)。
优点:
1、易于开发和维护
2、启动较快
3、局部修改容易部署
4、技术栈不受限
5、按需伸缩
缺点:
1、运维要求较高
2、分布式的复杂性
3、接口调整成本高
4、重复劳动
1、分布式事务
2、分布式锁
3、负载均衡
4、服务发现
5、数据库性能与高可用