Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Streaming architecture zx_dec2015

867 views

Published on

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.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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?

×