科技
设为书签Ctrl+D将本页面保存为书签,全面了解最新资讯,方便快捷。
业 界/ 互联网/ 行 业/ 通 信/ 数 码/ 手 机/ 平 板/ 笔记本/ 相 机
当前位置:科技 > 快讯 >

顺丰科技 x StarRocks:双十一实时运单分析实践

顺丰科技 x StarRocks:双十一实时运单分析实践
2021-11-25 12:33:59 来源:财讯网

顺丰科技有限公司隶属于顺丰速运集团,成立于2009年,致力于构建智慧大脑,建设智慧物流服务。顺丰科技经过多年的自主研发,已经建成大数据整体生态系统,完成数据采集与同步、数据存储与整合、数据分析与挖掘、机器学、数据可视化等台的构建。在建设底盘台的基础上,结合大数据、区块链、物联网与人工智能技术,广泛应用于速运、仓储、冷运、医药、商业、金融、国际等业务领域。

顺丰大数据台简介

早期顺丰在OLAP层主要使用了Elasticsearch、ClickHouse、Presto、Kylin这四个组件。

Elasticsearch在顺丰场景使用的最多,倒排索引的机制下,检索效率高,整体运维也比较方便。目前在日志类、条件检索类的场景用的比较多。目前版本以Elasticsearch 5.4为主,新接入的业务使用了7.6版本,基于标准版本进行了一些定制化的开发工作,包含跨机房备份方案、K8S容器化部署、数据服务台等。

ClickHouse是这两年引入,用于一些重点的运单场景,进行了K8S集群化改造,很好的满足了资源快速交付的需求。

Presto在顺丰也使用的很多,主要用于Hive数据的查询。我们针对Presto进行了Yarn集群部署的改造,很好地用到了Yarn队列的资源。

Kylin使用的相对较少,目前只在财经线的几个业务上作为试点。

当前痛点及产品选型

顺丰通过内部容器化建设、组件深度定制、组件台的建设,组件的一些突出问题、共问题已经解决,但是还有一些难以解决的组件自身的痛点问题。我们对这些组件的问题进行了一些总结:

一、多版本多框架并存、基础组件升级难。由于历史原因,同时存在多个版本在线上运行,但因为多个版本的不兼容,用户业务在线上稳定运转,主动切换意愿不高,导致版本难以统一,组件升级方案复杂、操作风险高,也是组件升级难的另外一方面原因。

二、用户选用组件容易一刀切。在实际的应用中,有很多用户进行大数据选型时,缺乏对组件本身的了解,导致大量的使用不合理的情况,如使用ES做大量的聚合计算、使用Presto做报表、使用Kafka做批量交互等。

三、使用难/运维难。各种组件的使用/运维不尽相同,需要用户和运维都要具备相应的专业知识。

OLAP产品选型

目前OLAP场景,各家百花齐放。可以选择的组件很多,选择合适的组件需要方法论的支持。目前我们顺丰在选型上,遵照了以下原则:

·组件的核心能力要够强,短板不明显。

·组件交付的版本工程质量高。

·核心诉求/大的生产环境的问题响应足够及时。

·可塑强,未来长期发展潜力大。

·运维的门槛要低。

我们针对进行了相应的评估,评估包含下面一些方面:

·不同产品之间使用标准测试集的横向评估,主要选取评估的组件有ClickHouse、Presto、Apache Doris、StarRocks。

·中等业务规模的业务体验:10亿规模的契合度高的场景,带Join。

·公司内典型场景的需求评测:百亿规模的运单场景的典型SQL等。

·重点功能项的评测:如大数据数据导入、大表Join、failover等。

从评估的结果来看,对于StarRocks我们整体还是比较满意的,最终我们选择了StarRocks,基于如下的考虑:现阶段StarRocks能、稳定占优;StarRocks处于高速发展期,能够提供专业的技术支持、生产环境问题/需求的快速反应;StarRocks拥有强大的运维管理系统,用户开发、运维的功能很全面。

StarRocks应用实践

整体目标

顺丰引入StarRocks的目标是:使StarRocks成为一站式的大数据分析台的底座。从数据的源头来看,包含三条数据流:

·实时数据、离线数据导入,通过StarRocks原生的几种Load任务完成。

·通过Flink/Spark的Connector完成数据ETL。

·Hadoop、Elasticsearch、MySQL等环境中的数据,作为数据源,通过StarRocks外表导入。

从数据使用的角度来看,通过JDBC接口给数据使用者提供服务,主要的数据使用者包含:

·组件开发/组件维护,目前顺丰环境对应的是大数据组件台。

·BI工具台,在顺丰内部叫作丰景台。

·数据中台,如数据服务、数据字典等。

·业务台的访问,比如数据台临时查询导数的台,及其他一些业务台。

为了应对统一的大数据分析底盘的诉求,需要一些场景化的能力,这里列一些我们主要的诉求:

·替代Presto,在BI工具台快速查询Hive数据。

·替代ElastcSearch、ClickHouse、Kylin做OLAP明细、汇总数据的存储。

·较好的数据导出能力,便于业务做二次分析。

StarRocks应用进展

业务接入

·运单级别业务已经完成开发,正在灰度运营中。

·其他几个细分业务领域也完成了接入,如财务、快运、国际等。

·其他也有一些业务正在接入、体验中。受限于前期的机器采购预算未申报,接入节奏不算快。

统一的OLAP台能力建设

·已经可以进行BI工具台打通。

·全链路的多个集群环境的搭建,包含测试集群/预发布集群/生产公共集群/容灾公共集群/重点业务私有集群。

·大数据台DataX集成、Flink/Spark Connector的集成正在开发/测试中。

·中台的数据服务、数据字典等正在进行相关的设计,目前也和鼎石团队在一起看如何拿到元数据。

实践案例

在物流行业,运单场景是最典型的场景。这里给大家分享一个顺丰最大体量级别的运单场景。这个场景原来是在Oracle上单机运行,更新频繁、对时效要求高。业务上存在着许多的痛点,业务数据成倍增长导致原来系统已经不堪负荷,主要表现为可用不高、速度变慢、数据多份、时效不高等。业务侧的诉求是希望接入StarRocks以后,能和时效大幅度提升,能够在现有业务翻倍双11场景下的撑得住,提供高可用的方案,能够快速扩容等等。

需求澄清

接到这个任务后我们梳理了一遍需求:

·硬指标,双11要满足单行数据2k左右大宽表、8万TPS写入诉求。

·业务峰值效应明细,未来还会有大的增长空间。

·数据保存三个月以内的数据,目前数据量在百亿级别以内。

·旧业务改造需要考虑已有BI台工具的2K+报表的滑过渡。

·数据导出需求,供业务侧做二次分析。

数据导入

针对需求,我们做了数据导入和查询两个方面的方案设计和优化。从数据导入来看,核心问题是提升单机数据写入能。

·表设计按照日期分区,按照运单号分桶,第一个问题就是如何进行数据分布的设计,从使用经验来看,Kafka分区个数与StarRocks的BE节点个数、导数任务并行度要一致,导入效率才最高。

·由于源头数据来源于不同的业务系统加工成大宽表,需要通过配置字段的replace_if_not_null支持部分字段更新,另外为了避免Json数据字段增删导致导数失败,需要每个字段指定Json位置。

·StarRocks导入能力与单条记录的字节数、合并效率有很大关系。为了更高的导入能,我们把大宽表的按列分拆为两个,更新少的数据放入一个表(这里叫公表)、更新频繁的放到另外一个表(私表),多表的导入的任务数会增加。

·机器选型上,由于写入频繁,我们升级了单机6盘到12盘,未来考虑使用ssd;StarRocks向量化优化深入,我们升级了40核到80核,提升QPS。

·系统按照日期进行分区,由于数据来源于多个业务系统,存在分区时间没有的情况,需要反查,初期方案是从StarRocks跨区查,效率较低,后面采用了Flink的RocksDB方案。

·跨机器跨磁盘的副本均衡问题:由于机器down机或者增删磁盘造成的,目前跨机器的副本均衡已经在最新版本解决,跨磁盘的副本均衡期待在后续版本解决。

·版本数问题:如果版本数过多会导致BE节点暂停从Kafka消费,导致数据导入效率下降。这里可以通过调整Kafka消费时间、合理设置分片、分区个数、副本个数减少版本数。

查询

·为解决原有系统的2K+报表的滑迁移问题,由于拆成了两个表,新增加了一个视图,保持跟原有表结构一致,降低迁移成本。

·跟BI台合作,做了一些查询并行度限制核数据缓存策略,提高系统的稳定

为了提高的查询能,做了一些针对的优化工作:

·对于最常用的查询条件字段,加到key列,如客户的公司等。

·通过增加布隆过滤器索引提升查询效率。

·大表间的Join,调整Join的顺序(未开启CBO)。

·两表Join时,增加冗余字段并放在ON条件里面使条件能够下推,减少扫描量。

·问题:为了提升查询能,将查询条件中的非key列的加到了key列,对于此非key列的变更变成了删除+插入两步操作,可能会造成未合并的版本数累积。

目前系统的整体数据来源于多个业务系统,通过Flink进行计算后写入一个新的Kafka,StarRock通过Routine Load从新的Kafka拉取数据,很好的实现了Exactly Once语义,各个系统的耦合度很低,可用度高。

为了更高的可用,我们采用了双机房、双写、双活的方案。通过两种域名配置方式以负载均衡方式给BI工具和业务APP使用。业务APP通过域名、JDBC LB方案具有更高可用,机器迁移、down机无影响。

这里是我们具体的表设计:

1)聚合表模型、同时支持明细表和物化视图。

2)按照使用更新频度分成两个表,提高导入任务个数。

3)按照寄件日期分区,运单号分桶。

4)通过replace_if_not_null支持部分字段更新。

5)变化不频繁字段加到key列,并两个表冗余,提高查询效率。

6)两表按照CollocateJoin提升Join效率。

7)按照日期动态分区,支持数据淘汰。

8)查询条件增加布隆过滤器索引,提升检索效率。

在适应更高的场景、如不更新、数据量10亿以下等,StarRocks更加得心应手,能强大。这里是目前顺丰接入的其他一些非运单明细的场景,StarRocks都有良好表现,如原财务系统,时常会出现告警。接入StarRocks以后,使用1/3的资源消耗即可良好的运行。

后续规划和社区共建

我们后续在OLAP方面的规划如下:

·ClickHouse的新业务接入已基本停止。

·明年准备大规模接入StarRocks,已经全面启动相关的机器采购预算申请,运单级别的业务系统已经有几个规划会进行改造接入。

·另外在云上数仓项目上,期待继续深入使用StarRocks。

目前StarRocks已经源代码开放,面向未来,StarRocks有更多的可能。顺丰也有基于StarRocks建设统一、全场景、极速OLAP分析台的诉求:

·从终端用户来看:建设一站式的开发/运营台。

·从资源管理来看:达到serverless的管理目标、可衡量。

·从运维层面来看:更高可用、更多的工具。

·从数据模型来看:更多的场景化模型支持。

·从统一查询台:各种数据库引擎的更好支持。

·从生态来看:深入各个周边场景提供更多能力。

我们愿意与StarRocks社区一起,携手共进,为社区贡献我们的一份力量。(作者:严向东,顺丰科技大数据台架构师)

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。

责任编辑:kj005

文章投诉热线:156 0057 2229 投诉邮箱:29132 36@qq.com
关键词:

我国成功发射试验十一号卫星 顺利进入预定轨道

2021-11-25 08:35:47我国成功发射试验十一号卫星 顺利进入预定轨道

远望6号船护送高分三号02星顺利入轨 准确高效完成预定任务

2021-11-24 08:45:56远望6号船护送高分三号02星顺利入轨 准确高效完成预定任务

高分三号02星入列!装载两大“独家利器”

2021-11-23 09:09:46高分三号02星入列!装载两大“独家利器”

安徽建成5G基站超5万个 数量跃居全国中上水平

2021-11-22 11:21:19安徽建成5G基站超5万个 数量跃居全国中上水平

5G应用融合发展势在必行 赋能千行百业5G规模化应用进入新阶段

2021-11-19 09:05:205G应用融合发展势在必行 赋能千行百业5G规模化应用进入新阶段

“超长待机”月偏食19日登场 将持续上演3小时29分钟

2021-11-19 08:52:05“超长待机”月偏食19日登场 将持续上演3小时29分钟

相关新闻

最新资讯