O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Streaming architecture zx_dec2015

856 visualizações

Publicada em

A talk I gave on OpenSourceChina conference in Dec 2015. The talk is about how netflix builds its data pipeline platform to handle hundreds of billions of events a day. How everybody should leverage the same streaming architecture to build their apps.

Publicada em: Engenharia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Streaming architecture zx_dec2015

  1. 1. 从零到千亿级实时数据处理 浅谈“流”化你的应用构架
  2. 2. – https://netflix.github.io/ – http://www.oschina.net/project/netflix 链接
  3. 3. •Netflix日处理千亿级数据平台 •大数据技术简短历史 •深潜流构架及技术基础 •为什么你的App也“流”的转! 话题
  4. 4. 大家来回忆一下: 如何用最基础的数据结构实现hash table? Before we start...
  5. 5. 大家来想一下: 为什么“有些人”总不让你用全局变量? Before we start...
  6. 6. ● 日处理七千亿条/1+ PB 数据 ● 顶峰每秒处理1千万条/20+ GB 信息 ● 3000+ Kafka brokers, 12 clusters in 3 regions ● 10,000+ Docker容器部署 We help Produce, Store, Process, Move Events @ Cloud scale Netflix Keystone Pipeline
  7. 7. Keystone构架 Stream Consumers Samza Router EMR Fronting Kafka Consumer Kafka Control Plane Event Producer KSProxy
  8. 8. ● 横向可扩展构架 ● 完全构架在AWS云端基础设施上 ● At-least-once 投递保证 ● 容纳back pressure, 容纳云端不稳定基础服务 ● Sink level isolation ● 同时支持数据中心内及跨洲际数据中心failover ● High availability, scalability & durability ● Streaming Architecture Netflix Keystone Pipeline
  9. 9. Big Data History 为什么要用Streaming Architecture?
  10. 10. Big Data History
  11. 11. Big Data History
  12. 12. Big Data History
  13. 13. 对流数据的现实需求 ● 数据爆炸性增长
  14. 14. 对流数据的现实需求 ● 数据爆炸性增长 ● 数据处理模式的需求变化
  15. 15. 如何实现hash table?
  16. 16. 教科书说: 如何实现hash table?
  17. 17. 如何实现hash table?
  18. 18. 如何实现hash table?
  19. 19. 如何实现hash table?
  20. 20. Commit log Commit log 是很多分布式系统中的核心 ● Database Replication ● Paxos Consensus ● Kafka ● … …
  21. 21. 1. 传统应用构架从零开始
  22. 22. 1. 传统应用构架从零开始
  23. 23. 2. 传统应用构架 - Scale up DB!
  24. 24. 3. 传统应用构架 - Caching! res = cache.get(key) if (!res) { r = db.get(key) cache.put(key, r) } return r;
  25. 25. 3. 传统应用构架 - Caching! 缓存分布式系统难题: ● Cache coherence ● Cache Invalidation ● Consistency issue ● Cold start / bootstraping 为什么? ● 分布式系统中网络延迟永远大于零 ● Race condition ● Source of truth和客户端看到的永远可能不一致
  26. 26. 3. 传统应用构架 - Caching!
  27. 27. 4. 传统应用平台构架 - multi-layered!
  28. 28. 4. 传统应用构架 - multi-layered! 分层组件之间的Reconciliation 协议 ● 最终一直性 (eventual consistency) ● 轮询协议 (polling protocol) ● 物质化视图(materialized view)
  29. 29. ? 为什么保存状态的数据库一定要在构架的最底端?
  30. 30. 介绍流构架
  31. 31. 介绍流构架
  32. 32. 流构架特性 ● 数据不可变性 ● 顺序可能很重要 ● Real time & Reactive ● Request / Response ⇒ Subscribe / Notify ● 预先计算好的缓存 ● 流构架可以迭代组合 ● 同一个数据流可产生不同的物质化视图 ● Delivery guarantee ● stream everywhere!
  33. 33. 核心实现细节 + *Samza可由其他streaming processing framework替代。
  34. 34. 核心实现细节 为什么Docker和流处理是天生一对?
  35. 35. 核心实现细节
  36. 36. Streaming Architecture Questions?

×