1、集中式架构
当系统流量小的时候,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本
优点 | 缺点 |
---|---|
系统开发速度快 | 代码耦合度高,后期维护困难 |
维护成本低 | 无法针对不同模块进行针对性优化 |
适用于并发要求较低的系统 | 无法水平扩展 |
单点容错率低,并发能力差 |
2、垂直拆分
当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,根本业务需求对系统进行拆分
优点 | 缺点 |
---|---|
流量分担,解决了并发问题 | 系统相互独立,有很多重复开发工作,影响开发效率 |
可以针对不同模块进行针对性优化 | |
方便水平扩展,负载均衡,容错率提高 |
3、分布式服务
当垂直应用越来越多,应用之间的交互不可避免;将核心业务抽取出来,作为独立的服务;逐渐形成稳定的服务中心,使前端应用能够更快速的响应多变的市场需求
优点 | 缺点 |
---|---|
提高代码复用率和开发效率 | 系统之间的耦合度高,调用关系错综复杂,难以维护 |
4、面向服务架构(SOA架构)
SOA(Service Oriented Architecture)面向服务架构
:一种设计方法,包含多个服务;服务之间通过相互依赖,最终提供一系列功能。一个服务以独立的形式存在于操作系统进程中。各个服务之间通过网络调用
ESB(企业服务总线)
:就是一根管道,连接着各个服务点。为了集成不同系统,不同协议的服务,ESB会进行消息转化解释和路由工作,让不同的服务互联互通
优点 | 缺点 |
---|---|
降低系统之间耦合度,简化调用关系 | 每个供应商提供的ESB有偏差,自身实现较为复杂 |
ESB服务粒度较大,集成整合所有服务和协议 | |
数据转换使得运维、测试部署困难 | |
所有服务都通过一个通路通信,直接降低了通信速度 |
5、微服务架构
使用一套小服务来开发单个应用的方式或途径,每个服务都基于单一业务
能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API
,并能够通过自动化部署机制来独立部署。这些服务可以使用不用的编程语言实现
,可以使用不同的数据存储技术
,可以保持最低限度的集中式管理
微服务的特点
:
单一职责:每个服务都只专注于自己的单一
业务
微小服务:服务的粒度很小
;服务虽小,却五脏俱全
面向服务:每个服务都对外暴露Rest风格的服务接口API
。做到与平台和语言无关
;并不关心、不限定服务的技术实现
,只要提供Rest接口即可
高度自治:服务之间相互独立
,互不干扰
团队独立:每个服务都有一个独立的开发团队
技术独立:不关心、不限定服务的技术实现
前后端分离:采用前后端分离,提供统一的Rest接口
数据库分离:每个服务都使用自己的数据源
部署独立:服务之间虽然有互相调用,但可以做到服务启动时不影响其他服务。有利于持续集成和持续交付
独立组件:每个服务都是独立的组件,可服用、可替换、降低耦合、易维护
微服务架构与SOA架构的对比
:
功能 | SOA架构 | 微服务架构 |
---|---|---|
组件大小 | 大块业务逻辑 | 小块业务逻辑 |
耦合 | 通常松耦合 | 总是松耦合 |
管理 | 着重中央管理 | 着重分散管理 |
目标 | 确保应用能够交互操作 | 易维护、易扩展、更轻量级的交互 |