查询接口返参配置化组件设计(适用定制信息查询)

  • 1、组件引入的业务背景

系统存储的信息需要被很多系统的不同业务场景调用,外围的业务场景需要的返参信息不完全一样,针对业务模块等开发了一些接口,这些接口返回的参数较多,外围根据需要获取需要的返参字段;同时有些外围的返参一些要求或者调用量很大,对性能要求较高的,这部分场景还需要定制专门的接口服务;最终导致需要维护的接口梳理较多,维护成本较高(每个接口都需要维护接口文档、概设详设文档、以及针对每个接口的监控告警等配置…)。

针对上面的背景提出了返参配置化的解决思路,解决的问题

  1. 灵活定制返参字段,减少非必要信息的露出,保护用户隐私;
  2. 减少Redis查询和降低 Redis内存占用,合理使用资源;
  3. 减少字段返回,提升接口查询性能;
  4. 针对场景调用配置化,减少了设计开发工作量,快速交付业务;
  5. 查询提供标准的接口,支持标准组件化能力输出。
  • 2、设计思路

2.1、整体的思路,根据场景编码和场景密钥定制返回字段,基本的流程图如下:

2.2、模型设计

外部场景配置表:定义外部场景编码+密钥与内部场景编码之间的映射关系。外围调用方系统需要传入,外部系统号用于记录和异常日志打印,便于快速定位问题,

Column Name

Simple Name

scene_code

外部场景编码

app_code

外部系统号

scene_secret

场景密钥

inner_code

内部编码

scene_desc

使用场景说明

valid_flag

场景有效标识1:有效 0:无效

内部场景返参字段配置表:定义内部场景编码对应的返参字段列表,使用的是field_key外键,字段命名由返参字段取值规则配置表定义。

Column Name

Simple Name

inner_code

内部场景编码

field_key

返参字段对应的key

返参字段取值规则配置表:定义字段的取值规则

Column Name

Simple Name

field_key

返参字段对应的key

field_name

返参英文名称

field_name_desc

返参中文名称

field_name_detail_desc

返参详细说明

field_type

返参类型

field_val_expression

返参取值表达式

field_val_type

返参表达式类型

data_bean

取值bean

data_bean_param

取值bean中的参数

data_result_condition

当前结果取值的过滤条件

2.3、核心字段设计思路

场景编码+场景秘钥:外围系统调用接口,需要传入场景编码和秘钥,避免系统场景乱用导致不好管理。

返参表达式类型:支持多种字段解析,如:1:SpEL表达式;2:函数表达式组合;3: 自定义组合(对象/列表);4:java类

返参表达式类型:
   1:表达式:单值的简单表达示,例:${userName}
   2:
函数表达式组合:单值的函数表达示,函数必须用@开头,例:@Desen.mobileNo(${mobileNo})@Date(${verifyTs},'yyyy-MM-dd HH:mm:ss') @xxUtil.xx(${xx})
   3:对象函数组合:此类型对应的表达示必须为OBJLISTLIST_STRING开头的,可以自定义扩展。
      OBJ 语法:返回一个对象,对象有多个参数,简化配置默认使用参数作为字段名

例:OBJ| name =${ name }, mobileNo =@Desen.mobileNo (${mobileNo })----简化配置:OBJ|${name},@Desen.mobileNo(${mobileNo })

      List语法:返回对象列表,简化配置处理相同

LIST| name =${ name }---简化配置:LIST|${ name }

LIST_STRING语法:返回列表,内部是单值类型String
      LIST_STRING|${
hobby }

    4: 自定义java

2.4、bean对象解析流程图<核心模块>

 

  • 三、接口流控设计:

  1. 接口支持根据业务场景进行单台应用的QPS流控(分布式流控),避免某个业务场景调用量大导致服务器压力上升,而影响其他核心业务场景的查询性能。流控使用了服务端“业务维度的分布式流控组件设计”
  2. 接口支持到单机房的全局流控配置。

全局流控:单机房有200组jboss,每台应用每秒接收100个请求,单机房全局流控阈值2W超过200*100=2W个请求会被拒绝(全局QPS使用redis汇总,每台应用有个Step

步长,实际未到2W就可能被拒绝)。

3、RPC接口也支持到单台应用的QPS流控与并发流控

QPS流控:某服务每秒接收100(QPS阈值)个请求,超过100个请求会被拒绝。

并发流控:某服务同时接收100(并发阈值)个请求,超过100个请求会被拒绝。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值