长连接网关技术专题(十三):基于Netty的携程高性能网关异步改造实践。
技术方案上,公司微服务早期发展受NetflixOSS影响较深,网关方面最早也是参考了Zuul1.0进行的二次开发。众所周知,同步调用阻塞线程,系统吞吐受IO影响大。
高性能网关核心设计1:异步流程设计。高性能网关核心设计2:流式转发&单线程。以HTTP为例,豹纹可划分为initial line header body三个组成部分。非流式场景下,Netty server端边解码入项业务逻辑,Netty server端边解码出向业务逻辑,各自流程相互独立,各自处理完整的HTTP对象。
高性能网关核心设计3:其他优化。内部变量揽加在针对请求的cookie curry等字段,如无必要不提前进行字符串解析,对外内存和零拷贝。结合前文流式转发的设计,进一步降低系统内存开销。定制的HTTP编解码HTTP的悠久历史,加之协议自身的开放性,催生了许多坏实践,轻则影响成功率,重则威胁网站安全。
网关业务形态作为独立统一的入项流量收口点,网关对公司的价值主要体现在三方面:
·一、异步不同网络环境。典型场景包括内网和外网生产环境和办公区,itc内部不同安全域专线等。
·二、天然的公共业务切面。包括安全和认证和反爬,路由和灰度限流和熔断和降级,监控和告警和牌照等。
·三、高效灵活的流量控制。链路优化核心是引入接入层,让远距离用户就近访问,缓解握手开销过大的问题。异步多活区别于按比例分配就近访问策略等。异步多活模式下,网关接入层需按照业务维度的SADN key进行分流,如userate防止底层数据冲突。
下图总结了线上网关的工作状态,解决方案也比较直观地在图中画了出来。
·网关治理能力1:多协议兼容。网关治理能力3: