【FFA 2026】Real-Time Analysis 2 Flink+Hologres高性能数据同步优化实践_第1页
【FFA 2026】Real-Time Analysis 2 Flink+Hologres高性能数据同步优化实践_第2页
【FFA 2026】Real-Time Analysis 2 Flink+Hologres高性能数据同步优化实践_第3页
【FFA 2026】Real-Time Analysis 2 Flink+Hologres高性能数据同步优化实践_第4页
【FFA 2026】Real-Time Analysis 2 Flink+Hologres高性能数据同步优化实践_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

于立强于立强写入类型AppendOnly:传统追加日志(无关联性)InsertorUpdate/Replace:高频覆盖与部分列更新(画像、CDC同步)核心技术矛盾写时合并(MergeonWrite)查询极速,但写入代价高读时合并(MergeonRead)写入极速,但查询代价高严苛的业务刚需FlinkInput列存表->FlinkInput列存表->自动采用MergeonWrite,保证OLAP分析性能Hologres行列共存表行存表->自动采用MergeonRead,保障高频写入性能消除上游FlinkFailover导致的数据重发强主键驱动:天然支持强主键模型,提供精准且极低成本的行级更新与删除快速定位旧文件(PKIndexLookup)Step2:DeleteBitmap按位标记删除Step3:内存追加新记录Step4:异步Flush落盘Frontend极速链路针对符合Pattern的Insert/Update/Delete操作,完全绕过复杂的QueryOptimizer,直接生成轻量级FixedPlan通信协议升级兼容PostgresExtended协议,支持PreparedStatement,SQL解析开销极低Backend纯异步引擎Backend纯异步引擎纯异步C++架构+HOS事件驱动,辅以多级Cache,减少•用户不需要实时写入,接受分钟级延迟•用户希望降低写入Holo的资源消耗批量写入目前瓶颈•批量写入需要获取表锁,需要在Flink中提前shuffle,从而避免锁冲突•批量写入中间存在额外的格式•批量写入攒批受限,无法充分利用serverless资源写入模式860k870kCheckpoint耗时30s,max1.5min1min+,max4min18.04cores24.88cores14.76cores17.42cores传统双流Join痛点•Flink算子需维护海量双流历史State•CPU/内存消耗极高,Checkpoint动辄数十秒甚至超时DeltaJoin核心理念/无状态计算•零本地状态:不在Flink算子内维护状态•异步点查:复用源表(Hologres)已有存储,利用双向LookupJoin直接向Holo抛弃快照依赖:无需底层存储引擎支持繁重的快照隔离绝对实时:始终查询Hologres中当前最新的数据,满足高吞吐要求,确保结果的最终一致性(EventualConsistency)Flink配置SET‘table.optimizer.delta-join.strategy’=‘force’Hologres表级要求必须开启Binlog;必须开启异步点查(lookup.async=true);不支持Delete操作JoinKey限制必须包含全主键、DistributionKey或全局二级索引电商:订单流⋈订单明细电商:订单流⋈订单明细物流:运单流⋈轨迹坐标最佳实践场景(海量数据+高基数key)46%/49%FlinkFlink本地状态100%CheckpointCheckpoint耗时8s降至700ms全局二级索引传统点查瓶颈V4.0核心突破:全局二级索引强业务灵活性•强一致性:存储方式默认与原表强一致以覆盖查询字段,彻底消除回表查询开销自V3.2版本起,Hologres大幅增强FixedPlan表达能力,支持多种表达式高效执行覆盖写入场景INSERTINTOtest_tASoldcol=excluded.col+old.col,ts=excluded.tsexcluded.ts>old.tsnow()excluded.col+old.colexcluded.ts>old.ts覆盖查询场景多版本冲突更新sink.insert.conflict-update-set多版本冲突更新sink.insert.conflict-update-set主键冲突时的执行定制化更新逻辑示例:col1=old.col1+excluded.col1(实现新老值在holo里动态叠加)防乱序状态过滤sink.insert.conflict-where基于状态或版本号的精确校验示例:excluded.seq>old.seq(确保Flink故障恢复时,回放数据的绝对正确性)性能痛点:传统protobuf内存碎片化性能痛点在超高RPS吞吐下,传统protobuf协议处理变长数据(如repeatedstring)时,极易触发频繁的内存分配系统损耗海量零碎对象的创建与回收导致严重的内存碎最终后果Hologres深度自研底层二进制内存通信格式——Binaryrow内存池化:通过一次性预分配足够的连续内存块作为buffer,后续将实际变长数据直接encode至buffer中将单行数据的多次碎片化内存分配动作,合并为一消耗实时写入支持Binaryrow其中FrontendCPU下降39%吞吐量(RPS/cor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论