在2018年云栖大会·武汉峰会的企业研发云专场中,来自阿里巴巴淘宝技术部基础平台部的移动中间件基础服务技术专家高志恒(鲁少千)为现场的听众带来了题为《阿里千亿级流量移动API网关的演进》的精彩分享。在本次分享中,他重点阐述了移动API网关的概念,研发效率演进,高可用演进以及运维体系演进。
数十款阿里云产品限时折扣中,赶快点击这里,领券开始云上实践吧!
以下为精彩视频内容整理:
移动API网关概念阐述
网关是不同的网络之间协议的一个协议适配。顾名思义,移动API网关是针对于移动APP开发,在不同的服务之间建立的一个系统。它主要是为不同的服务领域提供的不同的服务入口,简化其中的复杂性。
不同的公司对移动API网关的定义是不一样的。在阿里,移动API网关更多的是承载阿里所有无线业务的一个核心技术设施。同时也是承载着每一年双十一双十二这种超大规模流量的一个高性能高稳定的系统。同时,它也是阿里无线所有业务高效研发的一个发动机,它为业务方法提供快速高效套取移动能力的技术解决方案。它包括端到云整套的网络的深度优化,服务端的API的管理以及安全管控运维等。
研发效率演进
在移动互联网的发展初期,使用的服务的业务不是特别多,当时为了业务的快速上线,每个人分散的独立去开发,快速去做各自的业务。
随着移动互联网业务的快速发展,这种开发模式暴露的问题越来越多,管理上非常混乱,缺失统一研发模型和标准化,基础能力重复研发,效率低下。
为了解决这样的问题,做出了以下一些改变:
统一编程模型
将编程模型进行了标准化,同时将之前分散在各个地区的服务集中式收靠起来,在网关上进行开发,通过网关统一去对客户端提供服务。
统一基础服务
我们把客户端到服务端交互的技术细节体系进行一个很好的封装,最终行成一个网关SDK,来提供给上层业务去使用,通过这种方式就可以通过标准SDK去做很多事情。
就是把原来分散在各个地方需要建设的公共服务能力下沉。通过在服务端和客户端两方面去把公共的一些设施下沉下来以后,对研发效率效率会有一个很大的改变,因为所有的业务只需要关注于业务逻辑本身的开发。服务的开发模式也不会像以前一样乱。
随着互联网的慢慢成熟,淘宝有越来越多的业务,从而慢慢的转向了无限化。由于业务大量涌入进来,导致开发分支冲突严重;高频发布;稳定性无法保障。
为了解决这个问题,我们把整个网关的技术体系进行一个大的改造升级,将整个网关系统推向了一个崭新的网络时代,一个平台架构的时代。
大规模平台研发
通过网关的升级,可以实现大规模的平台化研发。
第一,把业务跟网关以服务化的形式拆分到子系统里面去,将整个系统网关和后端业务进行解耦;
第二,引申出一个叫API的概念,将整个服务以API契约这种形式去暴露出来;
第三,创建一个开发测试的平台,通过这个平台,可以将APP进行很好的测试。
我们研究出一种新的技术叫动态发布,原来服务暴露需要经过网关发布。通过这种技术可以实现服务的动态部署,不需要再去进行原来系统级别的发布。解决了网关稳定性的问题。
客户端在开发过程中,往往需要依赖服务端的服务,测试也是一样,如果服务还没开发好的话,就要等到功能开发差不多,才能进行测试。服务端因为任务比较重,就有可能成为项目开发的一个瓶颈。
API契约先行解决了这个问题,创建一个API,根据不同场景,预先设置一些数据,让整个项目能够进行并行开发。整个研发效率就能够大大提高,服务灵活变更,快速生效,能够支撑上百团队并行开发。
高可用演进
高可用是指,我们提供的产品与服务能够高度持续可使用。另外一层含义是指让用户能够更加安全,更好体验的高度使用。由于会出现APP被反编译,红包被刷,流量暴增应用被打垮等问题,无法做到高可用,用户体验很糟糕,从而对产品是去信心,对整个业务伤害非常大。另一方面,系统出现问题能否快速恢复,也是急需解决的问题。
产品的高可用可以通过以下手段保障:
安全与限流
针对以上出现的问题,网关首先对安全进行加固,然后进行限流。对于安全加固,在端上使用安全保镖去加固程序,让别人没办法打包或反编译代码。在服务端加强防刷等手段。通过这些措施,就可以保证用户的安全。
而对于限流部分,当一波大流量过来时,系统仍然能够正常的提供服务,很好的保证了系统的稳定。
当光纤断掉的时候,整个系统网络就断掉了。即使产品做非常好,也没办法使用了。那么就需要用到快速解决故障的系统。在光纤断掉的时候,把用户调到其他部分去使用正常的机房,这样用户的体验才会更好。
容灾与异地多活
我们首先会根据用户的维度把用户分配到不同的机房。在服务端有一个流量调度服务能够快速的把用户从有问题的机房调到能够正常使用的机房。从而使故障快速恢复,分钟级生效,用户的体验也会非常好。
通过这几方面的保障,即使是在大流量的环境下,用户的体验也会更好。
运维体系演进
产品在线上能够稳定的运行,这是最基本的,同时,我们也要了解产品运行时的状况。网关要承载大规模的系统,需要一个完善的运维体系支撑。
在运维体系还不完善的阶段,在交易下跌的情况下,由于不知道是哪个服务器出了问题,需要人工到线下依次进行排查,因此排除故障所需的时间会非常长,速度也非常慢。
而完善之后的运维体系,能够把所有线上的数据统计出来,做多维度报表。然后结合大数据人工智能对线上的数据进行实时监控告警,快速精确地定位问题,并进行故障分析。
EMAS顶层模型
EMAS顶层模型提供了移动端开发的整套技术体系,能够快速打造一个类似于手机淘宝级别的APP。例如,天猫、支付宝等等。我们通过产品的形式将EMAS顶层模型共享出来。
上图为针对企业移动研发问题的解决方案,包括持续交付解决方案,组件化解决方案,跨平台解决方案,泛质量管理解决方案以及网关统一接入解决方案。
如果对EMAS感兴趣,上图为交流群的二维码,大家可以在里面进行移动研发平台的学习和交流。
本文由云栖志愿者小组毛鹤整理编辑。