Hyperscan
Hyperscan 是一个高性能的多个正则表达式匹配库,它使用混合自动机技术来允许同时匹配大量正则表达式,以及跨数据流匹配正则表达式。Hyperscan 支持由 PCRE 使用的 模式语法。
Hyperscan 仅在 contrib 镜像 中有效。
Hyperscan 可用作 通用匹配 的匹配器,或在全局范围内启用为正则表达式引擎。
作为通用匹配的匹配器
通用匹配已在 Envoy 中的几个组件和扩展中实现,包括 过滤器链匹配器、路由匹配器 和 RBAC 匹配器。Hyperscan 匹配器可以在通用匹配器中用作以下结构中的自定义匹配器
1 custom_match:
2 name: hyperscan
3 typed_config:
4 "@type": type.googleapis.com/envoy.extensions.matching.input_matchers.hyperscan.v3alpha.Hyperscan
5 regexes:
6 - regex: allowed.*path
Hyperscan 匹配器中正则表达式匹配的行为可以配置,请参考 API 参考。
Hyperscan 匹配器还支持多模式匹配,允许同时报告对多个模式的匹配。多模式匹配可以在以下结构中打开
1 custom_match:
2 name: hyperscan
3 typed_config:
4 "@type": type.googleapis.com/envoy.extensions.matching.input_matchers.hyperscan.v3alpha.Hyperscan
5 # The following multiple patterns match input including allowed.*path and excluding
6 # den(y|ied). E.g., the path /allowed/path will be matched, while the path
7 # /allowed/denied/path will not be matched.
8 regexes:
9 - regex: allowed.*path
10 id: 1
11 quiet: true
12 - regex: den(y|ied)
13 id: 2
14 quiet: true
15 - regex: 1 & !2
16 combination: true
作为正则表达式引擎
Hyperscan 正则表达式引擎的行为与默认的正则表达式引擎 Google RE2 相似,例如它默认情况下打开 UTF-8 支持。Hyperscan 正则表达式引擎可以使用以下配置轻松配置。
1default_regex_engine:
2 name: envoy.regex_engines.hyperscan
3 typed_config:
4 "@type": type.googleapis.com/envoy.extensions.regex_engines.hyperscan.v3alpha.Hyperscan