淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路( 二 )


下面这张图,能够让大家更加直观的了解国内的移动网络环境 。描述了从用户到IDC的端到端的路由情况,不仅数据传输耗时长且丢包率高,同时安全性也是相当糟糕的,DNS劫持、内容劫持在中国就是家常便饭 。

淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路

文章插图
 
因此,我们在改善网络通道上有很多的事情可以去做,去探索突破运营商基础网络的限制,力争为用户创造极致的购物体验 。
移动端的DNS问题相当普遍,可以详读以下专题文章:
《全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等》
《美图App的移动端DNS优化实践:HTTPS请求耗时减小近半》
《百度APP移动端网络深度优化实践分享(一):DNS优化篇》
《移动端网络优化之HTTP请求的DNS优化》
5、整体技术架构为了满足移动电商业务高速发展的需求,我们决定打造一个世界级的网络接入服务,构建一个无线网络下”水、电、煤“ 一样的基础设施 。
这样一个基础设施需要做到的四个目标:
1)全双工;
2)低延时;
3)高安全;
4)开放 。
在这四个目标之上是围绕这个接入服务配套的运维体系,帮助最终用户取得良好的端上体验的同时,帮助开发者快速构建自己的业务 。
淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路

文章插图
【淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路】 
如上图所示,在整个接入服务上我们划分为两层:
1)接入网关:负责连接的保持、消息的解析、消息的分发;
2)应用网关:实现各种应用层协议:API、SYNC、RPC、PUSH等,在应用网关的背后是具体的业务系统 。
同时我们建立了一个统一调度服务,而不是采用传统的DNS,调度服务是我们的控制中心,通过它我们可以强有力的指挥我们的客户端,并且不会受到DNS污染的影响 。
与服务端的分层架构对应的是客户端的SDK,最底层的统一网络库SDK集中了我们对网络优化的策略,并向上为各个应用网关技术的SDK提供API 。
基于上面的开放架构,业务方可以选择直接开放具体的后端服务对接不同的应用网关,不需要了解网络背后的细节,并通过应用网关如API网关提供的开发工具快速生成客户端代码 。业务方也可以基于这个接入层设计自己的协议 。
统一接入层集中管理了用户的设备、在线状态,并提供信息的双向传递能力 。
如下图所示:
淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路

文章插图
 
网关将致力于解决中间网络的通讯,为上层的服务提供高质量的双向通讯能力 。
6、稳定性与容灾稳定性与容灾是服务端中间件永恒的主题,统一接入层这样一个汇聚网关收益和风险是并存的,一旦这个入口故障了,波及的用户范围是不可想象的,如何做的更加稳定,是一个巨大的挑战 。
6.1 网关架构的优化对于一个统一网关来说,对接的业务网关的信息传递特点是不一样的,大部分的业务在全天都是比较平缓的,但是个别营销类业务会在短时间内发布海量的信息,这样的信息发布会抢占网关的大量资源,对于用户的正常访问会产生影响 。
举个例子:push服务需要通过网关推送2亿条消息,而这些消息需要在短时间内全部推送完,而同时网关在为正常的用户的交互提供服务,海量信息的推送和正常的用户交互相互竞争资源,最终会造成正常用户的交互失败,对于业务来说,这是不可接受的 。
基于上面的情况考虑,整个网关在布署上分为两个集群:
1)一个集群处理常态的在线用户访问;
2)一个集群处理海量信息的推送 。
如下图所示,通过这样的方式,避免了业务形态不同,对统一网关的冲击,将不同的业务形态进行了隔离 。
淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路

文章插图
 
6.2 异地多活在异地多活的整体方案中,统一网关承担了快速引导流量的职责,也是这一方案顺利实施的一个重要环节 。
异地多活是一个多机房的整体方案,在多个地区同时存在对等的多个机房,以用户维度划分,多机房共同承担全量用户的流量;在单个机房发生故障时,故障机房的流量可以快速的被迁引到可用机房,减少故障的恢复时间 。


推荐阅读