作者:零洞科技大数据部
零洞科技有限公司(以下简称“零洞”),是碧桂园集团的核心联盟企业,致力于成为国内领先的数智空间解决方案服务商,业务场景覆盖户内及户外,在智慧家居板块,打造一站式智慧家居解决方案,构成丰富的生活场景,满足高端用户智能生活体验;在智慧园区领域,为园区提供全链路智能化产品及服务,打造高效、节能、安全、智能的园区环境,具有千万级智慧园区项目实际落地案例。截至目前,零洞数字化交付项目超2100项,具备亿级设备和数据处理的平台建设及业务应用研发经验。
2022年6月,零洞与碧桂园服务(HK6098)就物业企业微信数字化项目展开充分合作。当前,碧桂园服务是全国规模最大的社区服务运营集团,经测算,共7000+物业管家,上万服务人员,累积服务业主超1400万人,累积管辖房屋达486万户。
一、引入背景
基于上述业务规模,经合作需求评估,该项目需搭建一个数据服务中台,以支持以下需求:
1、支持每年 超十亿数量级数据的存储和计算, 包括但不限于:物业企微会话存档聊天、关联认证、用户行为、管家任务管理、客户舆情分析等各方面数据。
2、支持全国上千的高并发,秒级的访问、查询、计算、报表导出等要求。
3、在此数据中台的基础上,在可视化平台完成报表、看板、大屏的开发展示等需求。
在技术框架选型上,碧桂园服务与零洞科技综合对比了国内外常见的 OLAP 系统,StarRocks 凭借以下6大优点脱颖而出:
1、产品架构简洁,整个系统的核心只有 FE(Frontend)、BE(Backend)两类进程。不依赖三方组件,运维简单;
2、数据查询实时性、高并发等方面的性能相较其他数据库产品有突出的优势;
3、支持标准SQL语法,学习切换成本低;
4、支持主键模型,在实时写入和频繁更新的业务场景中性能优越;
5、流批数据导入:StarRocks 开发了 Flink-connector 、Spark-connector 插件,支持将数据 sink 或批量写入到 StarRocks 中;
6、极速查询体验,亿级数据查询毫秒级响应;
StarRocks 符合现代化的数据应用技术栈需求,最终作为核心存储计算组件来搭建本次碧桂园服务项目的数据中台。
二、基于StarRocks搭建的数据中台
对于传统企业的数据应用场景来说,数据中台的数据集成、研发、管理与服务链路很长,涉及的组件比较多,比如:需要使用 Hadoop 做为存储、Hive/Spark 做离线 ETL 、Kudu 做实时批量更新、 Flink 做流处理,各类组件之间又有很强的依赖关系,尤其是在机器资源有限且服务混合部署的情况下,容易出现资源分配问题,比如 Impala 会经常性发生 OOM 问题。
StarRocks 完美解决了这个问题:对于传统企业来说,我们可以将 Hadoop + Hive + Spark + Kudu + Flink 的功能全部交给 StarRocks ,实现存储/流批处理一体化。
1、数据开发
针对数据开发,StarRocks提供了多种导入方式,如 Stream Load 方式从本地文件系统导入数据、Broker Load方式从 HDFS 或外部云存储系统导入数据、Routine Load 方式从 Kafka 导入数据、Spark Load 方式从 Spark 导入数据等等,基本上可满足我们全场景的实时数据导入需求。
为了使架构简单,尽量少的使用到 Spark 或 Flink 等脚本语言进行开发,我们在数据接入层使用 Kafka 做实时接入缓冲层, 之后基于 StarRocks 的 Routine Load 功能开发自定义导入组件,实现了一键完成 Kafka 到 StarRocks 或者 API 到 StarRocks 的数据同步和监控功能。
考虑到我们的 ETL 工具需要与 StarRocks 做深度集成,我们更偏向于选择架构简单灵活的组件进行二次开发,因此在离线同步上我们选择了 DataX,数据管道(调度平台)选择 Airflow ,可视化工具选择 Smarthart ,并在此基础上进行了个性化的 Driver 及管理功能开发。
经过这一系列的改造,与我们之前使用的传统大数据平台(基于 CDH )实施的项目相比,数据中台的实施成本大幅下降,具体体现为:
1、 实时场景的实现更加轻松
之前的实时查询用到的组件较多,引入 StarRocks 后,只需通过 StarRocks 就能实现实时查询,链路变得简单,人力投入也更少,以前需要投入 Spark/Flink 开发人员,现在只用 SQL 开发就能完成。
2、 服务器资源减少:从10台以上缩减到了4台
3、实施部署周期缩短:从2周下降到3天
2、平台监控
在平台监控上,StarRocks 社区版本提供了兼容 Prometheus 的信息采集接口,可以通过直接连接 BE 或 FE 的 HTTP 端口来获取集群的监控信息。
为了保持与我们可视化平台的统一和灵活性, 我们并没有使用 Grafana 做为可视化监控方案,而是基于 SmartChart 连接 Prometheus 实现了可视化监控的大屏开发,将复杂的数据和信息变得直观易懂,便于我们日常运维,实时展示 BE 及 FE 的健康度及数据导入和查询的状态,方便我们对实际情况进行实时监控与及时预警。
三、基于 StarRocks 的丰富应用场景
1、 BI 场景的支持
在我们的 BI 场景中,需要对千万级以上明细数据进行多表关联查询,更新频率需达到近实时,响应时间需在秒级。同时,用户个性化需求又很强,比如需要同一个会话 ID 来查询上下文,并生成相关的词云统计。
在引入 StarRocks 之前,我们的数据流转线路很长、开发管理的复杂度也非常高:比如为了平衡复杂查询与极速查询的需求,我们需要生成很多宽表或 cube 表;另外之前的方案对于需要频繁更新的业务场景也很不友好:需先写入 Kudu 进行批量更新, 然后回写到 Hive 中, 再从 Hive 抽取到 Kylin ,BI 连接 Kylin 进行查询。
有了 StarRocks 之后,基于 StarRocks 向量化执行引擎所带来的极速查询特性,我们把自研 BI 的数据后台直接切换到了 StarRocks ,使得我们数据建模更加简单,建模方式也逐渐从宽表建模转化成星型建模,不仅减少了数据开发的时间,同时能够支持复杂的业务逻辑实现,数据联动钻取的粒度支持得更细, 数据响应时间也从传统的秒级变为了毫秒级。
2、数据服务场景的支持
企业微信数字化项目需要基于会话的工单自动化生成,因此需要平台能够提供会话上下文查询 API , 从而为算法平台提供实时的数据支持。
从我们的实践来看 ,StarRocks 非常适合此类场景,完美的实现了大数据量的实时更新及同时支持高并发的极速查询需求。
3、数据 生命周期管理 :
不断积累的大量会话明细数据,需要进行有效的数据周期管理,通过冷热区分,来有效的控制存储成本。
在引入 StarRocks 之前,我们需要使用脚本定时删除历史数据,有了 StarRocks 的动态分区及数据生命周期管理的功能,此部分内容就可由 StarRocks 自动完成,整体数据流变得非常整洁。
四、业务价值
数据已成为企业的重要资产,随着大数据的积累,基于 StarRocks 搭建的数据中台已经成为数据窗口的提供者,是物业基础管家服务强有力的支持。
通过数据中台更加高效、实时、全面的数据分析功能,我们可以做更多的业主运营和员工管理,如:
- 利用上亿级的数据进行工单、舆情以及用户画像的分析,让用户诉求处理得更加及时全面,提升业主的满意度;
- 通过分析业主的行为和偏好画像,带动社区多种经营业务,包括社区空间运营服务、社区生活服务、业主资产运营服务等等,发展物业行业的第二曲线。
在项目实施过程中,我们得到了 StarRocks 社区非常专业给力的支持,我们也期待 StarRocks 也期待社区的蓬勃发展促进产品能力持续增强,期待基于 StarRocks 搭建的数据中台在未来让我们数据发挥更大的业务价值。