本文整理自快手数据平台部,数据服务化中台负责人
倪顺
发表的《快手数据中台建设-大数据服务化之路》的演讲。
图片来自 Pexels
他围绕数据资产服务化,服务于业务产生商业价值进行了分享:
快手是一家数据驱动的公司,数据扮演了非常重要的角色,而数据的生产加工主要依靠数据开发工程师,其工作内容会涉及多个方面。
数据开发工程师则首先根据业务需求开发好高质量的数据,通常是结构化数据(数据表);其次,开发稳定可靠的数据服务,并通过 API 方式交付给业务方使用。
数据开发工程师有两个痛点,这其中包括:
数据开发工程师除了开发完数据表外,通常还需要思考如下问题:
①数据如何交付:
业务通常期望使用数据接口方式来使用数据,而非数据表,这会更加灵活、解耦、高效。数据开发工程师因此需要建立对应的数据服务。
②服务如何开发:
数据服务有多种形式,通常要求开发工程师有微服务知识、服务发现注册、高并发等。
③权限、可用性问题:
开发完数据服务后,需要考虑权限问题,确保数据资源能被安全的访问;此外还需要考虑可用性问题,要以多种手段保障数据访问的稳定性。
④运维问题:
数据服务本身涉及多种运维问题,如扩容、迁移、下线、接口变更、服务报警等。
以上问题都需要数据开发工程师去解决。这要求数据开发不仅仅是开发出数据表,还需要将数据表包装成一个独立的、灵活的、高可用的、安全的数据服务。
这对于数据开发工程师要求很高:除了具备基本的业务需求捕获、数据建模、SQL 开发等能力外,还要具备开发高可用、高性能的数据服务能力(包括 Java 开发、微服务等)。
快手很多业务线(如支付业务、直播业务、账户业务等),都存在数据需求,各业务线都做着:
②
建设微服务等开发,其中不同业务线下,数据同步和微服务通常有很多共同之处,重复烟囱式的开发意味要重复开发数据服务,造成了人力资源浪费,而且开发效率低,从数据开发到最终交付数据服务,需要经历较长的周期。
基于上述痛点,我们开始建设统一的数据服务化平台。由此开启一个新模式去解决问题。
数据平台本身的定位是一站式自助数据服务平台。用户通过平台来创建数据服务接口、运维服务、调用服务。
平台秉承“配置即服务”的理念:数据开发工程师不再需要手写数据服务,只需要在平台上进行简单配置,平台便可自动生产和部署数据服务,从而提升效率。
大数据服务化业务架构如下所示,Data Lake 数据湖中存储原始数据,经过数据开发之后,形成按主题域组织的数据资产。
此时数据资产通常是在数据仓库,访问速度较慢,因此需要通过数据加速到更高速的存储介质,最后经过多场景服务接口,服务于业务。
在技术架构方面,数据接口形式有 RPC 和 HTTP 两类接口。
RPC 接口不需要重复建立链接,且传输数据时会被高效序列化,适用于高吞吐场景下的微服务,实现负载均衡、流控、降级、调用链追踪等功能。相对而言,HTTP 接口传输效率低一些,但使用非常简单。
平台用户分为两类角色:其一是数据服务生产方,其二是数据服务调用方。数据服务生产方只需要配置,做到“配置即开发”。
配置包括:
-
数据源
-
数据加速到何处
-
接口形态,访问方式
-
配置独立的测试环境,访问隔离的测试数据
当配置完毕后,数据服务平台便会根据配置清单,完成接口的自动化生产和部署。
生产和部署完毕后,调用方在平台申请服务权限调用。通过自动化生产,达到配置即开发的目的,从而极大的提升效率。
①KV API:
简单点查,可以支撑百万 QPS、毫秒延迟。这类 API 是通过模板自动化创建出来,支持单查、批量查询等接口,返回的结果是 Protobuf (PB) 结构体,从而将结果自动做了 ORM,对于主调方更加友好。