The Art of Data Intensive Infrastructure

jszhaogy

贡献于2016-01-28

字数:0 关键词: 分布式/云计算/大数据

The Art of Data Intensive Infrastructure A Cutting-Edge Overview Yingfeng Zhang CTO Office, Suning Ltd 11.28.2015 议议议程程程 IO模型—The Art of Indexing Sketching—The Art of Data Stream Big Query——The Art of Big Analytics 分布式存储引擎概览——The Art of Distributed Storage 以日志为中心的设计——The Art of Architecture 下一代PaaS—The Art of Datacenter 2 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 IO模模模型型型—The Art of Indexing 3 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 大大大数数数据据据意意意味味味着着着什什什么么么 不是说TB,PB就是大数据: 内存无法承载 需要数据结构 如果想理解数据库内部数据结构的性能,就需要了解IO模型 4 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Modeling I/O Using the Disk Access Model How computation works: Data is transferred in blocks between RAM and disk The # of block transfers dominates the running time Goal: Minimize # of block transfers Performance bounds are parameterized by block size B, memory size M, data size N. 5 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Searching in a B-tree Question: How many I/Os for a point query or insert into a B-tree with N elements? Answer: O(logN B) 6 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Sequential VS High-Entropy Inserting for a B-tree Sequential inserting is limited by disk bandwidth High-entropy inserting leads to random IO 7 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Write-optimized Data Structures Performance Data structures: LSM Tree Systems: BigTable, Cassandra, HBase, LevelDB If B=1024, then insert speedup is B/logB ≈ 100 Hardware trends mean bigger B, bigger speedup 8 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 A Simple Write-optimized Structure O(logN) queries and O((logN)/B) inserts: A balanced binary tree with buffers of size B Send insert messages down from the root and store them in buffers When a buffer fills up, flush An insert/delete costs amortized O((logN)/B) per insert or delete A buffer flush costs O(1) and sends B elements down one level It costs O(1/B) to send element down one level of the tree. There are O(logN) levels in a tree 9 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Log Structured Merge Tree An LSM tree is a cascade of B-trees: 10 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Log Structured Merge Tree Search cost: logN B + logN/2 B + logN/4 B + ... + logB B = O(logNlogN B) How to improve LSM-tree point queries? Caching Bloom filters Fractional cascading 11 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Fractional Cascading Searching one tree helps in the next. If we add forwarding pointers to the first tree, we can jump straight to the node in the second tree, to find c: 12 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 COLA—Fractional Cascading Data is stored in logN 2 arrays of sizes 2, 4, 8, 16,.. Search: O(logN 2 ) Insert: O((1/B)logN 2 ) amortized block transfer if B = 4KB: : COLA search is 12 times slower than B-tree : COLA insert is 341 times faster than B-tree 13 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 LSM—Fractional Cascading Search: O(logN B) Insert: O((logN B)/B) Insert: But lots of I/O wasted during merging 14 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Optimal Tradeoff—B − tree Point queries cost O(logN√ B) = O(logN B) Inserts cost O((logN B)/ √ B) Open source Buffered Btree: https://github.com/weicao/cascadb 15 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Optimal Search-Insert Tradeoff 16 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Fractal Indexing Buffered Btree + COLA 17 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 TokuDB—Above FractalIndexing Optimal read-write tradeoff: Easy Full featured: Hard: Transactions, ACID-compiant crash recovery Bulk loads Compression Concurrency control TokuDB based solution: MySQL with TokuDB backend MongoMX—MongoDB with TokuDB storage engine TokuFS—TokuDB based file system Literature: Cache-Oblivious Data Structures for Massive Data Sets 18 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 TokuTek Founder : Michael A. Bender:Stony Brook University : Martín Farach-Colton:Rutgers University : Bradley C. Kuszmaul:MIT Engineers : Zardosht Kasheff: Students of Bradley : Leif Walsh:Students of Michael 19 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Sketching—The Art of Data Stream 20 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Data Stream In Action Web访问分析 21 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Data Stream In Action 搜索引擎查询 22 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Data Stream In Action 网络监控 23 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Data Stream In Action 金融时间序列 24 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Lambda Architecture 数据流:分布式,持续,随时间变化,噪音,... 25 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 Warm up: Stream of m item xi Want to compute statistics of what we’ve seen Small cardinality n, trival to use dictionary, memory is O(n) Large cardinality n, exact storage of counts impossible 26 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 Heavy hitter detection: find k heaviest items Applications: Advertising (find frequent clickers, popular ads) News (popular keywords, trending terms) Web search (popular queries) Network security (detect attacks, heavy resource users) 27 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 Heavy hitter detection, space-saving algorithm: Initialize k pairs (counti = 0, labeli = ∅) in list T Observe x : if x is in label set of T, increment counter : else locate label with lowest count, increment its counter and set labeli = x https://github.com/izenecloud/izenelib/tree/master/include/ util/datastream/topk/fss 28 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 Beyond heavy hitter detection: Check for previously seen items : but don’t need to have counts, just existence Check for frequency estimate : but don’t want to store labels : but want estimate for all items (not just heavy hitters) : but want to be able to aggregate Bloom filter, count-min sketch 29 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 Bloom filter: Bit array b of length n : insert(x): for all i set bit b[h(x,i)] = 1 : query(x): return TRUE if for all i b[h(x,i)] = 1 Only returns TRUE if all k bits are set, no false negatives but false positives possible Cool things : Fast approximate set union : Set intersection via AND : Counting Bloom filter » Plain Bloom filter doesn’t allow removal » Counting Bloom filter keeps track of inserts » Cutting edge implementation—Cuckoofilter : Time-dependent aggregation—Timing Bloom filter https://github.com/izenecloud/izenelib/ blob/master/include/util/TimingBloomFilter.h 30 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 Count min sketch 小内存消耗 快速更新 快速检索 这就是Sketch的定义 31 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 例子:计算共现次数 78M word corpus 63k unique words 118M unique word pairs 简易方案:Just Hadoop it! 采用Count min sketch 不再需要存储word pairs本身 节约30多倍的存储空间,几乎没有错误 32 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 基数—Cardinality 应用: 计算独立访问数 算法: HyperLoglog 33 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 综合: 设计一个实时日志服务器,在海量日志流中快速获取top-K频繁 项 34 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 综合: Top-K计算器 35 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 Resources: Massive logging server: https://github.com/izenecloud/sf1r-logserver Stream lib: https://github.com/addthis/stream-lib 36 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 其他 近似Key-value存储—Fujimap : Bloom filter变种 : 只存放整数key-value : 相比传统hashtable没有空间损耗 37 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建实实实时时时分分分析析析 如果不能用可忍受的开销处理数据流,Sketch和近似计算是杰出方案 商业: Big query(Sawzall + sketch)—Google 2007 近似查询数据库: BlinkDB—Spark生态系统组件之一 Sketch技术在阿里得到大规模使用是2013年 Sketching的其他应用 降维 : 图像搜索—利用Sketch给每个图片生成指纹 : LSH局部敏感哈希—近似最近邻搜索 : 特征哈希—大规模点击率预估,百万乃至十亿级别特征 38 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Big Query——The Art of Big Analytics 39 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 OLAP的的的分分分类类类 传统分类 : MOLAP—Data Cube » Apache Kylin : ROLAP » Greenplum,基于PostgreSQL MPP数据库,Hive和Big Query的出现—Index Or No Index? : Hive : Impala : Presto : Tez : Drill Ad hoc 40 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 OLAP的的的典典典型型型场场场景景景 大批量加载 复杂查询条件—Join,分组,过滤,聚合 很少需要随机修改 针对场景的简化 1. Immutable » No Index,避免数据注入开销,大多数商业产品 如Netezza,Teradata也是Linear Scan » Data Streaming + Sketching技术 » 列存—Parquet格式 » 在加入Simple Index基础之上的Linear Scan性能上限估 计—15MB/秒 2. Aggregation Only » Druid » Pinot 41 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 传传传统统统OLAP Apache Kylin : 维度灾难 : 解决方案,维度切分,人工干预Data Cube构造 : 底层复杂查询仍然基于Hive Greenplum : 尽管是ROLAP,但并不过多依赖Index—Ingestion速度高 : 基本可类比为有Index的Linear Scan 42 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Ad Hoc Druid, Pinot,雷同的设计,解决相同的问题—同类问题的最佳 设计 : 列存 : Data Streaming—Kafka Ingestion : 时间序列存储—Pre-computation : 聚合—Sum,Max,Min,Avg,Dist : No Join : 压缩位图 » 倒排+正排,可确保分组和过滤性能最高 » 基于位图的倒排索引空间最节省 Select Aggr() From collection Group by Where Condition 43 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 基基基于于于搜搜搜索索索的的的OLAP 搜索天然对Group By和Filter友好 在Druid/Pinot的适用场景,表现不如前两者 在更大规模的数据集合上,索引本身所占据的体积跟原始数据集 同一级别 : 数据加载性能不如Linear Scan : 大规模集群上查询性能没有明显优势 44 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 数数数据据据可可可变变变怎怎怎么么么办办办??? ROLAP Kudu KiloDB 45 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 分分分布布布式式式存存存储储储引引引擎擎擎概概概览览览——The Art of Distributed Storage 46 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 CAP与与与ACID C在CAP和ACID的场景含义完全不同 : CAP的C代表多副本的数据是否一致 : ACID的C代表数据可见正确性,跟I密切相关,I决定C的程度 : 单机单记录的ACID中,C则代表索引和堆文件数据同步 A和I在ACID中更加重要—协调者不可避免 :A要求参与事务的每个机器都知道其他机器是否能够提交或退出 :I导致等待—冲突检测 绝大多数最终一致数据库只实现单记录的ACID 47 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 单单单机机机事事事务务务 事务的核心是锁和并发访问问题 : Dirty Read—读取已修改但未提交事务的数据 : Lost Update—一个事务覆盖了另一个事务的修改但并不知悉 : Non-repeatable Read—一个事务发现它读取的数据被另一个事务 修改 : Phantom Read—同一个事务不同时候执行返回不同的结果 锁实现决定隔离级别 : Read Committed—基本读写锁,避免Dirty Read,但允许Lost Update/Non-repeatable Read/Phantom Read : Cursor Stability—利用共享锁锁住当前记录直到游标移动到下一条 记录。避免Lost Update : Repeatable Read—读过的记录都会防止共享锁,避 免Non-repeatable Read : Serializable—RR基础之上,采用"范围锁"锁住满足条件的记录, 避免符合事务查询的数据中产生新的记录,解决Phantom Read 48 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 单单单机机机事事事务务务 MVCC—多版本并发控制(其实就是Copy On Write) : 降低锁开销,写不阻塞读,提高并发能力 : 数据库必须能够决定事务中记录的哪个版本是有效数据 : 实现难点 » 多版本导致的垃圾收集 » 一个读请求应该读哪个写之后的数据—逻辑时间戳(保证先后顺 序)Oracle SCN,InnoDB Trx-Id等 : 两种实现方式 » 在数据库中存放记录的多版本,定期垃圾收集—PostgreSQL » 只保留最新版本的数据,但如果需要,从WAL日志恢复旧版本数 据—Oracle/MySQL : MVCC实现隔离级别存在风险 » MVCC增加了快照隔离级别,可能读取历史版本数据,不同实现可 能映射到不同隔离级别(RC或RR) » MySQL的Serializable是基于锁实现的,而低隔离级别RR(实质是快 照隔离)会有Lost Update(Write Skew) » PostgreSQL的Serializable,改进的快照隔离,消除锁并且避免Write Skew 49 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 数数数据据据库库库事事事务务务列列列表表表 50 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 分分分布布布式式式事事事务务务 从2PL到2PC : 所有的单机事务都会采用2PL,将加锁/解锁分为两个完全不相交 的阶段 : 加锁,解锁操作如何分布式—2PC » 将Commit解锁的过程在多台机器完成 » 谁负责跨机器提交 » 网络出问题怎么办 51 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 分分分布布布式式式事事事务务务 从2PL到2PC : 由第三者(协调者)负责跨机提交 : 一个参与者Commit成功,协调者会一直死等另一个参与 者Commit : 参与者,协调者如何高可用—Spanner » 协调者必须多机,且Prepare和Commit都需要记录日志 » 日志都会利用Paxos协议复制到所有副本中,无论是协调者或参与 者宕机,都会有其他副本代替它们完成2PC过程而不至于堵塞 : 事务延迟大大超过单机 52 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 分分分布布布式式式事事事务务务 MVCC事务的思路在分布式的应用 : 逻辑时间戳针对事务单元进行排序 : 分布式系统如何确定逻辑时间戳—Spanner分区内事务 绝大多数最终一致数据库不提供跨行事务 怎么办—FIT Trade Off : 牺牲公平性保证事务和吞吐量 » CalvinB—全局时序 » AtlasDB,Percolator(Omid)? : 降低事务隔离级别保证公平和吞吐量 » Cassandra » RAMP事务 : 牺牲吞吐量保证事务隔离级别和公平性 » Spanner/F1—2PC OceanBase单列—绕过问题,用单机更新避免分布式事务,坑爹 53 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 其其其他他他常常常见见见存存存储储储引引引擎擎擎评评评价价价 Redis : 单线程,复杂网络环境下拥塞严重 : 集群方案(3.0)设计不完备 » 节点不能自动发现 » 槽分配手动指派,不能自动rebalance » Slave冷备,负载不均衡(以节点为单位负载而不是分区) » 脑裂,且恢复后脑裂期间数据丢失 » 客户端复杂,维护槽分配路由表,内存开销大(数百MB) » 部分问题由湖南卫视的cerberus方案解决 : 替代集群方案—Codis » 对Redis有侵入性—用于数据迁移,且迁移慢 » RebornDB中尝试槽同步复制 » 仍然没有多副本,只有HA » 理想方案仍需自己攒 : Memcached » Facebook Memcached—租约,多副本 » arcus-memcached—List/Set/B-Tree 54 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 其其其他他他常常常见见见存存存储储储引引引擎擎擎评评评价价价 MongoDB : 不是严肃设计的数据库 : 丢数据 : 存储引擎 : 解决方案 » TokuMX » Ark 55 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 分分分布布布式式式KV存存存储储储 RebornDB Aerospike CouchBase Tair Dynomite Elliptics MCRouter 56 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 值值值得得得关关关注注注的的的数数数据据据库库库 Cockroachdb—基于逻辑时间戳的分布式事务 TiDB—Spanner,HBase事务 VoltDB—基于时间戳的分布式事务,全内存 ConcourseDB—改进的2PC Omid—Percolator,HBase增加多行事务 57 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 以以以日日日志志志为为为中中中心心心的的的设设设计计计——The Art of Architecture 58 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建数数数据据据密密密集集集型型型的的的分分分布布布式式式架架架构构构 日志是系统构建的一切基础 以日志为中心的设计满足大多数场景 经验总结自Linkedin的架构演进 59 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 日日日志志志无无无所所所不不不在在在 数据库ACID 数据库多副本—Binlog Raft一致性算法 Kafka消息队列 分布式系统 60 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 混混混乱乱乱的的的系系系统统统 数据库,缓存,搜索引擎,BI,后台任务,大数据 如何确保多数据源之间的一致性? 61 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 双双双重重重写写写入入入 双重写入导致冲突 : 按图中时序结果:存储1和2的Key X值分别为A和B 62 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 另另另一一一个个个例例例子子子 站内短信 1. 写入未读短信 2. 更新计数器 2PC不是一个好选择 63 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 以以以日日日志志志为为为中中中心心心的的的基基基础础础架架架构构构 避免双重(乃至多重)写入 本质—操作串行化 : 考虑数据库中的ACID的Isolation 64 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 以以以日日日志志志为为为中中中心心心的的的基基基础础础架架架构构构 只能做到最终一致 更强的一致性需要 : 强一致性分布式日志—基于SSD的Tango : 把数据库放到日志前,但需要借助Change Data Capture系统 65 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 以以以日日日志志志为为为中中中心心心的的的基基基础础础架架架构构构 Kafka : 把日志暴露给使用者,而不仅仅是个消息队列 : 不同分区采用独立的日志,因此不同分区可以服务不同系统 状态复制机Replication State Machine : Bookeeper : Raft 66 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 以以以日日日志志志为为为中中中心心心的的的基基基础础础架架架构构构 Change Data Capture : 数据库架构模式 : 捕获数据库的数据变化,为其他组件服务 » MySQL—Binlog » Oracle—GoldenGate » MongoDB—Oplog » CouchBase—Changes feed : Linkedin Databus,Facebook Wormhole 额外用途—数据库高可用设计 67 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 以以以日日日志志志为为为中中中心心心的的的基基基础础础架架架构构构 Change Data Capture : 容易做到跨机房高可用设计 : 京东双十一多机房交易系统—完全抄袭自Linkedin 68 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 缓缓缓存存存数数数据据据一一一致致致 当双写不可避免,需借助租约 协议—64位的令牌,与客户端 初始请求的主键绑定 : 缓存不命中时,给客户端一 个租约 : 写入值到缓存中时需提供租 约,缓存通过令牌仲裁并发 写操作 : 如果收到了对这个数据项的 删除请求,缓存使该租约令 牌失效 : 无效令牌导致向缓存写入失 败 阿里分布式缓存支持类似机 制—版本号 69 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 下下下一一一代代代PaaS—The Art of Datacenter 70 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Cloud Native 包含系列技术和管理,帮助把业务迁移到云平台 71 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Cloud Native Cloud Native的五个层面 : 康威定律—组织结构决定云系统架构 : DevOps—开发运维紧密合作才能按时交付产品与服务 : 持续交付—快速安全地部署产品到生产环境 : 微服务—细粒度服务划分 : 敏捷基础设施—弹性,按需的计算,存储,网络资源 Cloud Native的背后诉求 : 更快的上线速度 : 细致的故障探测和发现 : 故障出现时自动隔离 : 故障自愈 : 方便的水平伸缩 72 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Cloud Native Cloud Native可解决如上诉求 : 持续交付、DevOps、微服务解决–>更快的上线速度 : 微服务解决–>细致的故障探测和发现 : 微服务解决–>故障时能自动隔离 : 敏捷基础设施、微服务解决–>故障时能够自动恢复 : 敏捷基础设施、微服务解决–>方便的水平扩容 推行Cloud Native : 组织变革 : 推行DevOps文化 : 推行持续交付 : 建设敏捷基础设施 : 构建微服务架构 73 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 云云云架架架构构构模模模式式式 基于IaaS提供PaaS中间层,是云端部署应用的必由之路 底层提供中间层所需要的资源 中间层包含架构模式 74 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 PDMR闭闭闭循循循环环环 反映软件的交付生命周期 监控,修复步骤极端重要,否则底层错误发生,无法恢复 不断降低循环时间如何软件交付周期的主导原则 75 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 PDMR闭闭闭循循循环环环 PDMR循环需要 1. 对底层的抽象,包括计算,存储,网络,均提供API进行操作 2. 提供额外的服务用于监控和资源编排 3. 由用户利用以上两点处理自己应用的弹性和容错 单靠OpenStack并不符合PDMR的要求 基于IaaS提供PDMR循环需要资深的开发团队,例如NetflixOSS 1. 以主机,虚机为视角抽象开发自动化,是临时方案——需要用户 编写定制的自动化脚本 2. Cloud Native架构包含完全自主的自动化和编排,用户只提需求, 不用描述如何做 3. Cloud Native架构需要持久的抽象,而非临时方案 什么是Durable和Declarative的抽象 1. 虚机,物理主机都不是 2. 容器,以及基于容器的云是 76 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 容容容器器器为为为什什什么么么那那那么么么重重重要要要 Cloud Native运行时关键组件 1. 轻量,快速,敏捷 2. 代码式环境—特指Docker等新一代容器 有效使用容器,必须提供编排—下一代PaaS的核心功能 1. 管理容器的生命周期,包括创建、运行和摧毁 2. 通过约束保证资源利用可预测 3. 确保不同容器的进程之间是隔离的 4. 实现资源的最优利用—给定资源池,让负载分布在整个资源池 5. 必须能检测到关键组件的失效,自动移除工作不正常的容器实例 和基础设施,重新部署应用 什么是Durable和Declarative的抽象 1. 虚机,物理主机都不是 2. 容器,以及基于容器的云是 77 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 构构构建建建下下下一一一代代代PaaS 基础设施自动化 : 路由和负载均衡 : 后台服务代理 : 基础设施编排 : 健康管理,监控和恢复 : 可复用的运行时环境仓库 : 日志聚合 78 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 下下下一一一代代代PaaS—Netflix 为什么参考Netflix : AWS上为数不多的大数据公司 : 跟苏宁的需求场景很多类似(800万事件/秒,海量存储,机器学习 应用全包含) : NetflixOSS全面开源(目前仅差调用链监控和容器编排) : 成功故事多,如FlipKart(印度版京东),独角兽公司市值第四 为什么无需参考其他公司经验 : 京东,淘宝并不完全基于IaaS : 理念相似,但Netflix更加自动化 : 开源不足,淘宝开源产品大部分跟自用版本不 同(Rocketmq,OceanBase,Tddl,Tair) 79 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix的的的经经经验验验 花费一年时间从自有数据中心迁移到AWS,用于基础组件准备 把失败当做是常态,所有系统组件必须拥有容错和迁移功能 : 开发各类Monkey项目,随机杀掉任意组件,确保系统依然服务 充分监控所有基础组件 利用AWS的Auto Scaling Group : 开发预测型的Auto Scaling引擎,基于回归预测何时自动Scale 尽量使用顶配虚机,避免混排干扰 基于UI的人工部署系统,正在切换成为Mesos 以NetflixOSS微服务框架为核心的PaaS,已被收入Spring Cloud 80 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 微服务架构 : 不同团队独立交付,发布迅速 : 错误隔离 81 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 版本控制的分布式配置中心 82 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS API网关 : 对设备侧(PC,Mobile等)提供简化的单一服务接口 : 简化设备侧开发的复杂度,减少微服务网络调用数量和网络延迟 问题 83 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 服务发现 : 统一注册服务 :(微)服务架构不可或缺 84 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 负载均衡 : 服务端还是客户端 85 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 负载均衡 : 服务端还是客户端 86 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 服务依赖调用纷繁复杂 87 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 监控每级以来避免级联错误 缓存调用结果 考虑批处理调用 通过异步或响应式编程增加吞吐量 88 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 微服务架构并不代表Resiliency和Availability : 必须具备容错架构 : 架构模式—水密隔舱,电路熔断器,重试,降级 水密隔舱—像舱壁一样对资源或失败单元进行隔离,如果一个隔 舱破了进水,其它隔舱可以不受影响 : 把大的并行处理工作,由多个线程池来负荷分担 : Docker是进程隔离的,单个Docker失效不会影响其他Docker容器 89 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 电路熔断器 : 正常状态下,电路处于关闭状态(Closed),调用是直接传递给 依赖服务的 : 如果调用出错,则进入失败计数状态 : 失败计数达到一定阈值后,进入熔断状态(Open),这时的调用 总是返回失败 : 累计一段时间以后,保护器会尝试进入半熔断状态(Half-Open) : 处于Half-Open状态时,调用先被传递给依赖的服务,如果成功, 则重置电路状态为“Closed”,否则把电路状态置为“Open” 90 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 微服务组件 91 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Netflix PaaS 服务发布 : 早期借助手动部署 : 目前已经全面引入资源调度框架Mesos,实现资源利用最大化 92 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Cloud Native团团团队队队组组组织织织 管理—BusDevOps : 业务,开发,运 维在单一组织内 开发 DevOps职责 : 持续交付 : 敏捷架构 93 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 资资资源源源编编编排排排 数据中心任务分类 : 无状态长期服务型应用 » NetflixOSS : 短期批处理型应用 » ETL任务,Cron任务 » 离线大数据任务 : 有状态长期服务 » 数据库 » 日志,消息队列 数据中心操作系统 94 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Google Infrastructure 95 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Datacenter As a Computer 数据中心操作系统试图解决统一资源调度问题 统一管理三类任务(更主要是前两者) : 提高资源利用率 : 提升运维水平—Job管理与调度 : 资源隔离 Google从一开始就以此为核心打造数据中心 : 20多名Google工程师2年完成全部BigTable/MapReduce/GFS : 阿里云早期500名工程师攻关3年缺遭到失败—直到近年才成功 : Hadoop社区演进10多年,超过上百名贡献者,包括商业公 司(Yahoo,Cloudera,HornWorks,MapR) 是什么导致巨大效率差别 : 抽象错误,使系统复杂化 96 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Datacenter As a Computer Hadoop 1.0的设计—Doug Cutting为追求快速推向市场放弃 了Distributed OS : 缺乏Job调度 : 缺乏资源隔离 : 所有Job提交到JobTracker导致过于复杂的设计和瓶颈 Hadoop 2.0的设计—Yarn(2011)重新借鉴Borg的理念 : 为每个应用引入ApplicationMaster用于Job调度 : 引入ResourceManager用于全局资源管理 : 引入容器用于资源隔离 : 针对Hadoop社区优化,其余任务运行需大量定制(改进中) Mesos出现 : 由Twitter前Googler工程师及Berkeley Amplab发起,希望复制Borg : 二级调度机制,应用负责自身任务调度,一级只负责资源分配 : 基于公平的资源分配算法 : 需额外的框架负责资源分配后的调 度—Marathon,Aurora,Singularity,Chronos等 97 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Datacenter As a Computer Borg的设计 : 最早引入容器技术(10年前) : 提升资源利用率为首要设计原则 » 任务抢占 » 资源调度不追求公平 » 长期服务跟批处理应用混合部署 » 内核工作解决尾延迟(IO调度,进程调度) Omega—Borg的下一版(但未投入使用) : 基于乐观并发控制降低资源调度延迟 : 变Borg的全局状态为二级共享机制,解决Mesos全局调度对应用内 不可知的情况 : 作者目前已经推出新一版—Firmament(http://www.firmament.io/) 98 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Datacenter As a Computer Kubernetes—Borg原班人马创作 : 服务Docker编排 : 资源调度还相当简易 : 架构易扩展,便于引入第三方调度器如Firmament Nomad—Hashicorp作品 : 简易调度,支持抢占,快速发展中 99 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国内内内现现现状状状—百百百度度度 Matrix : Java实现 : 14年完成十万台机器部署,提升CPU使用率从10%到30% Galaxy : 按照早期Google Mapreduce模式,实现简单调度,专门服务搜索 集群 100 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国内内内现现现状状状–百百百度度度 101 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国内内内现现现状状状—阿阿阿里里里巴巴巴巴巴巴 阿里云伏羲(飞天系统) 淘宝T4(已放弃,仅用于Java) 102 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国内内内现现现状状状—阿阿阿里里里巴巴巴巴巴巴 Hippo : 服务搜索集群10K台,应对双11扩容 : 只针对长期服务优化,不提供批处理任务调度 103 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国内内内现现现状状状—阿阿阿里里里巴巴巴巴巴巴 阿里百川 : Docker容器云,服务TAE 蚂蚁金服 : Docker容器云,服务长期运行业务,架构还比较初级 104 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国内内内现现现状状状—腾腾腾讯讯讯 TBorg—复制自Google,70名工程师投入2年的Typhoon云平台 Gaia—修改自Yarn使得支持Docker,14年已部署到10K台机器 105 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国内内内现现现状状状—其其其他他他公公公司司司 京东 : 把Docker当虚机使用,基于OpenStack Nova开发资源调度系统 点评 : 自研Docker编排PaaS,服务长期运行业务 湖南卫视 : 2个人自研Docker编排PaaS,服务长期运行业务 360 : 自研Docker编排PaaS,服务长期运行业务 蘑菇街 : 把Docker当虚机用,OpenStack + Nova-docker,并自研调度 宜信 : Mesos做Docker云,Calico做SDN 其他 : 基于Mesos的企业级创业公司数人科技,自研容器编排PaaS的灵 雀云,DaoCloud,采用Kubernetes的星环等 106 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 国国国外外外现现现状状状 Twitter—Mesos + Aurora Apple—Mesos Netflix—Mesos(Titan项目) Airbnb—Mesos + Marathon + Chronos TellApart—Mesos + Aurora Spotify—Helios(自研,没有scheduler) Cisco—Microservice-infrastructure(Mesos + Marathon + ...) Yelp—Mesos + Marathon + Chronos Capgemini—Apollo(Mesos + Marathon/Apache Aurora/Kubernetes +. . . ) AutoDesk—Ochothon(Mesos + Marathon),Ochopod(Mesos + Kubernetes) HubSpot—Mesos + Singularity 107 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 方方方案案案总总总结结结 下一代PaaS应用在国内目前处于起步阶段 : 不考虑混排 : 更多公司已经逐步引入 Mesos最成熟 : Marathon,Aurora,Singularity都是高质量服务框架 : Aurora + Mesos是最接近Borg的方案 基于OpenStack自研限制过多 : 过渡方案,以后仍然面临大量修改 Kubernetes最易扩展 : 目前距离成熟还早,无法胜任大规模集群,但集成Firmament调度 器充满希望 Yarn对Hadoop适应性更好 : 但部署长期服务缺乏业界实践(Apache Twill) 自研容器编排,不考虑混排难度并不高,全面掌控最重要 108 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 应应应用用用实实实例例例—异异异地地地灾灾灾备备备 109 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 数数数据据据平平平台台台服服服务务务化化化 批处理平台化 : Hadoop As A Service : Spark As A Service 新框架服务化 : Parameter Server,大规模机器学习,深度学习框架 » DMLC » Petuum » DMTK » Paracel : All Reduce(Rabit),实现GBDT可以比Spark快数倍 价值 : Datacenter As A Computer : 可运维性 110 Suning Infrastructure Seminar Yingfeng Zhang | CTO Office, Suning Ltd | 11.28.2015 Thank you for your kind attention! Yingfeng Zhang – yingfeng.zhang@gmail.com CTO Office Suning www.suning.com

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档