昭通商城网站建设,货车保险哪家网站可以直接做,培训学校网站建设,移动平台目录
前言
一、应用场景
二、OLAP选型
三、实时数仓构建
四、实时数仓体系的建设与实践
4.1 数仓分层的合理规划
4.2 分桶分区策略的合理设置
4.3 多源数据迁移方案
4.4 全量与增量数据的同步
4.5 离线数据加工任务迁移
五、金融级数仓稳定性最佳实践
5.1 多租户资…目录
前言
一、应用场景
二、OLAP选型
三、实时数仓构建
四、实时数仓体系的建设与实践
4.1 数仓分层的合理规划
4.2 分桶分区策略的合理设置
4.3 多源数据迁移方案
4.4 全量与增量数据的同步
4.5 离线数据加工任务迁移
五、金融级数仓稳定性最佳实践
5.1 多租户资源隔离
5.1.1 单查询资源限制保证查询间资源可控
5.1.2 基于Resource Tag的多租户数据与查询隔离
5.1.3 更灵活的资源隔离方案
5.2 精细用户权限管理
5.3 集群稳定性保障
5.3.1 SQL熔断
5.3.2 导入并发控制
5.3.3 网络流量控制
5.3.4 监控报警
5.4 基于 CCR 的集群灾备能力
六、总结与规划 原文大佬的这篇实时数仓构建有借鉴意义这里摘抄下来用作学习和知识沉淀。
前言 银联商务是国内大型的非银行支付机构沉淀了庞大、真实、优质的数据资产数据。随着业务的不断扩展早期基于 Hadoop 的大数据平台已无法高效支撑拓展性、时效性与便捷性的业务需求因此2020 年起银联商务开启了数据平台的升级之旅基于Doris 构建了新一代实时数据仓库架构使数据导入性能提升 2-5 倍、ETL 场景性能提升 3-12 倍、查询分析响应速度提升 10-15 倍满足大规模数据导入和实时极速查询的业务需求解决了业务和数据快速增长问题。
一、应用场景 在长期为各行各业的海量商户提供服务的过程中银联商务沉淀了大量的交易数据、用户数据、终端数据以及经营数据等。 通过对这些数据的挖掘和利用为银联商务总、分、子公司以及商户提供多元化的数据服务典型数据服务场景包括
经营分析场景建设指标体系和驾驶舱帮助业务方及管理者实时了解整体业务经营状态业务经营场景建设标签体系更好理解用户画像及需求从而提供精准的产品和业务服务数据分析和挖掘场景构建自助分析和报表服务更好地了解业务情况并做出科学决策对外数据服务场景构建对账单、报表和数据报告服务以帮助商户更好地了解市场需求。 为满足上述场景需求银联商务早在 2015年就引入了Hadoop体系构建了大数据平台并基于Hive构建了离线数仓。该架构整合了来自 MySQL、Oracle、MongoDB 等多业务系统的数据按照T1的时效性归集到Hive离线数仓中经由 Hive数仓各层的加工处理后分别同步至不同组件中提供数据查询服务包括基于Kylin与HBase构建Cube进行指标查询分析并使用Hbase进行增量数据的质量监测同时还将处理完毕的数据同步到Oracle 中提供业务数据查询。 该架构各组件各司其职、整体架构清晰。在移动支付快速席卷的浪潮下支付场景更加多元化总部及分子公司对于数据应用的建设需求不断涌现而传统的大数据平台已经无法高效支撑业务和数据的不断增长痛点逐步展现出来
数据时效性整体数据处理链路较长最新业务数据从生产到应用的时间间隔太长无法充分发挥实时数据的价值查询效率低Kylin早期承担了大多指标查询分析的需求随着业务量增长、Kylin数据预处理的成本越来越高无法支持灵活快速的的分析诉求而hive在应对复杂查询时效性能不足只能依赖于堆加机器这无疑大大增加了硬件资源成本运维成本和扩展性整体架构涉及多个组件运维工作量较大在应对业务需求增长的过程中可扩展性不足无法敏捷响应数据的快速增长和数据应用快速上线的要求
二、OLAP选型 面向各行各业的数千万商户、行业特点和实际需求各不相同在对企业内部众多平台系统以及对客户提供的产品进行全面梳理后银联商务确定了数字化转型要实现的核心目标——“全量打通、准确实时、随需自助、智能交互”。 具体而言“全量打通”即各平台间充分互通、数据融合共享便于更全面掌握数据主题的全方位信息、充分发挥数据的协同效应“准确实时”即充分发挥数据的实时价值并根据技术手段保证数据又“快”又“准”为后续分析打好坚实基础“随需自取”即提供自助式的服务灵活组合、按需取用“智能交互”即充分利用技术手段从被动式的接受服务变成主动式的能力输出提供分析、预测、辅助决策等智能服务响应用户需求、实现双向交互。 而具体到数据服务层面在为内外部客户提供数据服务的过程中银联商务注意到用户对数据分析的性能、分析模式的灵活性、数据服务的稳定性以及数据应用的时效性有着更高的期望因此我们决定对现有架构升级旨在满足新的业务诉求、解决早期架构存在的问题于是在 2020 年正式启动了银联商务数据架构的升级之旅升级目标主要包含几方面
统一、简洁单一系统即可完成数据加工和服务的统一以简化数据处理流程提高工作效率稳定、高效支持高效的数据加工和高性能的数据查询同时系统和平台的稳定性得以充分的保证准确、实时支持数据实时更新以及接入保证数据准确、不丢不重安全、可靠确保数据访问和数据存储的安全性支持集群灾备数据高可靠 基于以上目标进行了深入的调研在对比了多种大数据组件后选择引入Doris 来构建新一代实时数据仓库架构。
三、实时数仓构建 在架构的迭代过程中一方面需要务必保证业务无缝运转、避免系统切换造成业务体验受影响另一方面需要兼顾与旧有架构的兼容、根据实际情况逐步迭代、渐进式调整同时也希望充分发挥全新架构的能力优势因此建设路径逐步明晰
引入实时数据处理和分析链路提升数据时效性推动数据应用从离线迁至实时并持续提升查询分析效率为业务提效打通离线与实时数据链路的屏障统一数据口径和数据服务出口提供一致性的数据服务体验 因此在新的架构中在原有离线数据仓库体系中增加了一条实时链路通过kafka将mysql等各类业务数据库中的实时数据归集并传输到Doris中并利用Flink和 Doris SQL 对数据进行加工处理。在Doris内部构建了从ODS到ADS的数仓分层体系同时基于Doris提供的Multi-Catalog多源数据目录能力打通对Hive数据的查询避免了繁重的数据迁移成本。各上层数据应用统一对接 Doris 即可无需在离线数据和实时数据间进行切换由Doris 统一对外提供查询服务。 这一升级极大提升了数据处理的效率和查询的便捷性当前我们正逐步推进离线数仓向以 Doris为核心的实时数仓迁移为更高效和更大规模的数据管理和分析做好准备。 接下来将介绍基于Doris的实时数仓架构的规划与设计将从数据模型、分桶策略、数据同步与加工方式出现分享实时架构搭建的实践经验。
四、实时数仓体系的建设与实践 在建设数据仓库体系时银联商务遵循边治理、边建设、边赋能的原则数据治理为关键一环而统一规划又是其核心内容。因此数据仓库的统一规划能够确保数据仓库结构设计的合理性不仅有利于后续对架构的管理维护也有利于对数据可靠性和一致性的保障。因此我们在数据仓库统一规划方面采取了以下措施
4.1 数仓分层的合理规划 合理的数仓分层对数据的管理以及查询性能的充分发挥起着关键作用基于Doris丰富的数据模型对数仓的分层进行了提前规划。Doris 数据模型有
Duplicate Key明细模型适用于明细数据查询场景可支持任何唯独的即席查询Unique Key更新模型适用于对数据唯一约束的场景需要支持数据的精准去重或者有数据更新需求可支持大宽表的多流upsert和部分列的更新Aggregate Key聚合模型适用于报表查询场景通过数据的预聚合来加速报表分析 结合实际应用场景和数据模型介绍银联商务数仓分层策略
ODS层主要采用明细模型例如在交易清算场景中银联商务每天有几千万的清算数据需处理清算日期跨度长达一年这就要求所有数据能被完整存储。为了满足这一需求在ODS层选择Duplicate Key明细模型完全按照导入文件中的明细数据进行存储没有任何聚合操作。而部分商户订单数据涉及到订单状态的更新因此采取Unique Key更新模型在数据导入过程中如果商户id以及订单id相同时自定更新成最新状态。DWD与DWS层所采取的数据模型基本相同其本质差异在于对业务数据的抽象程度主要采用的是Unique Key更新模型而部分有明细数据存储的场景还保留了Duplicate Key明细模型。以结算划付场景为例将结算日期作为分区字段表模型为 Unique Key 模型通过这种方式能够实现跨度长达一年结算数据状态的自动更新。ADS层作为高度业务数据的抽象采用了Aggregate Key聚合模型通过对所有结算数据进预聚合可大幅度提高数据查询和分析的效率减少实时计算的压力。
4.2 分桶分区策略的合理设置 分区分桶是优化数据存储和提升查询效率的重要手段合理设置分桶数和分桶字段可以有效提升查询速度和数据加工脚本的执行效率。在数仓应用中我们参考实际数据规模和官网的设置建议会对每一张表均规划了分桶字段和分桶数。例如在分店宽表中经常需要查询分店维度数据因此我们将分店作为分桶字段并根据表的大小设置分桶数。以下是我们在不同数据分片Tablet下Bucket设置的数据可供参考 4.3 多源数据迁移方案 在银联商务各分支机构数据迁移至 Doris 的过程中发现分支机构本地系统采用的数据库种类繁多文件存储格式也比较复杂这给数据迁移工作带来不小的挑战。为确保数据迁移的顺序进行我们针对不用数据和文件格式制定了相应的迁移方案。 Doris支持多种丰富的数据迁移方式无论是离线数据同步还是实时数据同步都能找到高效快捷的数据迁移方式
在实时场景中使用Flink CDC方式实时获取MySQL Binlog 其中一部分数据直接通过Flink CDC直接写入Doris另一部分高流量数据则先同步至Kafka中进行削峰填谷再经由 Flink-Doris-Connector连接器写入到 Doris中在离线场景中数据来源更加多样并且文件格式更加复杂因此采用了多种方式进行数据迁移。对于S3和 HDFS上的历史数据及增量数据使用Broker Load进行批量导入对于Hive及 JDBC 外表存储的数据使用 Insert into 方式进行同步对于文件格式的数据使用Flink Ftp Connector 和 Flink Doris Connector同步因 Ftp 方式在银联商务内部是跨系统的数据文件交互方式文件的格式复杂因此开发了 Flink Ftp Connector可支持复杂的数据格式、支持多换行符等复杂应用场景。 丰富的数据迁移方式使得我们可以轻松地将数据从各类数据库迁移至 Doris 中来同时多文件格式的同步解决了分支机构数据不统一、不规范的问题大大降低了各分支机构数据迁移的难度及成本为银联商务的数据整合和统一管理提供了有力支持。
4.4 全量与增量数据的同步 在大量离线数据同步的过程中业务连续性和数据的准确性保证十分重要因此我们采取了两种方式来应对全量数据同步和增量数据同步。 在全量同步场景中我们首先创建相同表结构的临时表将全量数据导入临时表后、再利用 ALTER TABLE t1 REPLACE WITH TABLE t2语句对临时表和正式表进行原子替换操作该临时表即成为正式表且前端业务查询不会有任何的阻滞。在增量同步场景则创建了新的增量分区将增量数据直接同步至增量分区。
alter table ${DB_NAME}.${TBL_NAME} drop partition IF EXISTS p${P_DOWN_DATE};
alter table ${DB_NAME}.${TBL_NAME} add partition IF NOT EXISTS p${P_DOWN_DATE} VALUES [(${P_DOWN_DATE}), (${P_UP_DATE}));LOAD LABEL ${TBL_NAME}_${load_timestamp} ...
4.5 离线数据加工任务迁移 当前我们已经把离线数仓的数据加工任务直接迁移到Doris进行采取Doris SQL 进行数据加工处理通过调度平台进行任务调度。 以清分流水交易宽表场景为例过去每天需加工三千万条数据在Hive离线数仓采用的TEZ计算引擎进行数据加工在分配2T的计算资源下整条链路加工耗时长达2.5小时。当将数据加工任务迁移至Doris后仅使用过去一半的计算资源即可将整条链路加工耗时缩短为0.5小时整条链路执行效率提升 5 倍以上且单个脚本执行时效也从 8 分钟提升到 10 秒。
五、金融级数仓稳定性最佳实践 当前Doris 在银联商务已广泛应用于多个业务场景服务内部各类经营分析报表、用户标签、自助取数平台等应用并对外部商户提供了对账单、报表、数据报告等多种数据服务因此集群的稳定性和可用性对于平台用户体验和业务连续性而言至关重要任何集群故障或不稳定因素都可能导致业务决策受阻、用户信任度受影响。
5.1 多租户资源隔离 在实际业务运行过程中往往存在多个业务或者不同部门同时查询同一份数据的情况发生在有限的资源条件下往往可能因查询任务件的资源抢占导致查询性能下降甚至集群不稳定同时针对组织架构的不同层级对于数据的可见性要求也不一致因此我们结合自身业务类型以及Doris 多租户资源隔离能力进行了深度应用。
5.1.1 单查询资源限制保证查询间资源可控 在对内部多个应用进行梳理后我们根据业务分析负载对场景和租户进行了细分主要划分为数据加工ETL、数据探索Ad-hoc、数据看板Reporting和数据服务Data Serving四个场景。为确保各个场景及租户之间的独立性我们对每个场景的单查询进行了资源限制。具体而言对每个租户设置了四类Doris账号并对账号的CPU和内存使用资源进行了限制初始值统一设置为5 CPU后续则根据使用情况进行微调以达到适配的资源分配。目前银联商务各场景分配情况如下 该策略的优点在于即使单个租户的资源使用量增加也只会影响该租户在特定场景下的使用 不会对其他租户其他场景产生任何影响有效提升了平台的稳定性。
5.1.2 基于Resource Tag的多租户数据与查询隔离 而面对总-分公司的数据使用场景我们采用了基于Resource Tag的资源组物理隔离方式以确保数据的安全性和独立性。 目前在Doris 中存储了丰富多样的数据基于数据安全的角度考虑对数据可见范围进行了精细划分总公司可以访问到公司层的全部数据而分公司只能访问自身业务范畴内的数据。除此以外还有部分数据是由总公司授权分公司进行查询或者分公司个性化数据需要与总公司数据进行关联。在这一场景之下我们采取了Resource Tag的资源隔离模式将数据和集群可用资源单独划分开来。 具体而言我们为分公司配置独立的资源组将分公司个性化数据以三副本的方式存储到独立资源组中同时将总公司数据设置为四副本将其中三副本存储在总公司资源组中剩余单副本存储到分公司独立资源组中。当分公司查询总公司数据时仅会查询分公司资源组中的单副本数据通过这样的方式即保证了数据的安全性也提高了系统的稳定性及可靠性。具体方案如下 设置 BE 节点标签分配总公司资源组和分公司资源组并在服务器上设置对应标签。 设置数据分布建表时设置 replication_allocation 同时将总分公司比例设置为 3:1该比例可结合总分公司的实际使用情况灵活调整。 设置用户资源组为用户设置对应的默认资源组总、分公司使用各自资源组从而实现总分公司查询隔离。 5.1.3 更灵活的资源隔离方案 基于 Resource Tag 的资源隔离方案实现的是物理层级的资源隔离尽管在独立性方面更佳、但在资源的利用率方面还存在一定的优化空间并且无法保证进程内更细粒度的资源隔离因此 Doris 在 2.0 版本中推出了 Workload Group资源软限制。( Workload Group可限制组内任务在单个BE节点上的计算资源和内存资源的使用)
WORKLOAD GROUP - Apache Doris 从实现原理来看 Workload Group 通过对工作负载分组管理将用户执行的 Query 与 Workload Group 相关联可限制单个Query在BE节点上的CPU 和内存资源的百分比并可以配置开启资源组的内存软限制。当集群资源紧张时可自动终止哪些内存占用较大的查询任务以缓解集群压力。当集群资源空闲时Workload Group使用资源超过预设值时其他 Workload Group 可以共享空闲集群资源并自动突破阙值、确保查询任务的稳定执行通过这一方式实现内存和 CPU 资源的精细化管控。 我们也在持续探索新版本特性与业务的结合后续对于数据加工、数据探索、数据看板和数据服务等场景的单查询资源限制可以通过 Workload Group 来实现并且还可以进一步利用任务优先级和任务排队机制来保证关键业务的优先运转。
5.2 精细用户权限管理 为了满足业务需求和法规合规的要求银联商务建立了严格的用户权限管理制度。该制度明确了不同用户群体的角色和权限确保了用户只能访问其需要的功能和数据。以下为银联商务用户权限管理的方案
用户权限设置针对每个分支机构不同场景的不同用户为用户设置不同的数据使用权限。 库、表、行级权限管理为满足各分公司权限管理需求一般会为每个分公司建立视图该方式操作繁琐且与 Hive 数仓的使用有较大差异可能需要对表、语句进行修改。通过 ROW POLICY机制可以便捷实现库、表、行级的权限控制并可以将原来 Hive 数仓的任务较为无缝地迁移到 Doris 中。 列级权限管理当前采用构建视图的方式进行列级权限管理。 5.3 集群稳定性保障
5.3.1 SQL熔断 平台对内部用户开放后经常会面临用户查询SQL不规范消耗过多资源的情况针对这种情况采用SQL熔断机制对高危SQL及时熔断以保证集群的稳定运行
5.3.2 导入并发控制 考虑经常需将历史数据同步到平台中这就会涉及大量数据修改任务可能对集群会造成比较大的压力。因此使用了 Unique Key 模型的 Merge-on-Write 更新模式、启动了Vertical Compaction 和 Segment Compaction 并通过调整 Compaction合并参数调整以控制数据导入频率减轻集群的 压力。
5.3.3 网络流量控制 针对离线、实时不同场景设置了 QoS 通过 QoS 策略进一步实现网络隔离。考虑到银联商务内部有上海和武汉两套集群异地网络交互过程中的流量至关重要因此我们通过 QoS 策略来实现了精确的网络隔离操作确保不同场景下的网络服务质量与稳定性。
5.3.4 监控报警 为满足公司内部夜班值班监控的要求我们使用 Doris 与内部监控报警平台进行对接。将Doris 相关的监控报警与声光监控、CU 即时通讯软件以及邮件进行了对接实现了对问题的实时监控和处理。 5.4 基于 CCR 的集群灾备能力 对于金融企业而言服务稳定性和数据安全性是至关重要的一环而灾备方案是确保业务连续性和数据安全性的重要措施通过集群灾备能够在灾难或故障发生时迅速恢复业务和数据最大程度地减少损失和风险。 对于银联商务的核心业务数据我们期望能够实现跨集群异地的灾备因此我们基于跨集群数据复制能力构架主备集群的双活方案。正常业务查询访问的是主集群关键业务数据会同时写入至备用集群且保持实时更新这样即使某个集群发生宕机事件也可以迅速切换至备用集群以快速恢复核心业务和数据。
六、总结与规划 截至目前 Doris已经服务了经营分析报表、用户标签、自助取数等多个内部业务以及对外商户数据服务场景。 仅以对账单查询场景为例在半年对账单场景下数据查询时效从 8 分钟降低到 3 秒提速超 100 倍在全年对账单查询中耗时也缩短至 2 分钟内多数典型查询场景性能提升了 10- 15 倍整体查询分析效率得到极大幅度提升。此外数据导入性能平均提升了 2- 5 倍数据处理加工速度效率提升了 3- 12 倍数据应用的时效性得到大幅增强。 未来还将继续深入使用 Doris 并在以下三个方面进行探索和实践
统一查询引擎将Doris作为联邦查询的统一出口通过Multi-Catalog多源目录 接入底层各数据源。同时将Doris完全作为对外服务的统一出口实现数据查询服务的统一路由为用户提供更便捷、更高效的数据查询服务。存算分离架构进一步探索存算分离架构实现资源的弹性扩缩容并将离线数仓任务全部迁移到Doris中实现实时化改造以及计算负载的进一步隔离自动化运维对接公司内部的业务流程实现相关工作的自动化运维处理并完成业务问题的快速排查基于 Doris 实现更灵活的数据血缘分析帮助银联商务更好地理解数据之间的关系和影响 参考文章
银联商务Apache Doris 赋能“科技银商”助力金融机构挖掘增长新机遇