2020-11-05 19:15:01
阿里七层流量入口 Tengine硬件加速探索之路
阿里集团的接入层作为全站流量的入口,承载着HTTPS卸载、流量分发等关键任务,其性能和稳定性至关重要。随着业务量的快速增长,如何在硬件层面提升性能,成为了一个亟待解决的问题。本文详细介绍了Tengine在硬件加速领域的探索之路,特别是在HTTPS卸载和Gzip卸载方面的实践。
一、接入层系统介绍
接入层是阿里巴巴全站HTTPS诞生的产物,旨在统一处理HTTPS卸载和流量分发等任务,以降低机器成本和简化证书管理。所有阿里集团的流量通过四层LVS到达统一接入层,再根据域名等维度转发到对应的后端APP,并提供智能流量分发策略。这一层还实现了安全防攻击、链路追踪等高级功能。
二、性能瓶颈分析及解决
主站接入层承载了集团90%以上的入口流量,并支持众多高级功能。然而,HTTPS和Gzip是消耗CPU资源的主要功能点,成为了性能瓶颈。为了优化性能,阿里在硬件加速领域迈出了第一步。
三、HTTPS卸载篇
全站HTTPS虽然能提升安全性,但也会降低网站访问速度和增加服务器CPU消耗。软件层面的优化方案如Session复用、OCSP Stapling等虽有一定效果,但无法满足日益增长的流量需求。因此,阿里采用了基于Intel QAT的异步加速方案。
该方案由Tengine的ssl_async指令、OpenSSL + QAT Engine及QAT Driver三部分组成。Tengine通过适配OpenSSL-1.1.0的异步接口,将私钥操作卸载至Intel提供的引擎中,引擎通过QAT驱动调用硬件完成非对称算法。该方案在Tengine2.2.2中已经开源,并显著提升了HTTPS的性能。
四、Tengine基于Intel QAT的异步加速方案效果
HTTPS卸载方案不仅减少了物理机数量,还节省了CPU资源,为公司带来了显著价值。
五、Gzip卸载篇
接入层Gzip模块的CPU占比达到15-20%,卸载Gzip的CPU消耗可以进一步提升性能。阿里调研了多套硬件加速方案,最终选择了与Intel合作的QAT卡加速方案。
通过改造Tengine中的Gzip模块,使其调用QAT驱动进行硬件压缩,最终将压缩后的数据传回Tengine传输给用户。然而,在实践过程中遇到了诸多挑战,如驱动问题、系统函数CPU占比变高等。经过与Intel研发团队的多次探讨和优化,这些问题得以解决。
六、运维与监控
在上线前,阿里进行了充分的压测和演练,并制定了容灾保护方案。同时,对硬件加速相关的资源指标进行实时监控和报警。部署与发布方面,采用单rpm软件包、双二进制模式,自动识别部署机器是否开启QAT,并选择正确的二进制执行。
七、硬件加速效果
上线后,Tengine Gzip使用QAT加速后,CPU节省在15%左右,且Gzip基本上完全卸载。在2017年双11零点流量峰值附近,Tengine加速机器相比普通机器性能提升21%。
八、展望及总结
Tengine首次采用硬件加速技术卸载Gzip,不仅带来了性能上的提升,还为接入层在硬件加速领域打下了坚实的基础。在未来,Tengine将继续在软件和硬件层面进行探索,为集团和用户提供更加高可用、高性能、低成本、安全、运维自动化的系统。









