BFE的回调机制

    在BFE中,设置了以下9个回调点:

    • HandleAccept: 位于和客户端的TCP连接建立后
    • HandleHandshake:位于和客户端的SSL或TLS握手完成后
    • HandleBeforeLocation:位于查找产品线之前
    • HandleFoundProduct:位于完成查找产品线之后
    • HandleAfterLocation:位于完成查找集群之后
    • HandleForward:位于完成查找子集群和后端实例之后,位于转发请求之前
    • HandleReadResponse:位于读取到后端响应之后
    • HandleFinish:位于和客户端的TCP连接关闭后

    回调点的定义,可以查看/bfe_module/bfe_callback.go

    回调函数的返回值,定义如下:

    • BfeHandlerFinish:在发送响应后,关闭连接
    • BfeHandlerGoOn:继续执行下一个回调函数
    • BfeHandlerRedirect:执行重定向(Redirect)
    • BfeHandlerResponse:发送响应
    • BfeHandlerClose:直接关闭连接,不发送任何数据

    回调函数返回值的定义,可以查看

    • HandlersAccept:用于处理连接建立的相关场景
    • HandlersRequest:用于处理和请求有关的场景
    • HandlersForward:用于处理和转发有关的场景
    • HandlersResponse:用于处理和响应有关的场景
    • HandlersFinish:用于处理连接关闭的相关场景

    回调函数类型的定义,可以查看/bfe_module/bfe_handler_list.go

    下面对这几种回调函数做详细的说明。

    • 适用回调点:
      • HandleAccept
      • HandleHandshake
    • 回调函数形式:
      • handler(session *bfe_basic.Session) int
    • 回调函数形式:
      • handler(req bfe_basic.Request) (int, bfe_http.Response)
    • 适用回调点:
      • HandleForward
    • 回调函数形式:
      • handler(req *bfe_basic.Request) int
    • 适用回调点:
      • HandleReadResponse
      • HandleRequestFinish
    • 回调函数形式:
      • handler(req bfe_basic.Request, res bfe_http.Response) int
    • 适用回调点:
      • HandleFinish