降本增效,StarRocks 在同程旅行的实践

这篇具有很好参考价值的文章主要介绍了降本增效,StarRocks 在同程旅行的实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:周涛 同程旅行数据中心大数据研发工程师

同程旅行是中国在线旅游行业的创新者和市场领导者。作为一家一站式平台,同程旅行致力于满足用户旅游需求,秉持 "让旅行更简单、更快乐" 的使命,主要通过包括微信小程序、APP、轻应用及其他渠道在内的线上平台,为用户提供几乎涵盖旅游所有方面的全面创新产品和服务选择,涵盖交通、住宿、景点门票预订及各种配套增值旅游产品及服务,旨在满足用户在整个旅途中不断变化的旅游需要。目前,同程旅行的月活跃用户已达到2亿多人。

为了提升数据分析查询性能,同时降低人力和硬件成本,公司的出行、住宿和公共等多个业务线都已接入并使用了 StarRocks 技术。

同程旅行有多年的 OLAP 使用经验,随着业务增长和变化,促使我们需要不断探索更合适的组件来满足需求。在这方面,StarRocks 作为一款优秀的数据库,在同程旅行的生产环境中得到了广泛应用,涵盖实时、离线和 Customer Data Platform(顾客数据平台,以下简称 CDP)等多个应用场景。

本文将从同程旅行 OLAP 平台演进、业务痛点和 StarRocks 是如何解决当前业务痛点这几个部分详细介绍 StarRocks 在同程旅行的生产落地实践。

同程旅行的 OLAP 平台演进

随着公司的业务变化和用户量的增加,数据量也在不断增加。数据分析场景变得越来越多样化,对实时分析的时效性要求也更高了。为了更好地满足这些需求,同程旅行的 OLAP 平台也在不断演进,整体的发展过程大致分为三个阶段:

第一阶段:以 Druid+Kylin 为基础构建的数据分析体系,满足了当时对于离线数据分析加速的需求,但在使用过程中也逐渐暴露出 SQL 分析、联邦查询、BI 兼容等方面能力不足与 CUBE 运维成本较高等一系列问题;

第二阶段(引入 StarRocks 前):在这一阶段,我们采用 ClickHouse+Greenplum 支撑实时、离线业务的分析处理,在一定程度上解决了上一阶段存在的问题;

第三阶段:由 StarRocks 作为统一的 OLAP 组件,减少多组件的维护压力。同时注重在企业内部与相关数据平台的集成,提升用户使用体验,降低用户组件使用和切换成本。

在说明我们为什么选择 StarRocks 作为我们新一代的 OLAP 组件前,我们需要先了解原有平台架构的不足:

  • ClickHouse:主要用于用户行为轨迹和订单实时数据存储和分析

  • Greenplum:主要用于公司内部的灵动分析看板,做分析报表使用

降本增效,StarRocks 在同程旅行的实践

如上图所示,在原始架构中,对于实时场景,业务数据通过 Kafka 传入 Flink,在 Flink 中进行清洗、打宽表等逻辑处理,之后将结果数据导入 ClickHouse 中;对于离线场景,数据统一存储在 HDFS 中,通过 Hive+Spark 进行清洗处理后,将结果数据传入 Greenplum 中。

实时场景

主要涉及业务订单数据,数据可以通过前端用户埋点到 Kafka,或者订阅业务订单数据库 Binlog,实时写入到 MQ,然后使用 Flink SQL,关联维度表,将数据打宽,最后写入到 ClickHouse 中。

离线场景

将实时的用户埋点数据或订单库离线同步数据写入到 HDFS 中,然后经过离线调度做 ETL 数据清洗,再搬运到 ClickHouse 或 Greenplum 中。然而,在使用过程中,我们发现实时和离线分离架构存在一些问题:

  • 分离架构导致开发使用极度不方便,且浪费计算存储资源;

  • 组件技术栈不统一,导致业务人员需要熟悉多种语法;

  • 多组件造成了极高的运维成本。

为解决在使用 ClickHouse、Greenplum 过程中遇到的性能、运维和成本等各方面的问题,我们进行了一些调研,开始对比和了解一些新的 OLAP 组件。接下来,我们将进一步说明使用 ClickHouse 和 Greenplum 架构所带来的业务痛点。通过这些问题的阐述,我们可以更好地理解为何需要寻找新的解决方案。

01 ClickHouse + Greenplum 架构带来的业务痛点

目前,同程 OLAP 组件被广泛使用,并已集成到实时开发平台、离线开发平台、灵动分析、数据地图和快速取数等多个平台系统中。在业务方面,主要涉及以下三类场景:

1.1 实时数据分析

在使用实时数据分析的业务场景,我们主要针对用户行为埋点、用户实时订单等数据进行冷热存储。实时热数据需要存储 30 天至一年不等的时间数据,用于高性能要求的实时统计分析;历史离线数据存储在 HDFS。在查询实时数据时,如果涉及多表关联或者关联历史数据时,当前组件性能无法满足,需要提前离线清洗,导致数据时效性较低。

1.2 灵动数据报表

在使用灵动数据报表的业务场景,用户在离线数仓中清洗出 DWD 或 ADS 层表,通过离线开发平台导入到 Greenplum 中,然后在灵动分析中配置数据集,以拖拉拽的形式生成看板,提供给分析决策使用。然而,在高峰时期,我们经常遇到查询速度慢甚至查询超时等问题,这给业务带来了困扰。

1.3 用户画像 & CDP

在用户画像和 CDP 的场景中,我们会根据用户基本信息、消费数据和行为数据等生成对应标签数据,以创建用户画像,并进行人群圈选和漏斗分析等。

之前我们使用了 ClickHouse 作为存储分析引擎,但随着 CDP 需求的变化,业务场景更加复杂,涉及到多表关联场景以及宽表和 BitMap 关联场景,用户对实时分析的查询性能提出了更高的要求。经过测试,ClickHouse 已无法很好的满足。

针对当前 ClickHouse+Greenplum 体系存在的各种问题,我们开始了基于 StarRocks 构建分析体系 3.0 阶段的升级演变。

StarRocks 在同程旅行的应用与实践

01 选择 StarRocks 的原因

为了解决上述问题,我们追求在新的 OLAP 组件中实现简单、高速和统一的特点(包括支持联邦分析)。为此,我们进行了 StarRocks、ClickHouse、Greenplum 和 Presto 等 OLAP 组件的比较。我们比较了数据摄入速度、查询性能、内存占用率、维护成本和易用性等指标。通过这些比较,我们希望找到最适合我们业务需求的 OLAP 组件。

下图展示了这些组件的具体比较结果:

降本增效,StarRocks 在同程旅行的实践

  • 查询性能优异:

StarRocks 是一款分布式列式存储分析数据库,它具有非常高的查询性能,尤其适用于实时数据分析和查询场景。与ClickHouse 相比,StarRocks 在多表联合查询方面表现更出色,尤其在 Primary Key 模型方面,其在实时动态更新和查询性能方面都表现优异。

降本增效,StarRocks 在同程旅行的实践

  • 维护难度低:

StarRocks 由 FE 和 BE 两类组件组成,不依赖于第三方组件,可以开箱即用。而且,StarRocks 具有良好的可扩展性,集群扩缩容方便,可以根据需求动态扩展集群规模,灵活提高系统性能。此外,数据可以在节点之间自动均衡,无需人为干预。

降本增效,StarRocks 在同程旅行的实践

  • 方便易用:

StarRocks 采用标准 SQL 协议且兼容 MySQL 协议,可以轻松集成到现有系统中。此外,在实时写入方面,官方也提供了 flink-connector-starrocks,写入可实现 exactly-once。另外,StarRocks 还具备方便的联邦查询功能,避免了数据搬运带来的资源消耗,从而提高了系统性能。

经过多方比较,我们最终选择了 StarRocks 作为统一的 OLAP 组件,并预计在未来逐步完成统一 OLAP 层的工作 。

02 StarRocks 的引入

同程旅行主要在以下三个场景中使用 StarRocks:实时数据分析、离线报表和 CDP 系统。

随着 StarRocks 的接入,新的数据应用流程架构如下:

降本增效,StarRocks 在同程旅行的实践

2.1 使用 StarRocks 解决当前痛点

1)实时数据分析的整体时效性提升

在实时应用场景中,业务数据进入到 Kafka 或者 TurboMQ,然后通过 Flink 任务或 Flink SQL 任务进行业务计算转换,最终通过 flink-starrocks-connector 实时写入到 StarRocks,进行实时指标统计或者实时数据分析。实时链路中不再涉及关联打宽,缩短了链路,提升了整体的时效性。同时,StarRocks 采用星型模型组织数据,减少数据冗余存储。以下是我们实际中的一个 Flink SQL 案例:

降本增效,StarRocks 在同程旅行的实践

通过将 StarRocks 集成到实时开发平台,用户可以轻松快速地将实时数据导入 StarRocks 并进行使用。

2)离线报表查询性能大幅提升

我们已经成功将 StarRocks 数据源集成到灵动分析系统中。现在可以将 StarRocks 中的表创建为灵动中的数据集,进行分析看板配置,并实时写入数据。此外,无需重复清洗,还可以直接进行报表配置。由于 StarRocks 支持标准 SQL 并兼容 MySQL 协议,因此系统集成 StarRocks 数据源非常便捷。切换引擎后,与 Presto 和 Greenplum 相比,报表查询性能大幅提升(在某些实际场景中,相较于 Greenplum,查询性能提升近一倍)。

下图是对 14 个 SQL 耗时进行统计对比:

降本增效,StarRocks 在同程旅行的实践

3)CDP 系统查询效率提高

CDP 是一种数据管理平台,它可以集成多方数据,帮助企业更好地了解用户行为、喜好和需求,从而制定更加精准的运营策略。CDP 系统上线后,可以服务于公司各个事业部,对用户进行分层或保存人群进行运营,从而极大地提升了运营效率并降低了运营成本。

CDP 系统的具体工作流程如下:

1)数据导入:

当前先知系统有 1000 多个历史人群需要作为人群圈选的条件,而这 1000 多个人群数据的导入耗时较高,存在性能瓶颈。经过调研,使用以下方法可以很好的解决这个问题:

  • 将 String 类型的用户 ID 转换成 Long 类型的 oneId;

  • 然后通过 Spark 任务将 oneId 转换成 Java 代码的 BitmapValue 对象;

  • 在所有的相同 key 的 BitMap 合并后,转换成 Base64string,这样将相同的 key 的数据合并成一条数据,导入到 StarRocks 中。

经过验证,采用以上方法可以大大提高数据导入性能,将 1.5 亿条数据的 10 个任务同时导入的耗时从 10 分钟以上下降到 10s 以内,并且可以减少导明细数据的集群资源消耗。

降本增效,StarRocks 在同程旅行的实践

如上图所示,根据数据监控显示,红框内时间段是明细导入的网络传输量,而其他时间段为 BitMap 合并 Base64 后的传输量。这两者之间的传输量相差约 10 倍。针对这个问题,我们正在努力优化导入代码,并将其整理成 Demo,以便提交给社区供大家参考使用。

2)人群圈选:

接下来我们需要通过 BitMap 的函数操作,对用户选择的条件进行人群圈选。通过将条件组合成 StarRocks 对应的 BitMap 的 and、or、union 等函数,简单的查询可以在3秒以内得出结果。即使是复杂的(例如涉及宽表与多个 BitMap 表的关联查询)且数据量大的查询,也都可以在 10 秒以内得到结果。

3)人群保存:

这一步将圈选的结果人群 BitMap 转换成一个明细表,然后再通过 export 语句方式,将表的数据导入 HDFS 进行输出应用。

下述是实际应用中的人群分层迁移桑基图的 SQL 示例:

降本增效,StarRocks 在同程旅行的实践

对应结果图:

降本增效,StarRocks 在同程旅行的实践

该 SQL 中包含了 BitMap 与普通宽表的关联操作,以及三个亿级别大表的关联操作,整体可以在5至10秒内计算完成。

未来规划

  • 更多业务场景推广落地

在公司内,我们将继续扩大和推广 StarRocks 的使用,以替换其他业务中遗留的 ClickHouse 和 Greenplum 组件,减少多组件的维护压力。同时注重在企业内部与相关数据平台的集成,提升用户使用体验,降低用户组件使用和切换成本。

  • 上云

将 StarRocks 部署在公司的 Kubernetes 私有云中,以提高集群的扩展性和灵活性,并且可以依赖于 Kubernetes 的容错机制,自动监测和替换故障节点,提升集群可靠性和稳定性。目前,我们已经完成了开发,进行到了测试验证阶段。后续我们也将持续跟进测试 StarRocks 提供的云原生能力。

  • 存算分离特性的使用

在离线报表应用中,我们计划测试使用即将推出的 3.x 版本。根据其存算分离的能力,在不降低查询性能的条件下,可以大大减少离线数据同步的工作量。

  • 与社区共赢

我们将持续保持与社区的沟通,积极地将使用体验和性能测试反馈社区。通过与社区的合作,实现双赢的目标。文章来源地址https://www.toymoban.com/news/detail-487474.html

到了这里,关于降本增效,StarRocks 在同程旅行的实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生~降本增效】时代到来

    偶然的一天,通过邮件,发现CSDN和腾讯正在联合举办腾讯云原生正发声的活动,细看了下,这不就是之前一直举办的直播的一个总结吗?之前的直播也看过几期,有《作业帮云原生降本增效实践之路》、《游戏平台上云是花钱还是省钱》,说实话讲的还是不错的。  于是,参

    2023年04月21日
    浏览(29)
  • 整车级虚拟标定:降本增效

    ​随着社会发展和用户对汽车产品要求的提高,在排放油耗法规逐步加严与新能源汽车凶猛来势的双重夹击下,动力系统配置、车辆配置以及目标市场的多样化正在为汽车产品开发工作带来巨大挑战,也给整车厂研发带来巨大压力。自2005年实施的CAFC,即乘用车企业平均燃料

    2024年02月05日
    浏览(36)
  • 微服务框架:一招实现降本、提质、增效办公!

    应用什么样的软件平台,可以帮助企业朋友提高办公协作效率?传统的办公方式已经无法满足日益增长的业务需求了,借助低代码技术平台和微服务框架,可以让繁琐的办公轻松化,更高效、快捷、便利地满足客户的办公需求。 在众多服务商中,流辰信息的发展实力获得了新

    2024年02月09日
    浏览(28)
  • DevChat VSCode 插件助力团队降本增效之路

    随着AI人工智能、机器学习的不断发展,AI辅助代码编程也已经成为了一个十分备受关注的领域。通过使用AI辅助代码编程可以半自动化或全自动化的生成代码,从而提高编程效率和代码和质量。此外,AI辅助编程还可以帮助开发人员更好地理解和优化代码,提高软件的可维护

    2024年02月05日
    浏览(35)
  • 码上“云“ - 《云原生.降本增效》电子书读后感

    经过朋友推荐参加了《原动力.云原生.降本增效》的活动,云原生是一种新兴的软件开发和部署方法论,旨在利用云计算技术的优势,实现更高效、更灵活、更可靠的应用程序开发和部署。 如果对看电子书不感兴趣的同学,可以直接观看视频讲座:https://marketing.csdn.net/p/6c2a

    2023年04月15日
    浏览(32)
  • 【原动力x 降本增效读后感】随感而发!

    我是一名全栈开发者,是从微信公众号火爆的那个年代开始接触 IT 互联网行业的,目前在一家设备租赁公司担任技术管理,我的技术栈就不在这里介绍了,比较杂,因为前几家公司都是小公司,那时候老板恨不得把设计也给开了,让你连画图带写页面、带写服务器后端功能,

    2023年04月16日
    浏览(30)
  • 办公实现降本增效,可借助微服务开源平台的力量!

    在如今的快节奏发展时代,低代码开发平台拥有了一个广阔的发展天地,逐渐在通信业、医疗、物流、高校等众多大中型企业中获得一个立足之地,是助力企业提质、降本、增效的得力助手。微服务开源平台可以让企业实现这一目的,那么对于企业而言,应该选择什么样的平

    2024年02月12日
    浏览(32)
  • 【原动力x 降本增效读后感】触发记忆杀

    其实,很久已经没逛 CSDN 了,以前逛要么是主动的,要么是被动的。 被动的 时候是很久以前在技术功底不扎实的情况下在 某度 搜索一些技术问题的时候,往往CSDN的博文聚焦的这类问题最多;主动的是后面技术功底逐渐扎实了之后,我也注册了 CSDN 账号,并且热衷于在 问答

    2023年04月26日
    浏览(31)
  • GitLab CI/CD 新书发布,助企业降本增效

    大家好,我是CSDN的 拿我格子衫来 , 昨天我的第一本书《GitLab CI/CD 从入门到实战》上架啦,这是业内第一本详细讲解GitLab CI/CD的书籍。 历经无数个日夜,最终开花结果。感触良多,今天就借这篇文章来谈一谈这本书的创作。 在正式写书前,我已经写了很多有关GitLab CI/CD的文

    2023年04月12日
    浏览(32)
  • AIGC 大模型纷纷部署,企业如何为 AI 数据降本增效

    编辑 | 宋慧 出品 | CSDN 云计算 AIGC 从年初开始持续爆火,国内各种大模型纷纷涌现,其中模型参数轻松突破千亿数量级。模型中数据的形态、部署也是多种多样的,庞大数据量背后的管理和成本不容小觑。 混合数据厂商肯睿 Cloudera 今年相继发布了系列的数据产品与方案,就

    2024年02月15日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包