为了解决2020年遗留的问题 , 2021年双11对实时数仓进行升级 , 采用新一代高可用及灾备方案 , 在对单链路进行充分的压测评估以及长应急预案外 , 实例内使用多副本+共享存储的方式 , 除了在出现未知问题时可以快速切换副本来提高业务的可用性外 , 还极大的降低了构建双链路的成本 。 同时在面对大促和日常流量时 , 可以快速缩容 , 提高架构的整体灵活性 , 在成本和效率上相比去年更加的平衡 , 实现生成高可用 , 成功大规模落地双11 。
下面将会具体介绍今年的高可用及灾备方案 。
四 业务方案 整体数据链路同2020年保持一致:数据源数据通过Flink ETL处理后实时写入Hologres , 行存表用于在线服务场景 , 列存表用于复杂多维分析场景 , 再由Hologres通过通过不同的场景直接对接上层应用 。 在去年方案的基础上 , 对架构进行升级 , 对Hologres服务和分析场景进行集群隔离以及高可用部署 , 组成当下实时数仓3.0架构 。 注:部分不核心业务由于历史原因暂时无法下线 , 所以由Hologres同步至某DB引擎提供服务 。
升级1:多种隔离方式满足生产高可用
在高可用部分 , 今年的方案升级主要如下:1)服务和分析集群隔离采用行存和列存两个实例集群 , 有效隔离行存服务和列存分析场景下对于QPS/RT不同要求的能力 。
行存集群承载核心实时数据 , 主要承担与Flink高频的交互(数据写入、Binlog消费、维表关联) , 同时提供比如数据特征、用户画像等在线点查服务 , 实现在线推荐 。列存集群主要用于复杂多维分析 , 由Flink实时写入 , 应用于实时数据大屏、实时监控等一系列核心场景 2)分析场景读写分离高可用和灾备对于大促期间高保的列存分析核心场景 , 启用多实例共享存储读写分离高可用和非共享存储灾备的能力建设 。
读写分离高可用:多个实例共享存储 , 主实例具备完整能力 , 数据可读可写 , 权限、系统参数可配置 , 而子实例处于只读状态 , 所有的变更都通过主实例完成 , 实例之间共享一份数据存储 , 实例间数据异步实时同步 。 这个方案实现了完整的读写分离功能 , 保障不同业务场景的SLA , 在高吞吐的数据写入和复杂的架构作业、OLAP、AdHoc查询、线上服务等场景中 , 负载之间物理上完全隔离 , 不会因写入产生查询的抖动 。 同时当某个子实例出现问题时 , 可以在其余子实例间紧急切换 , 也不会带来数据一致性的问题 。灾备:在多机房部署多个实例 , 实例间不共享存储 , 数据通过实例间进行实时同步 , 数据冗余在多个文件系统 , 在集群出现问题时 , 可做紧急切换 。日增量数据在数十TB的规模下 , 无论是共享存储的读写分离高可用还是非共享存储的灾备模式 , 同机房/跨机房实时数据同步延迟都低于10ms , 完全满足我们对于大促高保场景的数据时效性要求 。
升级2:实时链路优化提高吞吐
对于核心场景 , 在大促流量洪峰下查询需要保持高性能 , 写入也同样需要保持高吞吐 , 才能不影响业务的下一步决策 , 例如每年双11交易峰值 , 对写入和Binlog消费的压力都比较大 , 因此实时链路的优化与保障需要格外处理 。 今年针对大流量场景的任务调优 , 在实时链路上我们针对并发、攒批、connector等都做了相应的优化 , 保证了高吞吐写入 , 降级写入延迟 , 满足不同业务系统的需求 。
优化写入connector的带宽策略 , 避开VIP带宽由5GB/s到20GB/s的限制 。大流量的行存表扩容shard数 , 比如交易表 , 提高写入并发能力 。大流量的任务选择合适的并发 , 比如交易表我们采用的参数是Binglog并发:512、sink并发:512、batch size:512、buffer size:20000、ingore delete:true 。合适的攒批能力:选择更加合适的connector的攒批以及server端的攒批 , 交易场景的输入流量和输出流量的峰值差距能够达到30% , 一定程度上具备削峰填谷的效果 。为什么要采用这样的方案 , 有比较强的场景原因也有比较客观原因造成的方案折中:
相关经验推荐
- 湖北|家庭网络怎么布线怎么安装?电信装维师傅分享给大家
- 湖北|vivo坚持性价比,满血骁龙芯+LCD屏+五千毫安,仅1429元
- 湖北|电脑固态硬盘和500G硬盘有什么区别吗?
- 5g手机|BaroccoMistel密斯特MD770分体式机械键盘拆解简评
- OPPO|OPPO牵头!智慧车联开放联盟ICCOA正式成立,车机互融生态稳了?
- 瑞丰光电|瑞丰光电Mini/Micro LED湖北生产基地开工