搜索

pdf文档 1.1 Go在大数据开发中的经验总结

6.37 MB 38 页 0 下载 1 浏览 0 评论 0 收藏
所属分类: 后端开发 / Go
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档总结了七牛云孙健波在GopherChina 2017上分享的Go在大数据开发中的实战经验。核心围绕Pandora平台,该平台每天处理上百TB、2000+亿条实时数据增量。文档指出数据传输的常见神话包括上游数据产量稳定、下游服务稳定可用、速度仅受一方影响,并分析了链路损耗问题。为解决海量数据实时导出中的Lag(延迟)问题,提出了单机模型核心:一个repo对应一个task,包含MQ、多个sink和磁盘队列;通过transaction资源池控制数据进出MQ保证原子性,重启时数据通过磁盘sink流入本地磁盘避免丢失。还介绍了基于key hash的平衡调度算法,按task字符串排序平均分配到节点,提升资源利用率和任务管理能力。
AI总结
七牛云大数据工程师孙健波在GopherChina 2017上分享了Go在大数据开发中的实战经验。核心问题是海量数据(每天上百TB、2000亿+条)实时导出时面临的**延迟(Lag)**问题,本质是数据流动的效率问题。 **常见误区与挑战:** - 假设上游数据产量稳定、下游服务稳定、速度仅受单方影响,但实际中链路损耗严重,吞吐量受拉取、链路承载、推送三方共同制约(如网络抽风、下游响应慢、网卡打满等)。 **解决方案思路:** 1. **上下游解耦**:将拉取与推送分离,通过数据预取、队列暂存、并行处理提升效率。 2. **任务分割与标准化**:大任务分解为小任务,每个任务承载固定流量,流量增加时水平扩展。 3. **提升资源利用率**:通过调度与平衡压榨机器性能。 4. **任务管理与监控**:提供运维、运营、监控能力,并更深入理解下游行为。 **单机模型核心设计:** - 每个数据仓库(repo)对应一个独立任务(task),任务间不共享。 - 每个任务包含一个内存队列(MQ)、多个数据出口(sink)和一个本地磁盘队列。 - 通过**事务池(transaction pool)**控制数据进出MQ,保证原子性:数据进入前检查资源,发送失败则回滚。 - 重启时,数据通过磁盘队列以sink形式重新流入,确保服务升级时内存数据不丢失。 **调度算法:** - 采用基于**key哈希的平衡调度**,将任务按字符串排序后平均分配到各节点,确保同类任务发往同一生产者,提高后端地址的命中率。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 26 页请下载阅读 -
文档评分
请文明评论,理性发言.