-
Notifications
You must be signed in to change notification settings - Fork 73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Discussion] About add a customized match-action t for RouteRuleContext in RouterRule | 关于在 RouterRule 的 RouteRuleContext 中添加自定义流量匹配执行器的参数 #30
Comments
非社区官方人员,表达一下自己的看法。。 你的想法是流量路由规则在额外的工作负载中进行计算吧,我理解这样做会很影响请求的性能,尤其是在高并发的情况下,且自定义路由工作负载的稳定性会成为一个风险点。 我认为复杂的逻辑不应该放在路由规则这边,如果是复杂的打标逻辑,业务可以自己进行计算并在请求发起时携带自定义header,主动配合路由规则。 最后,在实际流量治理中,我是没遇到过特别复杂的路由规则,不知你遇到的复杂场景具体是什么样的场景,可以分享下,嘿嘿 |
关于匹配规则,目前我这边使用到的几种模式
其他能想到的可以扩展的模式的话,可以考虑比较运算,比如
|
(同非官方 😄 )
|
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
我的想法是这样的,社区或许可以内置一些常见的报文解析能力例如JSON、XML,同时也具备可扩展的能力。 http:
- name: my-traffic-router-http-rule
rule:
match:
body:
- type: json #报文取值方式,可扩展
field: user.idcard #取值表达式,实现通常可以是jsonpath、xpath
exact: 12345
- type: xml
field: user.idcard
exact: 12345
- type: custom
field: user.idcard
exact: 12345 现状:一个系统中的报文格式通常是比较固定的,而业务上将路由要素放在报文中的特定位置,在header、query、method中是没有什么有价值信息可作为路由要素的,需要业务开发者将报文解析并提取相关路由要素传递给路由组件。 |
(同非官方) 不建议在路由里面对报文进行解析,这对性能会产生比较明显的损耗。不过基于元数据部分(HTTP Header 等)我觉得是可以的。前面 @DC-ET 提到的一些字符串匹配模式都有必要,不过算数运算会涉及到把字符串数据进行类型转换,可能不太合适。 |
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
I'm not official member of community, here is my opinion.
(English version TBD...)
在 PR #29 中,
流量路由规范
中通过 RouterRule 定义了多种协议的流量路由规则,每一种协议的路由规则
中定义了**RequestMatch
来提供给用户进行流量规则的定义。而我发现,在HttpRequestMatch
和RpcRequestMatch
中定义的几个内置参数,都是简单规则,都是可以通过我们手动定义的,如果遇到复杂的场景,无法提前预知参数或者无法手动定义复杂的规则的话,目前的设计就很难满足了。因此,我提出一个想法:就是在
**RouteRuleContext
中,添加一个自定义匹配行为参数(暂命名为action),与match
一样结果以true
或false
来表示匹配成功与失败,但与match
不同的是,action
配置的是流量匹配执行器的工作负载。通过这种方式,即使在
opensergo
中内置的流量匹配规则无法满足用户的需求的情况下,用户可自定义action
并实现action
对应的WorkLoad
来满足自己复杂的路由规则。match
,则首先满足match
action
,则在满足match
的前提下,同时满足action
下面以
http
协议为例:StringMatch
的vars
)The text was updated successfully, but these errors were encountered: