首先,假设一个场景,你的网站要存储用户登陆的IP
这个问题怎么解决呢
传统的方法是用数据库
数据库提供了方便的操作接口,复杂的查询能力以及事物的保证
好,现在假设大家都很喜欢你的网站,访问的人越来越多
一个数据库已经处理不过来了
于是你安装了3 台数据库主机,把用户分成了三类(男人,女人,IT 人 ;总是有某种方法把用户分成数目大致差不多的几个部分吧)
每次访问的时候,先看用户属于哪一类,然后直接访问存储那类用户数据的数据库
于是处理能力增加了三倍
这个时候你已经实现了一个分布式的存储引 擎,Dynamo 就是一个类似的东西
只是它的可靠性,可用性等方面更好一点而已
下面我们看看那个简单的分布式存储系统有什么不方便的地方,而Dynamo 是如何解决 的
简单分布式系统实现云存储可能存在的问题 先列举一下简单的分布式系统可能存在的问题吧: 1 很难扩容:如果现在业务发展迅速,3 台主机撑不住了,需要加到5 台主机,那要如何处理呢
首先要更改分类方法,把用户分成5 类,然后重新迁移已经存在的数 据
你要在网站上贴个条子,“系统维护中”,然后开始伟大的迁移工程,等到终于迁移完成,发现其实3 台也不用了,用户都走光了
2 数据可靠性无法保证:有一天,发现有一台数据库服务器 的 硬盘 坏了,这下麻烦就来了,本来网站就不赚钱,没用什么高档机器,只有一个定期的增量备份而已
经过一天复杂的恢复工作,你还要对部分用户说,麻烦你们把做过的事情再做一遍啊
3 单点问题:负责把用户分类,然后决定使用哪个数据服务器 的那台主机是网站的命根子啊,它如果宕机,所有的数据都不能访问了,它如果满负荷了,增加数据服务器也不会对整体性能有帮助
我好像看到一台贴满着驱邪保平安符咒的pc server
这几个问题,看似不大,解决起来还真的不容易呢
尤其是想到自己的网站也许有一天也会和google 有一样