1、Tengine-Ingress 高性能高可用云原生网关邓波 阿里巴巴自我介绍阿里花名:光锥从业经验互联网后端技术10年+2016年加入阿里,专注淘天集团接入网关的技术演进主导推进云原生网关 Tengine-Ingress 的技术开源大纲云原生网关云原生网关设计背景设计背景超大规模网关超大规模网关设计及挑战设计及挑战实际应用实际应用未来未来规划规划132云原生网关云原生网关设计背景设计背景网关解决的核心问题连接用户与业务的桥梁端侧和业务多样性-服务治理多种协议支持灵活的路由策略边界控制集中式的访问控制和流量清洗面向开发者友好交互界面/标准API统一的监控和日志采集高可用机制网关能力图谱管控协议I
2、ngress/Gateway API/REST API产品接入流程控制可观察性网络协议QUIC/TLS/SSL 流量管理多维度路由/服务发现管理自定义扩展高可用机制云原生背景下网关发展标准化标准化热更新热更新扩展性扩展性统一API标准部署方式标准化Ingress APIGateway API支撑丰富的插件化生态配置无损热更新Tengine-Ingress 云原生网关Tengine-Ingress 定位于支撑超大规模、复杂业务系统的,支持动态、高性能、可扩展的云原生网关。超大规模超大规模复杂业务复杂业务云原生云原生标准协议标准协议超大规模网关超大规模网关设计与挑战设计与挑战Tengine-Ing
3、ress云原生架构概览高性能低延迟实现配置热更新实现高可用机制:灰度变更高可用机制:配置一致性校验多维度精细化路由实现云原生架构标准协议兼容Ingress API配置存储k8s apiserver可独立部署服务发现k8s service自定义服务发现云原生部署监控高性能低延迟实现代码性能优化协议优化集成自研 XQUIC网络耗时降低15%RPC场景核心链路使用C模块XUDP实现卡顿率降低20%短视频场景上传速率提升27%上传场景吞吐性能提升30%-50%QUIC协议配置热更新-背景集团原有网关方案基于 tengine reload 定时生效reload 过程会导致客户端断链,影响请求平滑性生效时
4、延较长,最低 4 小时生效时延无法满足业务诉求,需要实时无损生效开源 kubernetes/ingress-nginx技术方案上仍需要 reload 更新Tengine-Ingress 网关基于 Tengine 实现热更新配置热更新-实现实时无损生效配置更新交互使用共享内存,本地持久化读写分离:配置解析写入过程不卡顿 worker 进程快速恢复演练-做最坏的打算k8s apiserver 异常无法更新配置,不影响存量业务Controller 进程在更新/运行过程中挂掉无法更新配置,不影响存量业务Controller 异常后 POD 被重启启动后 Tengine 自动拉起,使用本地持久化配置无法
5、更新配置,启动后不影响存量业务Tengine 本地持久化文件写坏本地持久化配置定时快照,可一键恢复历史快照启动无法更新配置,回退快照时间点之后的接入被舍弃如何保障变更过程网关的可靠性?变更过程异常如何及时感知?业务如何小规模验证变更有效性?高可用机制高可用机制灰度变更灰度变更配置灰度更新版本管理变更过程存在两个版本ControllerRevision资源管理版本灰度控制由管控控制灰度比例业务方可控制暂停灰度灰度生效命中灰度范围生效新版告警阻断异常告警阻断变更流程配置创建/更新灰度推进流程配置灰度更新-annotation扩展文档:https:/tengine.taobao.org/docume
6、nt/ingress_annotations.html是否启用灰度nginx.ingress.kubernetes.io/ingress-rollout灰度版本控制nginx.ingress.kubernetes.io/ingress-rollout-current-revisionnginx.ingress.kubernetes.io/ingress-rollout-update-revision灰度生效范围nginx.ingress.kubernetes.io/ingress-rollout-index-id灰度配置更新-管控流程如何保障上千机器,每