MVC架构、RPC架构、SOA架构、微服务架构区别

[img]http://dl2.iteye.com/upload/attachment/0131/1663/aa825484-d92e-3f69-b5fd-86a820a25808.png[/img]


[b]一、MVC架构[/b]

其实MVC架构就是一个单体架构。

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。

当业务规模很小时,将所有功能都部署在同一个进程中,通过双机或者前置负载均衡器实现负载分流。

此时,加速前端页面开发,分离前后台逻辑的mvc框架是关键。

代表技术:Struts2、springMVC、Spring、Mybatis 等等。

[b]二、RPC架构[/b]

RPC(Remote Procedure Call)远程过程调用,他是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

此时,用于提高业务复用及拆分的 RPC 框架是关键。

代表技术:Thrift、Hessian等等。

[b]三、SOA架构[/b]

SOA(Service Oriented Architecture)面向服务架构。

ESB(Enterparise Service Bus)企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。简单来说 ESB 就是一根管道,用来连接各个服务节点。为了集成不同系统,不同协议的服务,ESB 做了消息的转化解释和路由工作,让不同的服务互联互通。

ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急。

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

服务生命周期管控和运行态的治理成为瓶颈。

此时,用于提高机器利用率的,提升服务质量的 (资源调度和治理中心)SOA 服务治理是关键。

SOA架构特点:

1.系统集成:站在系统的角度,解决企业系统间的通信问 题,把原先散乱、无规划的系统间的网状结构,梳理成 规整、可治理的系统间星形结构,这一步往往需要引入 一些产品,比如 ESB、以及技术规范、服务管理规范; 这一步解决的核心问题是【有序】

2.系统的服务化:站在功能的角度,把业务逻辑抽象成 可复用、可组装的服务,通过服务的编排实现业务的 快速再生,目的:把原先固有的业务功能转变为通用 的业务服务,实现业务逻辑的快速复用;这一步解决 的核心问题是【复用】

3.业务的服务化:站在企业的角度,把企业职能抽象成 可复用、可组装的服务;把原先职能化的企业架构转变为服务化的企业架构,进一步提升企业的对外服务能力;“前面两步都是从技术层面来解决系统调用、系统功能复用的问题”。第三步,则是以业务驱动把一个业务单元封装成一项服务。这一步解决的核心问题是【高效】


代表技术:Mule、WSO2

[b]四、微服务[/b]

微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

微服务其实就是一个轻量级的服务治理方案。

微服务架构是一种架构模式,他提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的Restful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

随着敏捷开发、持续交付、DevOps 理论的发展和实践,以及基于 Docker 等轻量级容器部署应用和服务的成熟,微服务架构开始流行,逐渐成为应用架构的未来演进方向。通过服务的原子化拆分,以及微服务的独立打包、部署和升级,小团队敏捷交付,应用的交付周期将缩短,运营成本也将大幅下降。

微服务架构特点:

1.通过服务实现组件化

开发者不再需要协调其它服务部署对本服务的影响。

2.按业务能力来划分服务和开发团队

开发者可以自由选择开发技术,提供 API 服务

3.去中心化

每个微服务有自己私有的数据库持久化业务数据

每个微服务只能访问自己的数据库,而不能访问其它服务的数据库

某些业务场景下,需要在一个事务中更新多个数据库。这种情况也不能直接访问其它微服务的数据库,而是通过对于微服务进行操作。

数据的去中心化,进一步降低了微服务之间的耦合度,不同服务可以采用不同的数据库技术(SQL、NoSQL等)。在复杂的业务场景下,如果包含多个微服务,通常在客户端或者中间层(网关)处理。

4.基础设施自动化(devops、自动化部署)

把应用拆分成为一个一个的单个服务,应用Docker技术,不依赖任何服务器和数据模型,是一个全栈应用,可以通过自动化方式独立部署,每个服务运行在自己的进程中,通过轻量的通讯机制联系,经常是基于HTTP资源API,这些服务基于业务能力构建,能实现集中化管理(因为服务太多啦,不集中管理就无法DevOps啦)。

代表技术:SpringCloud、dubbo等等

你可能感兴趣的:(MVC架构、RPC架构、SOA架构、微服务架构区别)