1、背景
对于服务架构,这个名词大家应该都很熟悉了吧,一个好的架构并不是一个最合适的架构,在对于选择那种架构,对于一个项目后续发展致关重要,接下来我们一起走进web服务架构的演变历程看看吧!
2、服务架构介绍
2.1、 单体架构
概念:只需要一个应用,将所有的功能代码打包成一个服务,部署到服务器
优点:
• 架构简单,项目开发和维护成本低。
• 所有项目模块部署到一起,对于小型项目来说,维护方便。
缺点:
• 所有模块耦合在一起,虽然对于小型项目来说,维护方便。但是,对于大型项目来说,却是不易开发和维护的。
• 项目的各模块之前过于耦合,如果一旦有一个模块出现问题,则整个项目将不可用。
• 无法针对某个具体模块来提升性能。
• 无法对项目进行水平扩展。
2.2、 垂直架构
概念:将单体应用部署多份,分别放在不同的服务器上
优点:
• 系统进行了拆分,可根据不同系统的访问情况,有针对性的进行优化。
• 能够实现应用的水平扩展。
• 各系统能够分担整体访问的流量,解决了并发问题。
• 一个系统发生了故障,不应用其他系统的运行情况,提高了整体的容错率
缺点:
• 拆分后的各系统之间相对比较独立,无法进行互相调用。
• 各系统难免存在重叠的业务,会存在重复开发的业务,后期维护比较困难。
2.3、 分布式架构
概念:将重复的代码抽象出来,形成统一的服务供其他系统或者业务模块来进行调用
优点:
• 将重复的业务代码抽象出来,形成公共的访问服务,提高了代码的复用性。
• 可以有针对性的对系统和服务进行性能优化,以提升整体的访问性能。
缺点:
• 系统之间的耦合度变高,调用关系变得复杂,难以维护。
2.4、 SOA架构
概念:增加一个统一的调度中心来对集群进行实时管理。
优点:
• 使用注册中心解决了各个服务之间的服务依赖和调用关系的自动注册与发现。
缺点:
• 各服务之间存在依赖关系,如果某个服务出现故障可能会造成服务的雪崩。
• 服务之间的依赖与调用关系复杂,测试部署的困难比较大。
2.5、 微服务架构
概念:将一个大的项目拆分为一个个小的可以独立部署的微服务,每个微服务都有自己的数据库。
优点:
• 服务彻底拆分,各服务独立打包、独立部署和独立升级。
• 每个微服务负责的业务比较清晰,利于后期扩展和维护。
• 微服务之间可以采用REST和RPC协议进行通信。
缺点:
• 开发的成本比较高。
• 涉及到各服务的容错性问题。
• 涉及到数据的一致性问题。
• 涉及到分布式事务问题