2019 年 10 月 27 日,由又拍云、Apache APISIX 社区联合举办 API 网关与高性能服务最佳实践丨又拍云 Open Talk 活动在杭州圆满落幕。这是继深圳、北京、成都、上海、武汉活动后,系列活动的第六站,活动邀请业内资深的 Nginx、OpenResty、Tengine、Kong、Envoy 等 Web 服务器方面的技术专家,分享 API 网关和高性能服务实践。
△活动现场合影
本次 Open Talk 杭州站活动,邀请了Apache APISIX PPMC 成员王院生、又拍云系统开发高级工程师高级工程师杨鹏、蚂蚁金服技术专家田阳、 PolarisTech 联合创始人蔡书、阿里巴巴技术专家王发康,为到场的百余位技术爱好者和线上数千名直播观众,带来关于微服务网关、性能优化、网络代理、Service Mesh、负载均衡算法等备受关注的话题分享。
极致性能的微服务网关是怎样炼成的?
Apache APISIX PPMC 成员王院生做了开场演讲,分享了《Apache APISIX 微服务网关极致性能架构解析》的主题。微服务 API 网关 APISIX 自 6 月份开源以来受到开发者的广泛关注,并于美国时间 2019 年 10 月 17 日正式进入 Apache 孵化器。APISIX 是一个高性能、可扩展的微服务 API 网关。它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由、插件热加载、gRPC 协议转换等功能,适合微服务体系下的 API 管理。
△Apache APISIX PPMC 成员王院生
王院生着重从架构设计层面讲述 Apache APISIX 团队是如何设计云原生微服务 API 网关的。他详细阐述了 Apache APISIX 的技术选型思路:
· 配置中心:高可用、增量订阅、历史记录
· 语言或开发平台:动态、高性能、网关的周边资源丰富
· 数据校验:开放标准、有一定的生态系统
· 学习竞对:从 Ganter 报告中获取前辈列表,做分析和比较
王院生提到,借助 etcd 配置分发精简核心,基于 radixtree 前缀树路由,和高性能基础库 apisix/core 是 Apache APISIX 的三板斧,目前 Apache APISIX 拥有 30 余个功能项,是目前性能最强的 API 网关之一。
如何优化性能,更快地接收数据包
又拍云系统开发高级工程师杨鹏带来了《性能优化:接收数据包》的分享。他在又拍云主要负责权威 DNS 服务器的开发、维护和可用性调度等 CDN 稳定性保障工作。本次分享杨鹏从基于 Linux 内核,机器如何接收数据包和如何针对性地进行监控和调优两个方面展开。
△又拍云系统开发高级工程师杨鹏
从网卡到应用程序,数据包会经过一系列组件,杨鹏认为这个过程中涉及到诸多细微可调的软硬件参数,并且相互影响。他首先用一个线上问题的实例介绍了网卡驱动的优化,通过调整队列数量、队列大小、队列权重、哈希字段、ntuple filtering 控制特定数据帧到指定队列等多种手段进行调优。
现场他就数据包到达网卡控制器(NIC)、产生硬件中断,通知系统数据可读、数据包被封装为 skb 结构体准备传递到上层协议栈等三个环节做详细阐述,结合实践经验分享了在深入理解底层机制的基础上如何做出“场景化”的最优配置。
蚂蚁金服网络代理的演进之路
来自蚂蚁金服的技术专家田阳分享了《蚂蚁网络代理的演进之路》的主题,他是蚂蚁开源项目 SOFAMosn 的核心成员,Tengine 专家。他现场介绍了蚂蚁金服网络代理在接入层以及 Mesh 化道路上,从网络硬件设备到自研平台,从传统服务治理到 Service Mesh,是如何一步步支撑秒级百万支付,千万红包请求的。
△蚂蚁金服技术专家田阳
田阳详细介绍了蚂蚁金服为了拥抱微服务、云原生,将异构语言体系融合,并对全局流量进行管理,打造金融级的网络安全,而拥抱 Service Mesh 的实践。SOFAMesh 是蚂蚁金服自研平台,目前蚂蚁内部已经有 20 多万的容器实现 Mesh 化,并且通过业务链路的下沉,RT 实现了下降,平稳支撑大促活动。
面向未来,田阳认为网络代理有以下趋势:
· 云原生、多云混合云时代,南北,东西流量的边界逐渐模糊
· 应用网络代理层部分能力固化,下沉至系统网络栈或者智能硬件设备
· Sidecar -> Proxyless -> Networkless
· 物理通信基础设施的升级势必带来应用网络层的变革
最简单实用的 Service Mesh 实现:Flomesh
PolarisTech 联合创始人的蔡书分享了《简单的 Service Mesh——Flomesh》的主题。蔡书曾在今年 4 月份公开分享过《在混合环境下服务网格的实践》,而经过半年的努力,他们团队将这些实践经验实现成为一个开箱即用的产品。
△PolarisTech 联合创始人的蔡书
蔡书介绍到,从功能角度展开理解 Flomesh,Flomesh 主要实现了四个方面的功能:流量管理,安全和访问控制,微服务与服务治理,API 管理。Flomesh 在实践中可以用在多种场景,包括微服务治理、开放平台及API平台、多云环境下的流量管理、Serverless 平台、IoT 网关等。
蔡书还做了现场的演示,展示了 Flomesh 的反向代理与负载均衡、访问控制与流控、Spring 微服务、灰度发布、服务拓扑与分布式跟踪、网关 Perf 测试等内容。
阿里七层流量入口负载均衡算法演变之路
最后一位出场的是来自阿里巴巴的技术专家王发康,他是 Tengine 开源项目 maintainer,目前主要负责阿里集团 WEB 统一接入层的开发及维护。Tengine 作为阿里集团七层流量入口核心系统,支撑阿里巴巴历年双 11 等大促活动,提供智能的流量转发策略、HTTPS 加速卸载、动态服务发现、系统限流保 护、动态开关、链路追踪等众多高级特性。
△阿里巴巴技术专家王发康
王发康现场介绍了 Tengine 从最初使用 Nginx 官方 SWRR(Smooth Weighted Round-Robin)负载均衡算法到 VNSWRR(Virtual Node Smooth Weighted Round-Robin)算法的演变过程。由于压测平台和流量调度平台会动态调整接入层后端机器的转发权重,原生 NGINX 的负载均衡算法会导致调高权重的机器瞬间请求量暴涨,导致压测平台和流量调度平台不可用,为此 Tengine 团队创新地实现了 VNSWRR 算法,达到完美均衡效果的同时,实现了 QPS 处理能力较 SWRR 算法有 60% 左右的提升。
王发康总结到,解决问题优先要考虑性能的优化;任何一个特殊现象,包括趋势图中的波峰波谷,其背后必定有原因;简单并不代表 low,高效、可靠非常重要;小程序大流量场景,应该具有兼容并包的思想。
至此本次 Open Talk 杭州站活动完美落幕,五位讲师通过分享自身的经历,令现场和直播观众受益颇多。线上将陆续更新本次活动五位讲师的现场分享内容,敬请关注 Open Talk 官网或又拍云微信公众号。