数据服务实践

构建API集市,实现接口复用

为了实现接口的复用,我们需要构建 API 的集市,应用开发者可以直接在 API 集市发现已有的数据接口,直接申请该接口的 API 权限,即可访问该数据,不需要重复开发

操作流程

  1. 步骤一:创建数据源并配置网络连通性
    使用数据服务创建API前,需先将您的数据库或数据仓库添加为DataWorks数据源,以此作为数据服务API的数据来源。开发数据服务API时,数据服务将访问该数据源获取数据表的Schema信息,帮助您进一步设置请求和返回参数。调用数据服务API时,数据服务将访问该数据源来执行查询请求。
  2. 步骤二:创建API分组
    数据服务基于API网关对外提供服务。在API网关中,分组是API的管理单元,并与调用地址的域名相关联。因此,在数据服务中创建API前,需先在API网关创建API分组。
  3. 步骤三:新建业务流程
    数据服务基于业务流程实现以业务为单元的数据服务API开发,并通过业务流程对API及创建API所使用的函数等文件进行组织管理。因此,在数据服务创建API前,需先新建业务流程。
  4. 步骤四:生成API
    业务流程创建完成后,您可基于该业务流程创建相应业务的API。
  5. 步骤五:测试API
    已创建的API需进行测试运行,测试通过后,该API才可发布上线。
  6. 步骤六:发布API
    通过测试的API需发布上线,发布成功后,其他服务才可调用该API。
  7. 步骤七:调用API
    数据服务支持使用简单身份认证及加密身份认证调用数据服务API。
  8. 步骤八:查看与管理API
    发布上线的API可在服务管理页面查看,同时,数据服务支持根据业务需求进行下线、授权及查看API调用详情等管理操作。

技术实现

  • 流控策略:单位时长内API调用限制(次)
    拦截器+redis+lua脚本实现redis操作原子性
  • 访问策略:黑白名单
    拦截器
  • 报警策略:根据告警规则触发微信或者飞书告警,告警规则如:平均响应时间,错误率,慢查询
  • api授权应用
    拦截器进行token的判断;
    api授权对象是应用而不是用户,可利用AppKey和AppSecret密钥对实现,AppKey需要在请求时作为参数在Header传入,AppSecret需要用于计算请求签名;
  • 行列级权限
  • 权限管理(权限表设计)

  • 数据查询

    拦截器+jdbc查询

开源产品

详细Gitee链接freakchicken/DBApi
优点:

  • 开箱即用,不需要编程,单机模式不需要依赖其他软件(只需要java运行环境)
  • 支持单机模式、集群模式,支持windows Linux Mac
  • 支持动态创建、修改API;动态创建、修改数据源。热部署全程无感。
  • 支持API级别的访问权限控制,支持IP白名单、黑名单控制
  • 支持所有类型数据库(JDBC协议),包括mysql/sqlserver/postgreSql/hive/oracle等等
  • 支持动态sql,类似mybatis的动态sql,支持sql编辑、运行、调试
  • 丰富的插件扩展,支持缓存、数据转换、失败告警
  • 支持API配置导入导出,方便测试环境到生产环境的API迁移
  • 支持一个接口内多条SQL执行(例如分页功能),支持事务开启关闭
  • 支持复杂嵌套json传参
  • 支持接口调用记录查询,接口访问信息统计
    其主要存在以下缺陷:
  • DBAPI项目权限系统较简单,只能针对某一个接口进行权限进行管理,不能针对API组及用户进行权限进行管理
  • DBAPI在定义API过程中选择库表会进行全库全表进行扫描,过程速度慢
  • DBAPI没有API监控审计模块,不能直观看到API调用情况
  • DBAPI没有API限流,灰度发布等,集成的spring gateway功能有限
  • 其主要是通过Sql去实现API的创建,暂时不支持向导模式及注册API
  • 同时对于黑白名单的控制,仅能做到所有API设置黑白名单,不支持单个API控制黑白名单

https://gitee.com/ZhuGeZiFang/dataService
https://gitee.com/ecar_team/apimonitor

https://gitee.com/freakchicken/db-api

参考链接:

SpringBoot 中使用Redis实现分布式限流

Sentinel 流量控制限流框架详解

微服务系列:通过Kong网关给API限流

数据服务平台产品

基于开源项目动态发布Rest API的数据服务探索


觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭



wechat pay



alipay

数据服务实践
http://yuting0907.github.io/2024/06/14/数据服务实践/
作者
Echo Yu
发布于
2024年6月14日
许可协议