可扩展性概述

扩展 Envoy 的一种方式是实现不同的过滤器,处理或增强请求。这些过滤器可以生成统计数据,翻译协议,修改请求,等等。

HTTP 过滤器就是一个例子,比如外部的 authz 过滤器和其他内置于 Envoy 二进制的过滤器。

此外,我们还可以编写我们的过滤器,让 Envoy 动态地加载和运行。我们可以通过正确的顺序声明来决定我们要在过滤器链中的哪个位置运行过滤器。

我们有几个选择来扩展 Envoy。默认情况下,Envoy 过滤器是用 C++ 编写的。但是,我们可以用 Lua 脚本编写,或者使用 WebAssembly(WASM)来开发其他编程语言的 Envoy 过滤器。

请注意,与 C++ 过滤器相比,Lua 和 Wasm 过滤器的 API 是有限的。

1. 原生 C++ API

第一个选择是编写原生 C++ 过滤器,然后将其与 Envoy 打包。这就需要我们重新编译 Envoy,并维护我们的版本。如果我们试图解决复杂或高性能的用例,采取这种方式是有意义的。

2. Lua 过滤器

第二个选择是使用 Lua 脚本。在 Envoy 中有一个 HTTP 过滤器,允许我们定义一个 Lua 脚本,无论是内联还是外部文件,并在请求和响应流程中执行。

3. Wasm 过滤器

最后一个选项是基于 Wasm 的过滤器。我们用这个选项把过滤器写成一个单独的 Wasm 模块,Envoy 在运行时动态加载它。

在接下来的模块中,我们将学习更多关于 Lua 和 Wasm 过滤器的知识。

results matching ""

    No results matching ""