对于每一个想进入架构师领域的工程师来说,软件架构的演化历史及其背后原理是必须要掌握的,近日,开课吧《Hello, World公开课》邀请前阿里巴巴资深研发工程师Devin老师,让他带我们一起看看,移动互联网掀起后的软件系统架构演化。

单体架构

单体服务架构相信的大家都最为熟悉,前端展示层,Service层,Dao层可以说信手捏来。在客户端单一的PC时代,单体架构是我们开发软件的范式。所谓单体架构,就是应用和DB在一台机器上,公用一个数据库,以DB为中心,开发中大量使用事务,存储过程,触发器、复杂SQL。这么做的优点是业务不复杂情况下开发简单, 迭代快速。但所有的性能瓶颈都压在了数据库上。所以在传统的单体架构的基础上,又演化应用垂直拆分和DB垂直拆分两种架构。

应用垂直拆分

顾名思义,就是按照业务垂直拆分应用,每个应用仍旧按逻辑分展示层、逻辑层、数据访问层,各个应用仍旧使用同一个DB。这么做的好处是各个应用可以单独发布和部署,但这样系统间之间没有通信 ,容易形成资源孤岛和信息孤岛

DB垂直拆分

DB按照业务垂直拆分,这种架构有很多缺点,首先表的关联关系复杂,拆分难度很大,其次,跨多业务的复杂查询难以实现,而且引入跨库DB的分布式事务问题。

服务化

在前面应用垂直拆分中我们有讲过,系统之间如果没有通信容易形成信息孤岛,那么应给如何解决这个问题呢?这时候就要用到RPC。RPC就是指远程过程调用,两个应用之间基于业务的接口交互。

 

图片1.png

 

之所以叫半服务化,因为虽然解决了通信问题,但是DB被很多系统和应用使用基于DB的耦合越来越难以维护和扩展。随着移动互联网高速发展,我们需要更先进的系统架构。

微服务架构

从下面这张图我们可以看到,微服务架构就是多个应用之间互相调用,各个调度之间呈网状结果,调用关系错综复杂,并没有统一管理。同时我们可以引入负载均衡,支持水平扩展。我们也可以看到,微服务架构的特点是各个应用之间调用复杂,一旦出现问题,你也很难排查出是哪里出了问题。所以在微服务架构中,服务治理和服务调度显得尤为重要,所以引入了ESB总线。

下图是ESB(企业服务总线)架构图,服务提供者和使用者通过ESB连接而不再直连,服务提供者接入ESB,ESB提供Proxy Service,使用者调用Proxy Service。ESB相当于“中介”的角色

 

图片2.png

 

相较于网状直连的方式,这种星型集中转发主要提供了以下六点的服务功能

· 位置透明性的消息路由和寻址服务(服务换IP、扩容等对客户端无感知)

· 服务注册和命名管理

· 支持多种消息传递类型 请求响应(同步/异步),发布订阅

· 多种传输协议(非常适合多种异构系统的集成)

· 多种数据格式及相互转换

· 日志和监控

通过ESB总线机制,各应用之间不用打通网络,只需要打通和ESB服务器的网络,隔离性好,安全性大幅提高,同时ESB服务器具备完善的日志和监控,所有请求/响应的数据都有,异常、流量等也都能监控。

但任何架构都要其缺点,加入ESB总线机制,需要两次网络传输,增加了耗时。而且因为强依赖ESB服务器,多了一层中间件,ESB的性能瓶颈也是不小的挑战。

分布式架构

接下来,我们再来看看分布式架构,下图是一个典型的分布式架构图,由注册中心、消费者、服务提供者、监控四个部分组成。

首先服务要在注册中心注册,消费者想要订阅某个服务必须通过代码来调用注册中心的服务信息,然后直接调用服务。相比于ESB服务,分布式架构是一种轻量级的架构,而且是透明直连的。

 

图片3.png

 

高可用架构

所谓高可用就是架构经过专门的设计,从而减少停工时间,而保持其服务的高度可用性的一种架构。接下来我们从数据库和缓存两个角度来看如何设计系统的高可用架构。

我们来看下面这张图,数据库层面,从最早期的单库,到数据库的垂直拆分、读写分离,并且对历史数据做冷热分离等一系列操作来实现数据库的高可用。

图片4.png

 

下图是DB缓存到最后的多级缓存演化路径图,在这里我们要着重注意缓存雪崩的问题,当大量缓存失效时,导致大量的请求访问数据库,导致数据库服务器,无法抗住请求或挂掉。

 

图片5.png

 

除了DB和缓存外,常用的高可用手段还有CDN、同城容灾、异地容灾、两地三中心、双活与多活等方式。以双活和多活为例,两个或多个数据中心都处于运行当中, 运行相同的应用,具备同样的数据,能够提供跨中心业务负载均衡运行能力,实现持续的应用可用性和灾难备份能力。传统容灾是生产数据中心投入运行, 灾备数据中心处在不工作状态,只有当灾难发生时,生产数据中心瘫痪,灾备中心才启动。这么做的好处是可用充分利用资源,避免了一个数据中心常年处于闲置状态而造成浪费。

图片6.png

 

讲师介绍

Devin,曾任职美团,阿里等知名互联网公司,现全球top数字货币交易所资深开发。

《Hello ,World公开课》是由开课吧推出的面向广大开发工程师的免费加餐课,集结业内名师大咖,聚焦热门技术和实战解决方案,以专业知识分享交流为桥梁,链接正在创造世界的一群科技主力们,向初心致敬,为技术发烧。无论你是初入职场的应届生,还是准备升职加薪的职场精英,相信这里都有你需要的养料。