云计算
    作者:涂兰敬

    金山云CTO杨钢:从零开始 做大云存储

         [ 中关村在线 原创 ] 暂无评论

      近两年,国内外云存储市场异常火爆,不管是微软、谷歌、苹果、亚马逊这样的国际巨头,还是国内百度、360、腾讯这样的互联网翘楚,又或者是联想、华为、金山这样的传统厂商都纷纷表示出了对云存储十足的热情。

        近日,金山云CTO杨钢在一次演讲中分享自己在云存储方面的体会《从零开始,如何做大云存储》。杨钢认为在云存储火热的今天,从个人到企业,无一不奔向云存储这条大道。但对于金山云来说,发展到如今的云存储规模,也是从零而始。从2007年开始,设立云存储实验室,2011年推出金山快盘,这期间如何迈过门槛?又有哪些技术?下面的内容杨钢将一一向您分享其成功的经验。

      杨钢表示,金山云目前主要业务是金山快盘,虽然定位是个人存储中心,在各种终端上面都有客户端而且在国内排名也是领先的,关键问题是和移动终端互联网应用我们还是学习者。这次和大家交流一些与我们自己做云存储,金山云做云存储做得挺早的,当时那时候存储实验室的负责人,许树伟在隔壁分会场跟大家讲。快盘做到现在,事实上它的存储技术一直支持了它的发展,我会介绍一下我们整个技术演进的过程,以及希望快盘和金山云如何帮助移动互联网开发怎么样更快的通过云计算的服务性质的应用。

      在现在这个年代,如果你做的是单机的应该不会有这样的项目出现,或多或少现在所有新的应用都会带着各种各样互联网服务,我们看看,以金山为例子,我们团队来自WPS,我做了八年的Office软件,快盘主要来自WPS团队,因为是客户端软件开发团队,怎么样开始一段云计算的冒险,我们从头开始。这个地方和我们的发展轨迹稍微做一些介绍,为了在学术上更好说一些。

      首先,我们需要做在线服务,有一个很经典的架构,阿帕奇加上PSP,这个图上的结构,所有的服务都可以做在一台服务器上,我们叫它的All In Server,业务再往前发展可以看到一台业务服务器,它已经没有办法支撑业务本身发展的需求,这个时候需要多台业务服务器,多台业务服务器,前面需要有负载均衡的方案,比较简单可以采取的方案有三种的第一种,DNS Polling,第二种LVS,第三种利用反向代理来实现,我们发现数据库开始关注了,我们首先关注数据库的第一个方面,互联网服务最重要的东西在数据库里面,如果数据库出了任何的问题,我们就回高老庄了。有一个同步的模型所有主流关系数据库来做,这样可以马上利用冗余的机器来顶上。

      到了下一步,随着互联网越来越大,比如说我们的每日报告用户超过了一万人之后,单台的机器通过本身扩展,加CPU,加硬盘,其实已经不够用了,我们做一个水平分表,最常用的方面把USDE用一个值做到某一台服务器,我们也可以看到这图里面继续往前演进,数据库出现了Cluster的概念。再往下一步,实际上我们会遇到另外一个问题,绝大部分数据库操作行为冷、热数据之分,一般的读写比比较高的读写值,我们自己业务也有例外的情况,但是绝大部分是这种情况,这种情况下面我们与其说不停的提高数据库,不管台数还是数据库的配置,让数据库显示得更快,还不如采取更节省钱的方式,这样数据库投资不用那么大,这时候很自然引用了Cache。使用Cache有两种方式,第一种方式这个Cache只读,如果数据发生了变化就把Cache除掉,还有透写,如果写操作由Cache写进去,看大家的个人喜好了。

      到这个时候一个完整的互联网服务的结构,就已经搭成了,基本上跑到这个时候业务到底有没有人用,基本上看得出来。剩下的就是当这个业务继续往前发展,移动互联网越来越大,每年负载越来越大,大家每天都在为宕机这些事情奔波的时候,我们继续往前走。刚才提到了水平分表,我们刚才的方案非常简单,比如说就按照USID取一台数据库,这种属于固定的,固定的方式有一个比较麻烦的事情,我们要进行数据扩展,加服务器,这个时候很可能影响服务,要求一致性非常高我们得暂时中断服务,这种对于在线上运行一段时间的业务来说不可接受的。所以我们还可以加一个数据库路由,由它来记录一个用户放在哪个数据库里面,假设增加数据库,我们可以慢慢的进行数据迁移,如果我们的区分力度是user,如果没有数据库路由停机避免数据导入,这种方式不用停机,相对来说非常大的进展。

      大家知道数据库的维护非常危险,千万不要没事儿干去重启数据库或者做一些比较大的维护操作,你很可能把数据库读死,造成整个业务的血崩,这种方案相对温和。

      当业务量再往上的时候,读写比不断上升,Cache,数据热度、密度不是那么高,这个时候很可能出现数据库在写出请求可以做的,由于量太大就读不出来了,常见办法是读写分离,其他的从库用来做读,这种情况使用场景有一定的局限性,比如说数据是否要求严格一致性,这个是会影响方案。那么相对来说,很多网站都在用,因为在业界同行之间聊天都在用,很多网站跳过这个方案,金山快盘没有使用这个方案,跳到后面了。到这块一般来说这个网站的负载量已经非常大了,你比如说,我们到了这步,我们可以看到在之前的时候,把所有的逻辑只是做了横向拆分比如说,负载均衡,像最开始的时候,所有的逻辑做了负载均衡,有多个逻辑服务器,但是当逻辑越来越复杂的时候,如果把它整合到单一的业务逻辑服务器,这个业务逻辑本身很复杂,之间有可能因为各种数据操作在一起就无法应付了,怎么都无法提高,这点基本上每个公司做互联网服务,慢慢往前做都会遇到这个情况,而且大家都会经过这一关,把逻辑进行纵向拆分。

      大家可以看到这张示意图,这张示意图首先是分出了两部分,Logical Sever和website Sever,同样的数据库本身也要做这种,除了刚才按照水平区分之外,如果单一数据库涵盖了所有数据,表比较复杂,这个数据库本身性能影响非常大,其实做云服务,最重要的一点就是把逻辑一致的东西尽量的把它单独划分出来,实际上在数据库也要做垂直分表,比如说帐号会在单独库里面,我们做电商库存,商品的展现数据,评论数据放到不同数据库里面,要求实质性非常高,比如说对于库存要求非常高,有一些要求很低,比如说评论,延迟就延迟,无所谓。放到不同的数据库之后,它们可以根据不同的需求去选择不同的数据库配置方案,这个时候大家可以看到整个业务系统,相对来说分离已经比较细了。像快盘业务逻辑拆分下来,如果在上面手绘,A4的纸已经画不下了,得拿一张跟北京地图那么大的纸,把服务分解和关系画在一张图上。

     

    提示:支持键盘“← →”键翻页
    本文导航
    • 第2页:金山快盘如何迈过技术门槛

    关注排行榜

    产品品牌

    文章推荐

    互动沙龙

    相关内容 网友评论 返回首页
    专家咨询