higress
higress copied to clipboard
higress 支持grpc动态获取pb信息
Why do you need it?
higress 作为南北向流量入口,接收 http 请求,内部服务采用grpc通信,因此需要 http 转 grpc。同时由于接口pb信息存在变更的情况,需要实时或定时更新pb信息,用来支持接口变更后的调用。
How could it be?
1、支持 http 请求转 grpc 2、内部系统依赖grpc调用,该协议调用时需要对应的pb信息,而接口存在增删以及更新的可能,变更后,我们需要及时更新。我们希望接口pb信息变更后,支持动态的更新新版的pb信息,同时不会对请求造成任何损失,更新的时效性,希望可以是分钟级的。 3、支持多个泳道存在不同pb的情况,即调用同一个接口的多个请求,根据特定规则,可能会调用到不同泳道的接口中,并且可以适配不同泳道间,pb协议的差异
@PokerBySwq 是http to grpc,还是grpc to grpc
@johnlanni http to grpc、grpc to http、http to http 主要是这三个 grpc to grpc 优先级不高,不过也是有场景的,请求目前是两种类型 GET & POST。现有的网关 http to grpc 之前,有一层参数映射,API 入参为 http 请求参数,服务入参为下游 GRPC 接口参数,POST 请求的入参,可以有层级结构,GET 请求的入参只有一层
@PokerBySwq 可以给一下你们的example,我们看下我们如何设计标准的方案兼容你们的场景
@johnlanni 类似阿里云的这个入参映射模式:https://help.aliyun.com/zh/api-gateway/user-guide/parameter-mapping-and-verification-rules?spm=a2c4g.11186623.0.0.2dc8360bJgDlFf#section-w2r-pfd-0mg API入参 与 下游服务入参要提前定义好,并且对应起映射关系,映射后的结果是一个有层级关系的对象,可以与 pb 对应起来
@PokerBySwq 能否直接提供下可以用作功能测试的case
参数映射功能我们已经有了一个现成的插件:https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/transformer
未来会在这个插件基础上实现可以将url参数/header等映射到json格式的body中,看是否满足你的需求
参数映射功能我们已经有了一个现成的插件:https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/transformer
未来会在这个插件基础上实现可以将url参数/header等映射到json格式的body中,看是否满足你的需求
这个能够覆盖我们绝大多数场景,后续增强,我们也可以一起搞