关于envoy:Envoy-HTTP-反向代理实现的事件流
本文摘自我的开源图书:《Istio & Envoy 底细》 中的:HCM upstream/downstream 事件驱动合作下的 HTTP 反向代理流程 一节。能够下载 pdf 或在线浏览。如转载图片不清,可回到原文。HTTP 反向代理的总流程整体看,Socket 事件驱动的 HTTP 反向代理总流程如下: 图中看出,有4种事件驱动了整个流程。前面几节会一一剖析。 Downstream Read Request 模块合作 图:Downstream Read-Ready 模块合作 用 Draw.io 关上 大略阐明一下流程: downstream socket 可读回调Http::ConnectionManagerImpl 读取 socket,增量放入 Http1::ConnectionImplHttp1::ConnectionImpl 调用 nghttp2 增量解释 HTTP 申请如果 nghttp2 认为曾经 残缺读取了 HTTP Request 申请,则调用 Http::ServerConnection::onMessageCompleteBase()Http::ServerConnection::onMessageCompleteBase() 首先 进行 downstream ReadReady 监听Http::ServerConnection::onMessageCompleteBase() 调用 Http::FilterManager ,发动 http filter chain 的 decodeHeaders 迭代流程个别,http filter chain 的最初一个 http filter 是 Router::Filter ,Router::Filter::decodeHeaders() 被调用Router::Filter::decodeHeaders() 的逻辑就见下图了。Downstream Request Router 模块合作 ...