http connection manager#
首先,http connection manager(HCM) 在 Listener 的角度看,是一个 Network Filter。
为了扩展性,Envoy 的 http connection manager 采用了经典的 filter chain 设计模式。这个和 Listener Filter Chain 有一点类似:
图:http connection manager 设计模型#
请求 filter 流如下:
响应 filter 流如下:
http filter 抽象对象定义#
HttpFilter 在源码中叫 StreamFilter 或更精确叫 Http::StreamFilterBase 。一个 http connection manager 拥有一个 Http::FilterManager, FilterManager 拥有 list<StreamFilterBase*> filters_ 。
图:http filter 抽象对象#
http filter C++类关系#
图:http filter C++类关系#