• 1. 分布式存储介绍若海
  • 2. 目录分布式存储简介 为什么使用分布式存储系统 实现分布式存储相关的技术 现有分布式存储系统介绍
  • 3. 分布式存储定义分布式存储是将用户数据存储在多个由LAN/Internet连接的独立节点上一种技术
  • 4. 分布式存储系统的挑战负载均衡 数据和请求都应该能均衡的分布到所有节点上 CAP理论 三者不能同时满足 容错性 节点不可用不再是偶然现象 分布式事务
  • 5. 为什么使用分布式存储系统可扩展性 扩容更简单 扩容更灵活 可用性 单个节点不可用,不会影响系统的服务 多数据中心的支持
  • 6. 实现分布式存储相关的技术数据分布 一致性 容灾 扩容 性能
  • 7. 分布方案(1/2)集群中心节点总控 由集群的一个节点负责数据分布 节点收集数据节点的请求数,数据量,内存等信息 根据特定算法计算数据的分布
  • 8. 分布方案(2/2)DHT(Distributed hash table) Key
  • 9. 一致性强一致 数据写入成功后,后续的读取都能获得最新的数据 弱一致 不保证写入成功后,读取能获得更新后的数据 最终一致 弱一致的一种特殊情况 在一段时间后,读取能获得更新后的数据
  • 10. 一致性方案——NWRNWR N——总共的备份数 W——几个备份写入成功才返回成功 R——几个备份读取成功才返回成功 例子 N=3, W=3, R={1,2,3},强一致 N=3, W={0,1,2}, R={1,2},弱一致 N=3, W={0,1,2}, R=3,最终一致
  • 11. 容灾为什么要容灾 节点可能因为硬件故障、电力、空调、网络等等因素不能服务 节点数越多,概率越高 容灾的方法 备份 复制
  • 12. 备份通过将一份数据保存多份提高可靠性 多个备份 数据中心,数据分布在多个数据中心 机架,同一个数据中新的备份在不同的机架 节点可用的检测 心跳 Gossip协议 高可用协议(HA)HA
  • 13. 复制异步 主节点成功后即返回 实现简单,可能丢失数据 同步 同步等待辅节点返回成功 保证可靠性,但丧失了可用性 半同步 只要有辅节点返回成功,就算成功 介于异步和同步之间
  • 14. 扩容自动适应新增的节点 自动迁移数据 迁移后数据均衡 迁移时不停止服务 迁移数据 迁移过程中的更新写入日志 数据迁移完成后同步日志
  • 15. 性能常用性能相关数据 L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 25 ns Main memory reference 100 ns Compress 1K bytes with Zippy 3,000 ns Send 2K bytes over 1 Gbps network 20,000 ns Read 1 MB sequentially from memory 250,000 ns Round trip within same datacenter 500,000 ns Disk seek 10,000,000 ns Read 1 MB sequentially from disk 20,000,000 ns Send packet CA->Netherlands->CA 150,000,000 ns
  • 16. 现有分布式存储系统介绍MySQL/Drizzle,PostgreSQL GFS/Bigtable/MegaStore Dynamo/Cassandra/ CouchDB/MongoDB/SimpleDB TFS/Tair
  • 17. SQL还是NoSQLNoSQL== No SQL/Not Only SQL NoSQL和SQL并不是对立的关系,而是互补的关系
  • 18. Drizzlehttp://drizzle.org Drizzle基于MySQL 为云平台和web应用而优化 为高并发和多核优化 开源
  • 19. GFS
  • 20. Cassandrahttp://cassandra.apache.org/ Cassandra借鉴了Dynamo的分布方式和Bigtable的数据模型 使用Gossip协议,完全去中心化 使用NWR模型解决数据一致性问题
  • 21. CouchDBhttp://couchdb.apache.org 文档型数据库 使用MapReduce方式查询 使用Erlang编写 提供RESTful的json api
  • 22. TFShttp://code.taobao.org/project/view/366/ Taobao FileSystem 用户存储海量的非结构化数据 由支持HA的nameserver负责数据的均衡等工作 支持主辅集群的同步
  • 23. TFS架构
  • 24. Tairhttp://code.taobao.org/project/view/2/ Tair开发的分布式key/value解决方案 包括分布式缓存和持久化两种服务 轻量级的configserver,没有中心节点的问题 弱一致性 可配的存储引擎
  • 25. Tair的架构ClientABCDEMasterSlaveconfigserverDataserversheartbeat
  • 26. 对照表一个节点Bucket numberdatanode1192.168.100.12192.168.100.23192.168.100.14192.168.100.25192.168.100.16192.168.100.2新增一个节点Bucket numberdatanode1192.168.100.12192.168.100.23192.168.100.14192.168.100.25192.168.100.36192.168.100.3
  • 27. DataServer的结构Request Plug-insMdbFdbEtc…RequestResponseTairServerStorage EngineResponse Plug-insMigratorReplicator
  • 28. 参考资料淘蝌蚪. http://code.taobao.org Dynamo. http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html Apache HBase. http://hbase.apache.org/, 2008. Amazon SimpleDB. http://aws.amazon.com/simpledb/, 2007 Apache Cassandra. http://cassandra.apache.org, 2008 Google Protocol Buffers: Google's data interchange format. http://code.google.com/p/protobuf/, 2008. Apache CouchDB. http://couchdb.apache.org, 2008 MySQL Cluster. http://dev.mysql.com/tech-resources/articles/mysql clustering ch5.html, 2010
  • 29. 参考资料GHEMAWAT, S., GOBIOFF, H., AND LEUNG, S.-T. The Google le system. In Proc. of the 19th ACM SOSP (Dec.2003), pp. 29–43. F. Chang, J. Dean, S. Ghemawat, W. C. Hsieh, D. A.Wallach, M. Burrows, T. Chandra, A. Fikes, andR. E. Gruber. Bigtable: A distributed storage system for structured data. ACM Trans. Comput. Syst., 26(2):1-26, 2008. M. Burrows. The chubby lock service for loosely-coupled distributed systems. In OSDI '06: Proceedings of the 7th symposium on Operating systems design and implementation, pages 335{350, Berkeley, CA, USA, 2006. USENIX Association.