专栏名称: 51CTO技术栈
有趣 | 有料 | 有内涵,为您提供最优质的内容,愿我们一起悦享技术,成就人生。
目录
相关文章推荐
51好读  ›  专栏  ›  51CTO技术栈

千万QPS毫秒响应:快手数据中台建设实践

51CTO技术栈  · 公众号  · 程序员  · 2021-01-25 18:05

正文

送福利啦

关注 鸿蒙技术社区 ,回复 【鸿蒙】 价值 399元 鸿蒙智能小车 开发套件 (数量有限,先到先得) ,还可以 免费下载 鸿蒙 入门资料


👇 扫码 立刻关注 👇

专注开源技术,共建鸿蒙生态


本文整理自快手数据平台部,数据服务化中台负责人 倪顺 发表的《快手数据中台建设-大数据服务化之路》的演讲。


图片来自 Pexels


他围绕数据资产服务化,服务于业务产生商业价值进行了分享:

  • 第一部分是背景介绍,包括数据开发的痛点。

  • 第二部分是介绍大数据服务化平台,包括平台架构以及关键细节详解。

  • 第三部分是经验总结和未来思考。


数据开发的痛点


快手是一家数据驱动的公司,数据扮演了非常重要的角色,而数据的生产加工主要依靠数据开发工程师,其工作内容会涉及多个方面。


数据开发工程师则首先根据业务需求开发好高质量的数据,通常是结构化数据(数据表);其次,开发稳定可靠的数据服务,并通过 API 方式交付给业务方使用。


数据开发工程师有两个痛点,这其中包括:

  • 开发数据服务门槛高

  • 重复开发数据服务


开发数据服务门槛高


数据开发工程师除了开发完数据表外,通常还需要思考如下问题:


①数据如何交付: 业务通常期望使用数据接口方式来使用数据,而非数据表,这会更加灵活、解耦、高效。数据开发工程师因此需要建立对应的数据服务。


②服务如何开发: 数据服务有多种形式,通常要求开发工程师有微服务知识、服务发现注册、高并发等。


③权限、可用性问题: 开发完数据服务后,需要考虑权限问题,确保数据资源能被安全的访问;此外还需要考虑可用性问题,要以多种手段保障数据访问的稳定性。


④运维问题: 数据服务本身涉及多种运维问题,如扩容、迁移、下线、接口变更、服务报警等。


以上问题都需要数据开发工程师去解决。这要求数据开发不仅仅是开发出数据表,还需要将数据表包装成一个独立的、灵活的、高可用的、安全的数据服务。


这对于数据开发工程师要求很高:除了具备基本的业务需求捕获、数据建模、SQL 开发等能力外,还要具备开发高可用、高性能的数据服务能力(包括 Java 开发、微服务等)。

重复开发数据服务


快手很多业务线(如支付业务、直播业务、账户业务等),都存在数据需求,各业务线都做着:


数据同步到线上数据库和缓存。


建设微服务等开发,其中不同业务线下,数据同步和微服务通常有很多共同之处,重复烟囱式的开发意味要重复开发数据服务,造成了人力资源浪费,而且开发效率低,从数据开发到最终交付数据服务,需要经历较长的周期。

基于上述痛点,我们开始建设统一的数据服务化平台。由此开启一个新模式去解决问题。


大数据服务化平台


数据平台本身的定位是一站式自助数据服务平台。用户通过平台来创建数据服务接口、运维服务、调用服务。


平台秉承“配置即服务”的理念:数据开发工程师不再需要手写数据服务,只需要在平台上进行简单配置,平台便可自动生产和部署数据服务,从而提升效率。


系统架构


大数据服务化业务架构如下所示,Data Lake 数据湖中存储原始数据,经过数据开发之后,形成按主题域组织的数据资产。


此时数据资产通常是在数据仓库,访问速度较慢,因此需要通过数据加速到更高速的存储介质,最后经过多场景服务接口,服务于业务。

在技术架构方面,数据接口形式有 RPC 和 HTTP 两类接口。


RPC 接口不需要重复建立链接,且传输数据时会被高效序列化,适用于高吞吐场景下的微服务,实现负载均衡、流控、降级、调用链追踪等功能。相对而言,HTTP 接口传输效率低一些,但使用非常简单。


关键技术一:配置即开发


平台用户分为两类角色:其一是数据服务生产方,其二是数据服务调用方。数据服务生产方只需要配置,做到“配置即开发”。


配置包括:

  • 数据源

  • 数据加速到何处

  • 接口形态,访问方式

  • 配置独立的测试环境,访问隔离的测试数据


当配置完毕后,数据服务平台便会根据配置清单,完成接口的自动化生产和部署。


生产和部署完毕后,调用方在平台申请服务权限调用。通过自动化生产,达到配置即开发的目的,从而极大的提升效率。

关键技术二:多模式服务形态


数据服务有多种服务形态,包括:


①KV API: 简单点查,可以支撑百万 QPS、毫秒延迟。这类 API 是通过模板自动化创建出来,支持单查、批量查询等接口,返回的结果是 Protobuf (PB) 结构体,从而将结果自动做了 ORM,对于主调方更加友好。







请到「今天看啥」查看全文