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