GRPC如何实现公共参数与业务参数分离传递

什么是公共参数

公共请求参数是指每个接口都需要传递,但不一定使用到,国信Zebra实现基本原则就是业务参数和公共参数分离。

为什么要公共参数,为什么公共参数与业务参数需要分离

1、在券商交易中,每笔委托都需要留痕,以便监管机构排查,留痕字段包括手机号、设备号、IP等信息,所以需要单独放到公共参数中;

2、大部分业务接口都不需要公共参数这些字段,如果将这些字段都加入到业务参数中就容易导致变量名冲突,影响业务实际功能;

3、调用链分析相关数据需要通过公共参数向后传递,方便定位问题;

4、ACL相关信息需要放到公共参数中,不能与业务参数混淆;

GRPC如何实现公共参数与业务参数分离

其实GRPC 中的header就可以用作公共参数与业务参数分离。

将业务参数的内容放置到PB协议中,将公共参数放置到到grpc header中,然后进行远程传输。

如何做?

具体实现步骤如下:

1、使用grpc header进行公共参数远程传输;

2、本地收到header数据后,将header数据取出,使用ThreadLocal进行公共参数的上下文保存;

3、header与ThreadLocal的相互转化使用GRPC的Interceptor进行;

这样就能实现公共参数和业务参数的分离,

问题

但是如果使用spring线程池ThreadPoolTaskExecutor或者使用Hystrix熔断器,以上实现就会出现上下文丢失问题,

处理起来就比较复杂了,下个章节将详细阐述如何处理,敬请期待!

关注公众获得更多内容


GRPC如何实现公共参数与业务参数分离传递_第1张图片


GRPC如何实现公共参数与业务参数分离传递_第2张图片
Zebra

你可能感兴趣的:(GRPC如何实现公共参数与业务参数分离传递)