协议扩展 - 体系结构

为了实现流量级别的可扩展性,NetScaler 设备上的流量处理以独立处理模块的管道的形式公开。当流量从入口处理到出口时,流量会流经它们。管道中的这些模块遵循无共享模型。消息传递用于将流量数据从管道中的一个模块发送到下一个模块。

流量处理管道中的某些点是可扩展的,因此您可以添加代码来自定义 NetScaler 行为。

本地化后的图片

默认情况下,流量会绕过您不向其中添加任何代码的可编程模块。

本地化后的图片

行为

用于自定义流量处理的可编程接口称为行为。行为基本上是 NetScaler 设备上可用的常见可编程模式的形式化。这些行为由一组预定义的事件回调函数组成。您可以通过提供符合该行为的回调函数来实现该行为。

例如,TCP 客户端行为由处理 TCP 客户端数据流事件的回调函数 (on_data) 组成。要为基于 TCP 的协议实现基于消息的负载平衡 (MBLB),您可以为此回调函数添加代码,以处理来自客户端的 TCP 数据流并将字节流解析为协议消息。

上下文:

行为中的回调函数是通过上下文调用的,上下文是处理模块状态。上下文是处理模块的实例。例如,对于不同的客户端 TCP 连接,使用不同的上下文调用 TCP 客户端行为回调。

有效载荷:

除了上下文之外,行为回调还可以有其他参数。通常,其余的参数作为有效载荷传递,这是所有参数的集合。

因此,可编程处理模块实例可以看作是实例状态加上事件回调函数的组合,即上下文加行为。流量作为事件有效载荷通过管道。

有关 NetScaler API 扩展,请参阅 NetScaler 扩展 API 参考资料。

以下代码段显示了用户定义的函数来处理 TCP 客户端数据流事件。上下文和负载由 NetScaler 代码传递给函数。此代码只是将每次调用中收到的 TCP 数据转发到管道中的下一个处理模块上下文。在这种情况下,下一个模块是负载平衡 (LB) 上下文,它是一个 NetScaler 原生模块。

function client.on_data(ctxt, payload)
    ns.send(ctxt.output, "DATA", {data = payload.data})
end
<!--NeedCopy-->
协议扩展 - 体系结构