ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

数据中台与数据服务:一体两面的关系与建设实践

数据中台与数据服务:一体两面的关系与建设实践 数据服务与数据中台的关系这话题说起来有点“老生常谈”但我发现身边真正把它想明白的人并不多。很多人以为数据中台就是搞一套大数据平台数据服务就是写一堆API接口还有人觉得中台是“战略”服务是“落地”两者只是上下游关系。实际做下来根本不是这么回事。这篇文章我会结合自己这些年在数据团队里摸爬滚打的经验把两个概念彻底掰开揉碎再聊清楚它们之间到底是什么关系。内容会涉及中台建设中最容易踩坑的数据迁移、异构系统整合也会聊聊Java开源数据中台方案的选型思路。适不适合你往下看如果你正在做数据中台建设或者平常跟数据服务打交道的研发、数据工程师这篇文章可以直接当参考手册用如果你是刚接触数据领域也能通过这篇文章建立起一个不被忽悠的整体认知框架。1. 先弄明白两个概念别等建完才发现理解是错的1.1 数据服务到底是什么数据服务这块我见过最朴素的理解是“数据接口”。业务方要一个用户画像数据就写一个Controller查数据库返回JSON。要一百个接口就写一百个Controller。短期没问题长期就是灾难。接口之间的口径不一致同一个用户等级三个接口三个标准出了问题互相扯皮。数据服务要解决的核心问题不是“怎么把数据查出来”而是“怎么把数据变成一个可以被统一管理、统一鉴权、统一监控、统一复用的能力”。它不同于传统接口的地方在于几个关键点第一数据服务有明确的业务语义。比如“用户质量评分服务”背后是什么规则、哪套模型、数据源在哪、口径是什么都是明确定义的。第二数据服务是可编排、可组合的。一个复杂的服务可以由多个原子服务组合而成而不是每次都从零开始查一遍。第三数据服务是有治理属性的。调用方是谁、查询量多大、QPS多高、数据是否敏感、是否需要脱敏这些都能在服务层管控起来。所以不要把数据服务理解成一个技术概念它更多是一个管理概念加技术载体的结合。1.2 数据中台又是什么数据中台这个概念已经被说得快烂掉了但大部分定义都没说到点子上。数据中台不是一套软件也不是一个平台它更像是一个“把数据变成持续可用资产”的组织能力加技术体系。它有两个核心判断标准一是企业能不能把各业务线的数据沉淀成可以被复用的数据资产二是这些资产能不能通过统一的数据服务对外输出支撑业务创新。从这个角度看数据中台和传统数据仓库、大数据平台的本质区别就出来了。传统数仓是以报表为中心围绕“怎么把数算出来”数据中台是以服务为中心围绕“怎么把数用起来”。你数仓没建好中台肯定不稳但数仓建好了中台也未必成立。因为中台更强调的是对业务的响应速度、对数据的复用能力、对服务的治理水平。很多人把中台建设看成一次技术升级买一套产品、搭一个平台就觉得中台建成了。实际我用一句话概括数据中台是一套“从数据到服务”的流水线体系而流水线的末端必须得是数据服务。没有数据服务的中台跟一个死仓库没什么区别。1.3 二者关系的粗画像如果非要打比方数据中台是“中央厨房”数据服务是“一道道端上桌的菜”。中央厨房的价值不在它屯了多少食材也不在它有多少口锅而在于能不能高效地把食材加工成稳定可口的菜品送到食客面前。对应到企业里食材就是各个业务系统的原始数据中央厨房的加工能力就是数据开发、数据建模、数据质量保障体系菜就是数据服务。这个比喻能解释很多现实问题。很多企业厨房修得特别豪华食材屯了一堆但菜始终上不去。为什么因为加工流程不通或者厨师各自为政或者菜品没有标准化最终业务方饿了只能自己去翻冰箱数据部门的存在感越来越低。反过来如果只顾着炒菜不管供应链、不建标准那菜的质量和稳定性也无法保障做一道菜就要重新备一次料成本高得吓人。理解了这层关系下面很多细节就顺理成章了。2. 数据中台与数据服务的三层深度关系2.1 数据服务是中台能力的“表达层”中台到底建成了没有不看你有多少张表、多少套调度任务、多少TB数据而看你能不能快速给业务提供一个健壮的数据服务。数据服务就是中台能力的对外表达也是业务感知中台价值的唯一触点。从这个位置往回想问题就清楚了如果数据服务做得不好要么是服务本身质量不行要么是中台下层某个环节出问题了。数据模型不合理服务性能上不去数据质量差服务口径对不上元数据管理混乱服务根本不知道去哪找数据。所以数据服务既是中台的前台也是中台的“体检报告”。我在推进数据服务化的时候特别强调一点每个数据服务都应该是可追溯的。调用方出现问题一线研发能顺着服务定义找到数据来源、加工链路、质量校验规则。如果数据服务做不到这一点就说明中台的资产管理和血缘管理都还没到位。2.2 数据中台是数据服务的“供给底座”数据服务的供给靠的不是一个数据库连接串而是整条数据生产链路。从源端采集到数据接入从数据清洗到数据模型构建从指标定义到数据质量校验再到权限管控和生命周期管理这些底层能力要组成了数据服务的供给体系。举个具体的例子。一个“订单实时金额汇总”的数据服务要稳定运行背后需要实时计算引擎有足够的容错能力需要指标口径有唯一的定义需要数据源变更时有感知机制需要下游消费者有熔断降级方案。这些都不是写一个API能解决的全部依赖中台底座的能力沉淀。所以数据中台和数据服务不是简单的上下游关系而是“底座和上层建筑”的关系。中台底座建设的目的不是要建一个高可用的大数据集群给别人看而是要让最终的数据服务又快又稳地交付出去。2.3 数据服务的反馈体系驱动中台演进中台的演进方向不能靠技术部门关起门来拍脑袋而要由数据服务在实际业务运行中产生的反馈来驱动。服务被调用了多少次、哪些模型被频繁查询、哪些指标一直对不齐、哪些数据经常不被信任这些都是中台迭代的重要信号。有几类反馈特别值得关注使用热度反馈同一份数据被多个服务引用说明它值得被当成核心资产重点治理应该花力气把数据质量做到最高甚至主动做成公共服务。质量问题反馈某个服务总是被投诉数据不准顺藤摸瓜往往能挖出模型设计缺陷或上游数据老二义的问题。需求覆盖反馈业务方频繁提相似的数据需求说明现有服务化能力没有覆盖到位要审视是不是缺了一个中间层的数据服务。性能瓶颈反馈某个热门数据服务经常超时说明底层模型的分区策略、存储选型已经不太匹配当前场景了。数据服务的反馈是看得见摸得着的它比抽象的“数据资产热度分析”更直接、更真实。所以做中台不能做成“自我感觉良好”而要让数据服务成为中台的传感器网络。2.4 一个表格讲清二者的关键差异为了避免概念混淆我用一张表把它们的差异和联系梳理一下维度数据服务数据中台核心目标让数据能快速、安全、稳定地被业务消费让数据成为可复用、可治理的企业资产关注粒度单个接口、API、数据集体系、平台、全域数据链路稳定性要求高直接影响业务运行中高更多体现为间接影响变化频率变更频繁需要灰度、版本管理相对稳定以建标准和搭能力为主责任主体服务Owner、接口负责人中台治理委员会、数据平台团队对外呈现业务可直接调用对业务是半透明的失败后果立即被感知业务告警潜在放大的坏账中长期拖垮效率这张表我建议团队内部培训时直接拿来用能少很多概念层面的争论。3. 在关系之上看建设数据迁移与异构整合方案3.1 为什么中台建设绕不开数据迁移前面把概念和关系理清了现在落到实操层面。中台建设最苦最累、最容易被低估的就是数据迁移。我不是指那种把数据从Oracle搬到Hadoop的一次性搬迁而是一个持续存在的场景。业务系统是持续演进的数据库在变、接口结构在变、业务规则也在变中台底座的资产要跟着业务持续调整数据迁移就永远存在。很多团队把数据迁移低估成一个ETL问题这是大坑。中台语境下的数据迁移要考虑的不只是数据搬家而是搬家之后的血缘、质量、权限、服务依赖全部不能断。最痛的就是异构系统整合。比如一个集团下面不同子公司一家用Oracle一家用MySQL一家还用了MongoDB三家的用户表结构、编码规则、主键生成策略都不一样。你想做统一会员中台数据能不能合在一起直接决定项目成败。3.2 迁移前必须先做两件事资产盘点与血缘梳理迁移前最忌讳的就是“先搬了再说”。我见过太多团队迁移过程中才发现某个字段的含义跟预想的不一样、某个表的重要程度远超预期、某些下游调度作业已经悄悄依赖了一张“废弃”表。等发现问题的时候回滚成本已经高得难以接受了。所以第一步一定是资产盘点。哪些数据要迁、哪些不用迁、哪些根本不重要可以趁机舍弃必须列一个清单。清单里除了数据源、表名、数据量之外还要标注数据Owner、业务重要性、安全等级、下游依赖数量。这个盘点不仅是技术动作更是业务对齐动作因为很多数据字段的语义只有业务侧说得清楚。第二步就是血缘梳理。数据从源端进来经过哪几层加工生成了哪些指标供了哪些服务这些依赖关系必须在中台里建立起来。血缘清晰的好处很多迁移对象影响面一目了然、数据出问题可以快速回溯、对模型做优化时敢下手因为知道“改了以后会影响谁”。血缘这块我们当时也走过弯路。手工维护血缘关系完全不可行必须靠工具自动抓取SQL和调度依赖。开源领域可以用Apache Atlas来做元数据血缘虽然部署有点重但至少能解决“血缘从无到有”的问题。等团队成熟了再逐步自研把血缘能力嵌到自己的数据开发平台里面去。3.3 迁移方案选型离线全量、增量同步、还是实时同步不同场景要采取不同的迁移策略好的方案通常是混合使用。离线全量迁移适合存量数据大、变更频率低、允许夜间窗口跑批的场景。实现思路简单可靠性高。缺点就是实时性差源端和目标端会有时间差。增量同步适合数据持续变化、业务对当日数据可直接用的场景。业界主流方案是基于binlog或redo log的解析同步。比如用Canal解析MySQL的binlog写到消息队列下游再做流式计算或者入湖入仓。这样既能保证时效性又不影响源库性能。实时同步适合对时效要求极高的场景比如实时风控、实时营销。常见手段是直接监听业务系统的数据库日志或者改造业务系统通过消息中间件主动推送变更事件。改造的代价高但如果业务确实需要这一步就必须走。这块有个很关键的经验不要一开始就把所有数据都做成实时同步。实时链路的稳定性、成本、运维复杂度都远高于离线链路。正确的做法是“按需分级”只对高价值、高时效需求的数据走实时其他数据老老实实离线批处理。3.4 异构系统整合的三座大山统一ID、统一编码、统一时区异构系统数据源表面上是技术多样性的问题深层其实是业务语义不统一的问题。梳理下来90%的冲突集中在三个点上。统一ID。不同子系统的用户ID、订单ID、商品ID各有一套生成规则合到一起之后必须建立映射关系。大型公司通常有企业级的ID Mapping服务来处理这个问题。如果没有这个条件退而求其次的做法就是建一张宽表把各个源的ID都映射到一个全局ID上并且保留转换日志方便随时回溯。统一编码。同一个枚举值在不同系统里完全不同。比如用户性别A系统存0和1B系统存M和FC系统存男和女。这些看起来的小事落到数据服务层面就是灾难。一个统一指标的值底层编码五花八门业务方用起来完全不敢信。解决思路是建立企业级码表管理机制数据接入环节就把各源编码规范化成标准编码。统一时区。这个听着基础但坑最深。跨国业务场景下一个订单的“创建时间”到底按北京时间存还是按当地时间存用户活跃分析到底按用户本地时区切天还是按服务器时区切天如果不在数据接入层做强制规范后面的统计一定各种对不齐。我的建议是中台内部一律用UTC存储展示层再按业务要求转时区。这个规范必须写进数据开发手册里强制执行。3.5 数据迁移的“准入准出”机制迁移不是搬完就算完必须要有明确的准入准出机制。准出条件源表和目标表的结构映射已经确认、转换逻辑已经评审、数据血缘已经挂载、下游依赖方已经通知。准入条件数据质量校验通过、核心指标对比一致、性能验证达标、安全权限配置到位。实际操作中数据质量校验是最费精力但最有价值的环节。我们一般会做四件事总量比对源表和目标表的行数是否一致或者误差是否在可接受范围内。字段完整性比对核心非空字段是否有异常空值。抽样内容比对随机抽一批数据逐字段对比源表和目标表的值。指标双层校验通过不同口径加工出来的结果性指标要有对照关系确保下游服务拿到的数不是“看起来对实际飘”。为了做这些校验我们还会专门建一个质量校验调度任务把校验逻辑配置化而不是每次迁移都临时写脚本。迁移任务跑完后自动触发校验校验通过才自动发版。4. Java开源数据中台方案选型与落地经验4.1 为什么Java在中台领域依然是中坚力量数据中台建设过程中那些真正核心的平台类系统比如数据开发平台、元数据系统、调度中心、数据服务网关大部分团队还是选择Java技术栈。原因很现实第一大数据生态中大量组件比如Hadoop、Flink、Kafka的周边生态跟Java的集成度天然最好第二Java的稳定性、内存管理成熟度在长时间运行的服务端应用中可信度更高第三团队招人容易这就不多解释了。Go和Python在中台某些环节也很好用比如写实时消费处理或者数据科学应用。但如果要搭一整套中台平台框架涉及大量后台管理、权限控制、任务调度、插件体系的开发Java的综合成本依然是最低的。4.2 值得关注的几类Java开源中台项目说到Java开源数据中台我要先提醒一件事别指望有一个开源项目装上去就中台大成这是很多团队的幻想。开源项目能解决的是某些领域的问题组合得当可以帮你省几个月开发时间但不代表中台的组织、规范、运营问题也能被开源顺手解决。从实际落地角度我梳理几类值得关注的Java开源方向一站式数据中台框架有一些开源项目试图把数据开发、任务调度、数据服务、数据质量融为一体。这类项目上手快适合中小团队快速搭建中台雏形但涉及深度定制时可能受制于框架的边界。核心思路是“先跑通再逐步替换”不要一上来就全盘依赖同时要评估社区活跃度、版本迭代速度、是否适合你们的技术栈。调度与工作流系统数据中台的调度系统是整个加工链路的关键支撑用Apache DolphinScheduler这类开源项目做底层在Java技术栈里算是比较省心的选择。它有可视化DAG编排、失败重试、告警和补数能力基本能满足中台建设对调度系统的要求。团队如果连调度系统都要纯自研说实话不太明智。元数据与血缘管理Apache Atlas是Java生态里比较成熟的元数据治理方案虽然部署和维护不算轻量但对于要做系统血缘、数据分类和权限同步的团队来说它依然是值得优先考虑的开源方案。要做好心理准备Atlas的上手曲线较为陡峭需要花时间做二次开发。数据服务平台与API网关如果不想从零写一个数据服务网关可以基于Spring Cloud Gateway或者Apache APISIX做二次改造。核心要能力是动态路由、限流熔断、权限校验、调用审计。自己做网关时候最容易忽略的是扩展点的设计预留好插件机制比硬编码功能重要得多。4.3 我建议的自研数据服务网关设计思路自研数据服务网关是中台建设里技术上最有价值的部分。业务的一条条数据需求最终都能通过这个网关被标准化地消费而不是弯弯绕绕地连数据库。网关的核心模块注册中心所有数据服务在网关侧注册声明服务编码、版本、请求参数、响应结构、资源归属、鉴权级别。鉴权中心AppKey管理、Token校验、数据权限控制。路由引擎根据服务编码将请求路由到具体执行集群支持按版本灰度。熔断限流对热点服务做细粒度的限流策略避免一个服务把底层资源打爆。审计日志记录每次调用包括调用方、参数摘要、返回状态、耗时。下面这个代码片段是一个简单的Spring Boot数据服务示例RestController RequestMapping(/data/v1) public class UserQualityController { Autowired private UserQualityService userQualityService; GetMapping(/userQualityScore) DataService(code userQualityScore, version 1.0, desc 用户质量评分查询) public ResultUserQualityInfo getUserQualityScore(RequestParam String userId) { // 网关会基于注解自动生成服务注册信息并拦截做鉴权与限流 return userQualityService.queryQualityScore(userId); } }这里核心逻辑是服务代码通过注解暴露元信息网关扫描后自动注册下游调用方不需要知道底层数据模型长什么样只需要拿到服务定义文档即可。4.4 中台建设阶段如何选择开源与自研的边界这可能是中台建设里最容易被忽视的问题。很多团队一开始雄心勃勃所有东西都自研研发资源直接被拖垮中台项目最后不了了之。也有一些团队过度依赖商业套件或者开源框架最后发现要么扩展不了要么每个模块都整合得特别痛苦。我的个人建议是三阶段走阶段一快速搭台多采用成熟开源组件比如上面提到的那些。目标是先把数据接入、加工、服务输出的链路跑通让业务方感受到中台带来的便利。阶段二核心固化在跑通的基础上把最影响效率和体验的环节做深度沉淀。比如统一开发规范、统一权限模型、统一数据质量规则。这些都是组织和技术深度咬合的部分值得花力气打磨。阶段三形成壁垒逐步把最有业务特异性的能力做成自研比如行业指标库、场景化数据服务模板、智能化数据运维能力。这个节奏的好处是风险和投入相对可控不会一上来就把团队拖进泥潭。5. 中台数据服务建设路上常见的坑与排查心得5.1 数据服务“越建越多”复用率却越来越低一个非常典型的现象中台团队每天都在发布新的数据服务但业务方并不买账还是经常自己写SQL查库。原因很简单服务化做得不好业务调用你的服务比自己去取数还麻烦。排查几个点服务注册是否够简单服务文档是否清晰接口字段是否跟业务方理解的一致服务是否有明确的等级和SLA保障。如果这些问题没有解决服务数量再多也是空的。5.2 血缘不全服务出问题只能到处“问人”数据服务上线一段时间后数据变更导致服务异常这是最常见的生产事故。出问题时最怕的不是修复而是找不到影响面。如果血缘管理没跟上一个源表字段变更到底影响到哪些模型、哪些指标、哪些数据服务完全靠人肉排查效率极低还容易出事故。所以血缘不是“锦上添花”的功能是中台建设里的基础设施。以前我吃过这个亏提醒各位血缘管理应该和数据开发流程强绑定从第一天就开始积累后面补课的成本是你不想知道的。5.3 权限模型混乱服务要么难用要么裸奔数据服务的权限管理是个两难。管得太死业务侧开个权限要审批一圈效率低下管得太松敏感数据可能被随意调用审计检查直接红牌。比较好的做法是分级分类完全脱敏后的统计数据可以开放给全员明细数据按角色和数据域授权高敏感数据除了授权还必须走申请审批留痕。网关层作为唯一入口做权限拦截底层的表权限尽量不对业务暴露。5.4 性能问题排查一个慢服务拖垮整个中台的案例有一次线上某个热门数据服务突然超时严重导致的后果是下游十几个业务方连环告警。排查下来根子不在我的服务这层而是底层一个核心维表做了全量刷新任务刷新期间数据源连接池被打满所有依赖这张表的服务都变慢。从那以后我把所有数据服务的依赖关系梳理成了“服务-表”依赖矩阵任何核心表的变更和运维动作都会先通过依赖矩阵评估影响面。同时在网关层把核心服务分组隔离一个业务域的服务出问题不影响其他域。排查这种问题链路追踪日志一定要做好任何一个环节缺少日志故障恢复时间都会显著拉长。下面这张问题排查速查表建议收藏症状可能原因排查思路服务偶发超时底层表分区未合并、连接池不足查看慢SQL、检查连接池监控数据不准上游数据重复、口径漂移看血缘找到加工节点对数据重新校验服务权限报错数据域和责任人不匹配检查权限配置和订阅关系调用量突增上游批量任务刷接口看审计日志追到调用方并做限流策略结果一直为空分区参数传错、时区偏移先用测试参数直查底层表确认数据是否存在响应格式变化服务版本被覆盖查看服务注册中心版本状态5.5 中台运营比中台建设更重要最后想强调一个经常被忽视的问题中台不是建完就完的产品它是需要长期运营的体系。我看到不少团队中台项目组解散之后平台慢慢就变成了一堆没人维护的接口和调度任务数据质量也一天不如一天。中台运营的核心是让数据服务的Owner始终明确、让数据资产的ROL不断更新、让数据需求有持续稳定的消化通道。这些都不是技术问题而是组织机制问题。所以我做中台项目时特别看重是否设立了中台运营角色这个角色负责推动数据服务的生命周期管理、数据资产的盘点复盘、以及业务侧数据需求的统一接入。从数据服务与数据中台的关系角度来看运营这个角色正是让“服务驱动中台进化”这个闭环真正转起来的发动机。做数据中台这几年我最大的体会是中台和数据服务从来不是“先有谁后有谁”的问题而是一体两面。数据中台脱离数据服务是自嗨数据服务脱离中台治理是自掘坟墓。如果你准备在团队里推进中台建设我的建议很简单——先找到三个最痛的数据消费场景把对应的数据服务做出来让业务方建立信任再回头把中台的底座逐步夯实。这个顺序比先闷头搭一堆底层能力再找业务场景要靠谱得多。
返回列表