宜信技术研发中心高级架构师王东:实时敏捷大数据在宜信的实践服务器

来源:互联网 / 作者:SKY / 2018-06-21 15:09 / 点击:
业务方希望方案能够满足低延时、高实时性、接入方案侵入性

2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是顶级IT技术人才学习和人脉拓展不容错过的平台。

在“大数据处理技术”分会场,宜信技术研发中心高级架构师王东带来了《实时敏捷大数据在宜信的实践》的主题分享。会后,51CTO记者根据王东在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。

实时敏捷大数据的背景和痛点

大数据发展到今天,越来越多的实时业务场景涌现,通过流式处理技术实现数据的实时化和从数据中快速发现价值成为趋势。但是,流式处理的实施存在较大难度,包括:人才短缺、开发成本高、上线周期长等,如何低成本的快速落地数据产品成为很多公司面临的难题。

宜信技术研发中心高级架构师王东:实时敏捷大数据在宜信的实践

作为一家互联网金融公司,宜信在数据方面主要遇到了三大难题:一是数据孤岛的问题,很多部门的数据保存在不同的业务库当中,跨部门数据共享非常困难;二是数据抽取方案,由于之前有很多使用方,各自抽取自己所需要的数据,抽取时间不同,互相拿到的版本都不一致;三是实时数据应用能力,由于有实时数据产品需求,也有实时技术能力不足,且需要采用定制化开发,开发周期长,无法快速响应开发数据产品,而且由于业务变化快,造成运维成本居高不下。

宜信技术研发中心高级架构师王东:实时敏捷大数据在宜信的实践

王东表示,业务方希望方案能够满足低延时、高实时性、接入方案侵入性小、能够快速开发数据产品、运维成本低、数据安全和权限高等要求。并且,要求方案能够接受定制化,实现数据存储多样化和支持多种目标。

实时敏捷大数据设计理念

基于当前痛点与客户需求,宜信对实时敏捷大数据提出了自己的理解:

宜信技术研发中心高级架构师王东:实时敏捷大数据在宜信的实践

一)数据是实时计算和实时流转的;

二)通过组件平台化的方式,提供平台服务,让数据从业者能够更多介入并释放数据处理能力,回归数据和业务本质;

三)通过接口标准化方式,使得数据能够在不同组件之间轻松流转;

四)通过可视化的方式进行配置,降低大数据产品开发门槛,同时降低运维成本;

五)基于SQL的方式来实现自助化,快速原型验证,与需求方形成反馈闭环快速迭代,证明有效,并从实践中快速沉淀大数据产品。

宜信技术研发中心高级架构师王东:实时敏捷大数据在宜信的实践

王东告诉记者, 宜信基于对实时敏捷大数据的理念,构建了DBus实时数据总线平台 + Wormhole实时流式处理平台。其中,DBus作为实时数据总线平台,关注数据的抓取和结构化;Wormhole作为实时流式处理平台,提供基于配置SQL的方式进行各种流式计算,并支持落库到各种常见数据目标中。通过DBus、Wormhole两个实时大数据的相关工具使得公司具备了实时计算能力,以及快速搭建实时数据产品的能力。据王东介绍,实时敏捷大数据技术栈组件DBus和Wormhole已经在宜信公司内部宜人贷、大数据创新中心、技术研发中心等多个一级技术部门作为基础设施提供服务,并于2017年9月开源。目前,这两个基础服务平台一直在维护和迭代中,一些社区用户和企业用户也在试用和使用中。

DBus+Wormhole流式处理引擎

大数据处理技术是一个很大的话题,涉及到数据采集、数据流转、数据处理、数据存储、数据展示等诸多方面,包含批次、流式、AdHoc、预算等各种访问模式。在实时流式计算方面,考虑到各种计算引擎的特点和适合的场景,DBus+Wormhole采用了不同流式处理引擎。

宜信技术研发中心高级架构师王东:实时敏捷大数据在宜信的实践

DBus关注数据源的数据流出,希望以较低的延迟让后端用户更快的消费到最新数据,尽可能的保证数据顺序性。因此,DBus采用了storm作为处理引擎。在保证数据一致性方面,需要在整个设计过程中考虑计算引擎支持这一要点,否则会出现数据乱序的情况。宜信采用了让DBus保证输出的每条日志数据是唯一标示和顺序性ums_id的方案。为了做到这一点,DBus采用了物理文件编号和日志偏移量作为基础,保证了即便DBus重做数据的ums_id_,都不会改变。此外,Ums_id_的唯一性和顺序性带来了诸多好处,比如Wormhole落库时,通过比较ums_id_就能知道哪条数据更新过,哪条数据会被覆盖等。

宜信技术研发中心高级架构师王东:实时敏捷大数据在宜信的实践

Wormhole关注数据的实时流转和实时落库。对于数据流转来说,最早支持SQL比较好的是Spark;另外,从落库的角度来说,以批量的方式落库比单条落库效率要高很多。因此,Wormhole采用Spark Streaming作为处理引擎。对于数据的实时转换(Transform),为了提高流上Spark SQL Join性能低下和Join不到的问题,Wormhole重新实现了流上Join的逻辑,大幅提高了流上Join的性能。并且,引入了时间窗口的概念,对于没有lookup到的数据选择在时间窗内,随同下一批mini batch的数据再次进行Join,最终提高Join的成功率。为了更有效的落库装载(Load),Wormhole首先基于主键对batch数据进行repartition,这样合并了不需要的写入,减少了写入量的同时也避免了死锁[鸢玮1] 。另外,采用基于batch和基于预读的逻辑,大幅提高了batch的写入性能。

王东表示,作为流式Extract-Transform-Load 工具,DBus和Wormhole还做出许多额外的努力。首先,作为数据的采集方(Extract), DBus为了减少对数据源端的侵入性和实时性,没有用trigger或时间戳的方式抽取增量数据,采用了通过读取数据库备库日志的方式获得增量数据。为此,不同的数据源采用了不同的解决方案。同时,DBus还实现了数据源端schema变更自动感知的能力,区分兼容性变更和非兼容性变更,自动将变更体现在UMS的版本上,并提供邮件通知报警的功能。

阅读延展

1
3