一. 集中式架构
1. 概述
当网站的流量很小时,只需要一个应用,将所有的功能都部署在一起,以减少部署节点和成本。
2. 优点
开发速度快,维护成本低。
3. 缺点
代码耦合度高,维护困难,无法水平扩展,容错率低,并发能力差。
二. 垂直拆分
1. 概述
由于访问量逐渐增大,单一的应用无法满足需求,需要根据业务功能对系统进行拆分。
2. 优点
系统拆分实现了流量分担,解决了并发问题,可以针对不同的模块进行优化,方便水平扩展,负载均衡,提高容错率。
3. 缺点
系统间相互独立,有很多重复开发工作。
三. 分布式服务
1. 概述
当垂直应用越来越多时,应用之间的交互也增多了,我们可以将核心的业务抽取出来作为独立的服务,形成基础服务中心,这样其他应用调用这些常用的服务就很方便。
2. 优点
抽取了基础服务,提高代码的复用和开发效率。
3. 缺点
系统间耦合度增高,调用关系复杂,难以维护。
四. 面向服务结构(SOA)
1. 概述
包含多个服务,服务之间通过相互依赖提供一系列的功能。一个服务通常以独立的形式存在于操作系统进程中,各个服务之间通过网络调用。各个服务之间通过ESB(企业服务总线)连接,为了集成不同的服务,不同协议的服务,ESB做了消息的转化解释和路由工作,让不同的服务互联互通。
2. 缺点
服务粒度较大,ESB集成整合所有服务和协议,数据使得部署,维护困难,且所有的服务都通过一个通道通信,降低了通信的速度。
五. 微服务架构
1. 概述
微服务架构是使用一套小服务来开发单个应用的方式,每个服务基于单一业务能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,并能够通过自动化部署来独立部署。这些服务可以使用不同语言,存储技术,并保持最低限度的集中式管理。
2. 流程
终端通过一个Gateway网关来请求服务,服务通过服务注册中心进行服务注册和管理。网关是一个服务器,是系统的唯一入口,它为每个客户端提供一个定制的API,所有的客户端和消费端都是通过统一的网关接入微服务的,在网关层处理所有的非业务功能。如身份验证,监控,负载均衡,缓存,等等。网关提供RESTful/HTTP的方式访问服务。
3. 特点
(1) 每个服务对应单一的业务。
(2) 服务拆分粒度很小。
(3) 每个服务只需要提供标准接口API,不论该服务如何实现。
(4) 服务间相互独立,互不干扰。
(5) 前后端分离,提供统一的Rest接口,后端不需要再为PC,移动端开发不同的接口。
(6) 数据库分离,每个服务使用自己的数据源。
4. 微服务与SOA的区别
微服务架构和SOA都是对系统进行拆分,SOA中有ESB作为中心总线,而微服务做了去中心化处理,将ESB去掉了,更加灵活,着重分散管理,而不是中央管理。