分布式存储与tddl.doc

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布式存储与TDDL 沈询(王晶昱) shenxun@ 你理解的存储有什么? MYSQL/ORACLE/PGSQL/SQLSERVER ? HDFS/TFS/BIGTABLE ? TAIR/REDIS/MEMCACHED ? HBASE ? Cassandra/mongodb/Couchdb/voldmort ? neo4j ? / currently 122+ 问题 ttp:/// [currently 122+] ? “I’m the fastest ” ? “but we are web scale well” ? 我们最安全,从不会失败 ? 我们最简单 这个topic的目标 ? 介绍一般性的分布式存储知识,以及一般 性做法 ? 协助大家快速的从海量的存储引擎中选择 适合自己业务特点的引擎 ? 介绍TDDL在上述关键节点上的选择和思考 ? 失败经验 ? 切分经验 ? 未来,我们的饼是什么? 关系数据库 你在用关系数据库做什么? 关系数据库 用户 API 关系代数和 事务引擎 K-V存储 K-v存储 osql 与sql的核心区别就在于 – 数据库层是否应该全部的放弃关系代数,将所有关 系代数都交托给上层进行处理? – 事务是否是必须应该被放弃的东西? – 上层api,是否应该放弃sql引擎 ? 永远正确定律: – 计算机其实是个分形系统,将一系列的想法不断地 重复 – 越接近硬件和微元件,速度越快。 – 所以nosql一定会快于sql。但代价是方便性 K-v存储 所有数据存储的最基本和最底层的结构 ? 与文件系统找指定的数据的作用相同,也 是根据指定的key查找到对应的数据。 ? 回忆数据结构 – 处理查找,什么查找方式能达到比较好的效果? ? 二分查找 ? 树 ? hash K-v存储 如何按照其他key找到对应的数据 – Second index – 倒排索引 ? 如何能够找到符合一组查询条件的查询语 句 – 组合索引 col1,col2 – Select * from tab where col1 = ? And col2 = ? COL1 COL2 00 001 00 002 00 003 01 001 K-V分布式存储 ? 很多东西可以复用,本质来说,从硬件到 软件,就是一个不断分形的过程 ? 额外需要考虑的因素 – 网络延迟 ? TCP/IP –公用网络,ip跳转慢,tcp包头大 ? FIBRE CHANNEL – 专用 点对点传播 包头小 无ip协议 – 丢包 ? Tcp 协议规范决定,努力送达但不保证一定可达 分布式场景下的存储 路由 本质来说还是个查找的过程 ? 于是逻辑结构也就决定了。 – Hash ? O(1)效率 ? 不支持范围查询(时间这样的查询条件不要考虑了) ? 不需要频繁调整数据分布 – Tree ? 主要是B-Tree ? O(logN)效率 ? 支持范围查询 ? 需要频繁调整节点指针以适应数据分布 路由 ash – Id % n ? 最普通的hash ? 如果id % 3 - id % 4 总共会有80%的数据发生移动, 最好情况下是倍分 id % 3 - id % 6 会有50%的数据发 生移动 ? 但数据移动本身就是个要了亲命了。 路由 ash – 一致性hash Def idmod = id % 1000 ; If(id = 0 and id 250) return db1; Else if (id = 250 and id 500) return db2; Else if (id = 500 and id 750) return db3; Else return db4; 一致性hash 路由 ash – 一致性hash 路由 ash – 一致性hash ? 可以解决热点问题 ? 但如果热点均匀,加机器基本等于n-2n方案 因为要在每个环上都加一台机器,才能保证所有节 点的数据的一部分迁移到新加入的机器上 路由 ash – 虚拟节点 Def hashid = Id % 65536 Hash id Target node id 0 0 1 1 2 2 3 3 4 0 …. … 65535 3 路由 ash – 虚拟节点 ? 解决一致性hash的问题 – 解决热点问题,只需要调整对应关系即可 – 解决n-n+1问题,规则可以规定只移动需要移动的数据 ? 但方案相对的复杂一些 ? 一般推荐使用简单方案开始,使用n-2n方案扩容 ? 只有需要的情况下,再考虑平滑的扩展到虚拟节点 方案即可 路由 -Tree – Hbase使用的切分方法 ? 支持范围查询 ? 但方案过于复杂,对于大部分场景来说,引导列都 是pk.userid一类的单值查询,用树相对复杂。 ? 需要频

文档评论(0)

152****7770 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档