higress icon indicating copy to clipboard operation
higress copied to clipboard

higress 支持grpc动态获取pb信息

Open PokerBySwq opened this issue 1 year ago • 7 comments

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 avatar Jan 16 '24 12:01 PokerBySwq

@PokerBySwq 是http to grpc,还是grpc to grpc

johnlanni avatar Jan 16 '24 12:01 johnlanni

@johnlanni http to grpc、grpc to http、http to http 主要是这三个 grpc to grpc 优先级不高,不过也是有场景的,请求目前是两种类型 GET & POST。现有的网关 http to grpc 之前,有一层参数映射,API 入参为 http 请求参数,服务入参为下游 GRPC 接口参数,POST 请求的入参,可以有层级结构,GET 请求的入参只有一层

PokerBySwq avatar Jan 17 '24 02:01 PokerBySwq

@PokerBySwq 可以给一下你们的example,我们看下我们如何设计标准的方案兼容你们的场景

johnlanni avatar Jan 17 '24 05:01 johnlanni

@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 avatar Jan 18 '24 06:01 PokerBySwq

@PokerBySwq 能否直接提供下可以用作功能测试的case

johnlanni avatar Jan 18 '24 06:01 johnlanni

参数映射功能我们已经有了一个现成的插件:https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/transformer

未来会在这个插件基础上实现可以将url参数/header等映射到json格式的body中,看是否满足你的需求

johnlanni avatar Jan 18 '24 06:01 johnlanni

参数映射功能我们已经有了一个现成的插件:https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/transformer

未来会在这个插件基础上实现可以将url参数/header等映射到json格式的body中,看是否满足你的需求

这个能够覆盖我们绝大多数场景,后续增强,我们也可以一起搞

PokerBySwq avatar Jan 18 '24 07:01 PokerBySwq