【组件开发实践】菜鸟天工--高可用数据服务组件

简介: 源于菜鸟数据中台,将异构数据源(数仓、关系型数据库、KV型数据库、搜索引擎)转化为高可用数据服务接口供上层应用访问,并提供数据管控、调试、限流、缓存加速、主/备切换服务。

如果你在日常工作中碰到包括但不限于以下任何关于数据服务相关问题请联系我们菜鸟(联系人:杨锋 jandon.yangf@alibaba-inc.com),我们将会为您提供专业的数据服务解决方案!


“冗长、低效的数据服务提供流程”

将 DB里的数据提供服务(HSF/HTTP)给别人访问,但是每次新增、修改一个接口都需要冗长的开发流程(建变更...改代码...发布),同时也缺少有效的动态调试工具


“数据服务高可用场景需求”

典型的如大促保障场景,需要应用具备数据源主、备链实时切换的功能。如果提供数据服务给外部系统,还需要为数据服务(接口)提供限流、缓存等降级能力


“数据复用及质量管理问题”

对于数据生产者而言,同样数据在不同业务中使用,如果各自系统维护接口逻辑,有时还需分别存储在各个业务系统DB,容易产生数据孤岛,浪费存储并且也不利于数据质量管控,对于使用者而言都需要重复构建一套数据通道来获取数据


“异构数据源重复学习和管理成本高”

数据使用场景不一样决定了数据存储的多样化(关系型DB,KV型DB,搜索引擎 等等),为了从这些数据源中获取数据,开发同学需要学习各个数据源接入API。如果存在异构数据源切换需要各自维护一套动态切换数据源的逻辑


“线上接口出错问题排查困难”

应用线上服务器少则几台十几台,多则几十台上百台,一旦数据接口出现问题则定位困难


天工发展史

天工诞生于菜鸟数据中台,起初是为了收口菜鸟数仓对外提供数据服务。随着对接的业务场景越来越多,产品的功能也经过了一个快速的迭代周期,同时为了满足菜鸟业务团队对于数据服务高质量要求,(数据服务)稳定性、可用性也逐渐成为天工后续发展的核心建设要素。概括来讲,天工从2016年至今发展经过了三大的阶段:

image.png


系统介绍

架构设计

image.png

核心组件

  • tg-client
  • 天工客户端: 分为 中心版和去中心版(富客户端)。去中心版功能基本上和中心版保持一致,不依赖天工线上服务器,关注更高可用性业务团队请选择富客户端
  • tg-web
  • 天工产品配置端 ,主要功能:数据源、表、接口配置、管理,接口诊断等
  • tg-engine
  • 天工核心执行引擎, 主要负责接口SQL的解析、语法树构建、执行优化(非性能优化部分)、数据源适配及查询下推等核心执行逻辑
  • tg-metadata
  • 天工元数据: 数据源、接口、表、单元等元信息。中心化模式下元信息存储于天工DB,去中心化方式则通过OSS进行解耦,由天工提供的富客户端定时拉去元信息到应用端


核心能力介绍

image.png

丰富的数据源支持

得益于天工设计之初考虑到数据源扩展性,对数据源进行了插件化处理,可快速、稳定(新增数据源插件对已有数据源无干扰)实现新数据源接入

目前天工支持阿里经济体大部分常用数据源: TDDL/ADB/Hologres(Postgresql)/Lindorm/ZSearch/OpenSearch/HSF等

image.png

目前天工支持大部分标准SQL语法(Mysql/Postgresql),对于一些存在特殊查询语法的数据源,比如opensearch,query查询里的filter需要和where区分开,标准SQL语义暂时无法支持,天工底层采用ANTLR自定义查询语法解析。


分钟级数据服务配置

天工分离了查询场景核心要素: 接口->逻辑表->数据源,采用统一DSL(SQL)屏蔽了底层数据源查询差异,使用户可以采用标准sql的方式获取需要的数据,极大的提高了数据服务配置效率。同时,在执行层采用动态生成mybatis配置方式实现接口配置热加载

创建一个数据服务只需要三步: 配置数据源(自助添加) -> 配置(逻辑)表 -> 配置接口

image.png


高可用性服务保障

限流

天工提供了对数据源、接口多维度限流措施

image.png

说明: 目前的限流是天工自己实现的一套算法,暂时只能进行并发度限制,不支持限制QPS


降级

对非重点场景接口直接进行服务禁用

image.png


缓存

接口级别缓存(同接口、同查询条件命中缓存)

image.png


主/备实时切换 -- 大促保障神器

得益天工逻辑表设计,数据服务运行时逻辑表-物理表替换, 可实现不修改SQL的情况下一键切换查询表

image.png


去中心化设计

核心设计理念: 引擎执行逻辑下推、引擎插件按需加载,OSS元数据解耦

优势: 执行逻辑完全下沉到客户端,减少了对中心服务器的依赖,避免因中心服务器波动引起服务的波动,极大的提高了数据服务的稳定性,建议后续接入方尽量采用富客户端模式

image.png


全链路监控 -- 异常排查神器

数据端到端访问链路监控,让线上(数据服务)问题得到快速定位

image.png

image.png


天工“出弹”计划

image.png

场景一是作为数字供应链控制塔(DSCT)独立可插拔的数据服务底座交付出弹, 目前已初步完成弹外方案验证: 产品端独立部署+客户端去中心化。同时我们也在积极推进和阿里云云巧平台合作,将天工作为独立的数据服务组件上架到阿里云资产市场拓展更多场景

联系我们:菜鸟技术专家 杨锋(jandon.yangf@alibaba-inc.com)

相关文章
|
存储 安全 编译器
【Qt 底层机制之信号和槽 】深入探究Qt信号和槽背后的原理
【Qt 底层机制之信号和槽 】深入探究Qt信号和槽背后的原理
4112 4
|
SQL Oracle 关系型数据库
sqoop的导入导出以及where条件过滤数据导出
sqoop的导入导出以及where条件过滤数据导出
|
JSON 自然语言处理 数据库
数据库-ElasticSearch入门(索引、文档、查询)
数据库-ElasticSearch入门(索引、文档、查询)
900 0
|
存储 JavaScript 前端开发
架构-单一代码库-monorepo-pnpm-workspace:基本使用
架构-单一代码库-monorepo-pnpm-workspace:基本使用
1850 0
|
4月前
|
监控 安全 数据挖掘
面试官问:Agent 怎么评测?
Agent评测不能只看准确率!它是多步骤执行系统,需构建覆盖任务完成率、过程质量、工具调用、成本、延迟、稳定性、安全权限及用户反馈的全链路评估体系,并通过离线冒烟/回归测试、在线真实流量监控与失败样本回流,实现持续迭代闭环。
|
7月前
|
人工智能 机器人 网络安全
OpenClaw 多机器人阿里云+本地部署实战教程,+Telegram多Gateway+多Bot架构搭建分工明确 AI 小团队
把OpenClaw当作单一聊天框使用,迟早会陷入“上下文污染、模型切换频繁、任务互相抢占”的困境——让写文案的Agent聊技术,让查资讯的Agent写代码,最后变成“万能但不靠谱”的杂物堆。真正高效的用法是将其拆分为“专业小队”:用多个Telegram Bot作为入口,搭配多OpenClaw Gateway隔离运行,每个Bot对应一个专项Agent,私聊不同Bot即可切换“专业助手”,无需手动输入命令切换身份。
1555 2
|
缓存 前端开发 数据可视化
Webpack Bundle Analyzer:深入分析与优化你的包
Webpack Bundle Analyzer是一款可视化工具,帮助分析Webpack构建结果,找出占用空间较大的模块以便优化。首先需安装Webpack和Webpack Bundle Analyzer,接着在`webpack.config.js`中配置插件。运行Webpack后,会在`dist`目录生成`report.html`,展示交互式图表分析包大小分布。为优化可采用代码分割、Tree Shaking、压缩插件、加载器优化、模块懒加载、代码预热、提取公共库、使用CDN、图片优化、利用缓存、避免重复模块、使用Source Maps、优化字体和图标、避免全局样式污染以及优化HTML输出等策略。
986 3
|
开发者 Python
新手困扰?该如何了解github的热门趋势和star排行?
新手困扰?该如何了解github的热门趋势和star排行?
2669 0
|
小程序 JavaScript
微信小程序中的页面跳转(通过点击按钮、调用方法的形式)
这篇文章讲解了微信小程序中页面跳转的方法,包括使用按钮点击事件和调用方法实现跳转,以及推荐使用`this.pageRouter.navigateTo`代替`wx.navigateTo`的方式。
微信小程序中的页面跳转(通过点击按钮、调用方法的形式)
|
编解码 网络协议 安全
什么是猫池
猫池(外文名:ModemPOOL)就是将相当数量的Modem使用特殊的拨号请求接入设备连接在一起,可以同时接受多个用户拨号连接的设备。无线猫池设备广泛应用于大量具有多用户远程联网需求的单位或需要向从多用户提供电话拨号联网服务的单位。如邮电局、税务局、海关、银行、证券商、各类交易所、期货经纪公司、工商局、各类信息呼叫中心等。我公司的提供的猫池主要用于IP电话通讯使用,不是市面上的养卡猫池,这里我们再对猫池详细说明及功能使用:
6852 0