当前位置: 首页 > 科技观察

千万级QPS毫秒级响应:快手数据中心建设实战

时间:2023-03-15 10:11:41 科技观察

本文整理自数据平台部数据服务中心负责人倪顺的演讲,快手。图片来自Pexels。他分享了数据资产服务,服务业务产生商业价值:第一部分是背景介绍,包括数据发展的痛点。第二部分介绍大数据服务平台,包括平台架构和关键细节。第三部分是经验总结与未来思考。数据开发的痛点快手是一家数据驱动的公司,数据在其中扮演着非常重要的角色,而数据的生产和加工主要依赖于数据开发工程师,他们的工作涉及到很多方面。数据开发工程师首先根据业务需求开发高质量的数据,通常是结构化数据(数据表);其次,开发稳定可靠的数据服务,通过API接口交付给业务方。数据开发工程师有两个痛点,包括:数据服务开发门槛高数据服务重复开发数据服务开发门槛高除了开发数据表,数据开发工程师通常需要思考以下问题:传递数据:业务通常希望通过数据接口来使用数据而不是数据表,这样会更加灵活、解耦和高效。因此,数据开发工程师需要建立相应的数据服务。②如何开发服务:数据服务有多种形式,通常需要开发工程师具备微服务、服务发现注册、高并发等知识。③权限和可用性问题:开发数据服务后,需要考虑权限问题确保可以安全地访问数据资源;此外,还需要考虑可用性问题,通过各种手段保证数据访问的稳定性。④运维问题:数据服务本身涉及多种运维问题,如扩容、迁移、下线、接口变更、服务告警等,以上问题都需要数据开发工程师来解决。这就要求数据开发不仅要开发数据表,还要将数据表打包成一个独立的、灵活的、高可用的、安全的数据服务。这就对数据开发工程师提出了很高的要求:除了基本的业务需求抓取、数据建模、SQL开发等能力外,还必须具备开发高可用、高性能数据服务的能力(包括Java开发、微服务等).).数据业务重复开发快手很多业务线(如支付业务、直播业务、账户业务等)都有数据需求,每个业务线都在做:①数据同步到线上数据库和缓存。②构建微服务等开发,其中不同业务线、数据同步和微服务通常有很多共同点,重复的烟囱式开发意味着重复开发数据服务,造成人力资源浪费,开发效率低下。数据业务从开发到最终交付需要一个较长的周期。基于以上痛点,我们着手构建统一的数据服务平台。这开辟了解决问题的新模式。大数据服务平台数据平台本身的定位是一站式自助式数据服务平台。用户通过平台创建数据服务接口,运维服务,调用服务。平台秉承“配置即服务”的理念:数据开发工程师不再需要手工编写数据服务,只需在平台上进行简单的配置,平台即可自动生产和部署数据服务,从而提高效率。系统架构大数据服务业务架构如下。数据湖存储原始数据,经过数据开发,形成按学科领域组织的数据资产。此时数据资产通常都在数据仓库中,访问速度比较慢。因此,需要将数据加速到更高速的存储介质,最终通过多场景服务接口服务于业务。在技??术架构上,数据接口形式包括RPC和HTTP接口。RPC接口不需要重复建立链接,在传输数据时会高效序列化。适用于高吞吐场景下的微服务,实现负载均衡、流量控制、降级、调用链跟踪等功能。相对来说,HTTP接口的传输效率较低,但使用起来非常简单。关键技术1:配置即开发平台用户分为两类角色:一类是数据服务生产者,一类是数据服务调用者。数据服务生产者只需要配置,做到“配置即开发”。配置包括:数据加速到的数据源、接口形式、访问方式、配置独立的测试环境、访问隔离的测试数据。配置完成后,数据服务平台将根据配置列表完成接口的自动化生产和部署。生产部署完成后,调用方在平台申请服务权限调用。通过自动化生产,达到配置开发的目的,从而大大提高效率。关键技术2:多模式服务形式数据服务有多种服务形式,包括:①KVAPI:简单校验,可支持百万级QPS,毫秒级延时。此类API通过模板自动创建,支持单次查询、批量查询等接口,返回结果为Protobuf(PB)结构,因此结果自动进行ORM,对调用者更加友好。典型场景包括:根据IP查询地理位置信息,根据用户ID查询用户标签画像信息等。②SQLAPI:查询复杂灵活,底层基于OLAP/OLTP存储引擎。通过FluentAPI接口,用户可以自由组合匹配一个或多个嵌套查询条件,查询多个简单字段或聚合字段,分页或全量检索数据。典型场景包括:用户圈子选择(组合多个用户标签筛选出一批用户)。③UnionAPI:FusionAPI,可以自由组合多个原子API,组合方式包括串行方式和并行方式。调用者不再需要调用多个原子API,而是调用融合API,通过服务器代理访问多个子查询,可以大大降低访问延迟。关键技术3:高效数据加速上述数据资产通常存在于低速存储引擎中,无法支撑在线业务的高访问流量。因此,数据加速需要以系统的方式进行。目前有两种加速方式:全量数据加速多级缓存(部分数据加速)全量数据加速:原始数据从多个数据源(如Kafka、MySQL、在线访问日志等)摄取,经过处理和处理建模,获取数据资产。数据资产通过独立的数据同步服务同步到其他更高速的存储引擎,如Redis、Hbase、Druid等。数据同步支持一次性或周期性(小时、天、周等)将数据从Hive同步到其他存储。数据同步本身是基于分布式调度系统,内核是基于datax进行数据同步的。大数据服务平台单日同步数据量达1200亿条,数据规模达20TB。多级缓存:大数据服务平台会使用Redis、Hbase、Druid、Clickhouse等来存储所有数据,但是有些存储比如Hbase可能会比较慢,需要额外的热点缓存来缓存热点数据.热点缓存是一个多级缓存。针对每个API接口,用户可以自由组合多级缓存,灵活设置缓存策略。另外对于大数据的API,也可以配置数据压缩。通过各种压缩方式(如ZSTD、SNAPPY、GZIP等),可以显着减少数据量(有些API甚至可以减少90%的数据存储)。关键技术四:高可用保障服务可用性是微服务领域的一个核心,服务的高可用通常需要多种手段的组合来保障。快手数据服务平台通过多种方式实现高可用,主要包括:弹性服务框架资源隔离全链路监控弹性服务框架数据服务部署在容器云环境中,容器云自研快手一个弹性可扩展的容器服务,部署在其中的RPC服务会注册到KESS(快手自研服务注册与发现中心)供调用者调用。如果有异常值,它们将被自动删除。服务调用基于RPC,全链路监控,包括服务可用性、延迟、QPS、容器CPU、容器内存等。资源隔离资源隔离是可用性保证的常用手段之一,通过隔离来降低意外故障和其他情况的影响。不管是微服务还是存储,我们按照业务+优先级(高、中、低)的粒度进行隔离部署,独立保证业务互不影响,业务内部不同层级不影响彼此。同一业务线中可能存在多个不同的数据服务,通过混合部署可以提高资源利用率。全链路监控服务难免出现问题或故障。一旦出现问题,早期发现和早期干预非常重要。服务平台构建了全链路监控,包括:数据同步:监控数据资产同步到高速存储的过程,包括数据质量检测(过滤脏数据)、同步超时或故障检测等服务稳定性:构建独立哨兵服务,监控各个API的运行指标(如延迟、可用性等),客观评估健康度。业务正确性:数据服务需要保证用户访问的数据内容与数据资产表的内容一致,所以sentinel服务会从数据一致性层面进行排查,保证各个API的数据一致性。总结与展望大数据服务平台从2017年发展到现在,已经支持多种应用场景,涵盖直播、短视频、电商、商业化等线上业务,制作人等准线上业务中间阶段和操作系统。内部数据系统等,平台在线业务总QPS达到1000W,平均延迟在毫秒级。针对准在线业务和内部数据系统,基于CH、Druid等数据引擎,支持多种灵活查询。数据服务平台支持多种模式API,很好地满足了多样化的需求。此外,数据服务平台还支持服务权限、API市场等丰富功能,进一步为业务赋能。大数据服务平台未来的发展方向主要包括:①贴近业务需求:数据服务平台本身为业务服务,通过为业务赋能为企业带来价值。业务本身也在不断发展,以后还会有更多。需求出现,数据服务平台自身也会不断抽象和沉淀公共数据服务能力。②深耕数据资产:数据资产是数据服务的基础。如果没有完善的数据资产建设,就难以构建结构化、统一的数据服务。数据资产的内容很多,包括资产登记审核、资产地图、资产标签、资产管理、资产曝光和服务等。大数据服务平台能力建设将走向统一的OneService体系。主要包括三个方面:支持丰富的数据源:包括大而宽的表格、文本文件、机器学习模型(模型也是一种数据资产)构建综合数据服务。支持多种接入方式:除了支持同步快速接入外,还支持异步查询接入、推送结果、定时任务等多元化方式,满足各种业务场景需求。构建统一的API网关:集成权限控制,限流降级,流量管理一体化。不仅平台创建的服务可以注册到API网关,用户开发的API也可以注册到API网关,享受已有的网关基础能力,为业务提供数据服务能力。作者:倪顺简介:毕业于北京大学,学士和硕士,曾就职于Hulu,从事视频领域的大数据研发,包括视频播放质量的数据构建和数据驱动的播放体验改进。目前就职于快手,从事数据中台领域,主要负责大数据服务基础平台建设。目前平台QPS已达千万级,已支持直播、推荐、风控等多项内部业务,为2020年春晚红包活动起到了重要支撑作用,顺利应对交通高峰。编辑:陶家龙来源:转载自公众号一白案例(ID:Top100Case)