听小董谝存储 二

网友投稿 592 2022-11-26

听小董谝存储 二

听小董谝存储 二

目录

​​序章​​​​第零章 先举个例子​​​​第一章 来个中间层​​​​第二章 说说data shard​​​​第三章 一致与安全​​

序章

第零章 先举个例子

老鸟:其实我和布鲁克斯的看法是一致的:所有软件活动包括根本任务——打造由抽象软件实体构成的复杂概念结构,次要任务——使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。我们现在干的事情就是使用编程语言表达这些抽象实体。那么具体如何表达呢?我认为可以参考显示世界。 小菜:你和布鲁克斯的看法一致的。。。。。 老鸟:不要取笑。现实世界,和存储最相关的就是咱们小区里的快递点。每个管理员有一个小库房。假定库房里有4个货架,每个货架上面有5个栏位,一共20个栏位。最开始的时候,每天收到的快递还不多,管理员就取收货人的手机号的后两位,然后0-4放到第一个栏位上,5-9放到第二个栏位上,95-99放到第20个栏位上。(至于第n个栏位到底在哪个货架上,这个管理员自己肯定有个小本都记录着) 后来快递点的生意越来越好,因为货架的容量有限,每个货栏里能放的包裹的体积也是有限的,怎么办?之前不是20个货栏么。现在再来4个货架,每个货架5个货栏,等于再增加20个货栏。本来手机尾号是0-4的货物只放到一个货栏里,现在分成两个货栏就OK了。 之后40个货栏也不够用了,同时库房里的8个货架也塞满了,怎么办?再来一个库房呗。这个库房可以放20个货架。如果还不够,按照上面的思路继续扩充呗。甚至用户的手机号直接取后4位,这样最多就可以用10000个货栏承载了。 上面的例子只是让你再回顾一下显示世界的样子,后面咱们存储系统的设计,很多思路就是增加货架,增加库房。至于咱们系统里什么逻辑对应库房,什么是货架,什么是货栏,后面你就慢慢清楚了。

第一章 来个中间层

图一 数据分片与路由

老鸟:小菜,咱们系统的路由系统大概如上图一。你懂了么?

小菜:大概有内味了。经过hash的key对N取余数,n可能是1w也可能是100w,这个暂时不重要,取余后存放到某个槽位。之后的定位包含两步:

第二章 说说data shard

小菜:前面说了,data shard只是一个逻辑概念,代表了槽位集上面的一段区间。槽位有10w个(或者100w个)。这是咱们整个整个系统的初始配置,不会变。举个例子,某个用户申请我们的服务,那到底分多少个data shard呢。 老鸟:这个看运维经验。一般情况下,为了运维方便,一个data shard的存储空间是2GB。 小菜:哦明白了。 老鸟:然后呢? 小菜:然后什么?2GB我记下了。 老鸟:尼玛,我让你记2GB的数字有个毛作用。你就不能提出一点问题么?? 小菜:哦,我想想额。如果一个数据分片2GB,一个用户说我需要200GB的空间,那就给他分100个分片。如果半年之后,200G不够用了,用户说,我需要600GB。然后单个分片就扩展到6G了。感觉有点问题哦。 老鸟:算你还有点悟性。系统对单data shard到底可以存储多少数据是没有限制的,也就是说一个data shard存100GB都没有问题。但是因为分片是运维的最小单位,一般情况下不会让分片超过2GB。那现在数据总量就是胀大了,怎么办?分裂呗。

图二 分片的分裂

小菜:哦,看这个图,我就懂了,单个分片的总容量不变,如果分布在这些槽位上的数据量增加了,就让多个分片来承担这些槽位上的数据。

老鸟:嗯,孺子可教,光看图就懂了。然后呢?

小菜:可是之前分片里面的数据是存在一个机器上的。现在分裂了,数据还在一块么。分裂具体怎么操作,我还是不清楚。

老鸟:不要着急,一口气吃不了一个胖子,这个咱们后面再说。

小菜:好的。那一个大分片既然可以分裂,那两个小分片是不是也可以合并?一个分片原来在A机器上,是不是也可以搬迁到B机器上。

老鸟:不错,不错,可以举一反三了。分片就是前面说的货栏,一组particle就是一个库房,至于货架,咱们后面说。

第三章 一致与安全

老鸟:前面已经说了,为了保持数据的安全性,所谓的particle其实是一组。如果说,一组机器是3台的话,那么这样就算有一个机器挂了,我还有另外两个机器可以服务。安全性有保障了。 小菜:老师,你别看我,我听懂你说的了。不过你说的是陈述句,我实在不知道有什么问题。 老鸟:OK,现在数据是3副本。那么这3个副本有什么关系。读写的顺序是什么?这里建议你看一下CAP原理。具体的咱们下节课再说。 好了,老师乏了,你退下吧。 总之,我爱glt。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于用redis缓存对象
下一篇:Spring Xml装配Bean的思路详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~