前言
之前有幸参加了在上海的Qcon大会,收获还挺多的,想就其中一个课程,在我的消化之后谈一些理解和收获。
主要分享的课程是由腾讯带来的云存储网关的一些介绍,当然我也是只能听懂皮毛,在自己学习了一些相关知识之后才敢分享一点点浅显的内容,如果想要真正了解腾讯的网关或者云服务的可以上网去了解,我可能只是介绍一些相关的知识。
本片分为两部分,上篇主要介绍一些网络存储的知识,CDN加速器,云网关的需求点。下篇可能简单说一下腾讯的这款产品,以及分享的一种读算法的改良(包括一些其他算法的介绍)。
最后,如果文章中有一些作者理解错误的地方,请帮忙指出,因为作者也是刚开始了解相关的知识。
传统的数据备份和存储
传统的数据备份和存储了解了三种:Direct Attached Storage直连式存储,Network Attached Storage网络存储设备,Storage Area Network存储区域网络。这三种都是比较常用的存储结构,下面简单的对他们进行分析和比较:
1)DAS 直连式存储
顾名思义,直连式存储就是将存储设备直接接到服务器机器上,依赖服务器主机的操作系统进行数据的读写和存储的维护,也就是说在备份或者存储数据的时候要占用主机资源(约20%-30%)这显然在某些应用场景下是不以接受的,这也就是跟很多采取这种数据备份的公司只能晚上进行备份工作的原因。另外DAS采用SCSI(Small Computer System Interface)进行连接存储设备,从名字上就可以窥探出他的适用范围,这种链接是有限的,如果希望存储大量的信息那么SCSI也会成为瓶颈。这种方式的扩展性也存在其缺点,必须通过停机才能对容量进行扩展,对于很多服务都是难以接受的,服务器发生故障,数据将不可访问,灾难恢复性… 虽然DAS有其局限性,但是他的部署使用成本较低,使他仍有很强的市场占有度。
2)NAS网络接入存储
首先这种东西可以个人使用,就是一个存储设备,节日家庭网络中。可以家人或者个人将不同设备上的信息存储于NAS上,有利于信息共享,并且节省单个设备的存储资源。
NAS依赖于网络而不是物理设备,所以有两个优点,第一个是不会占用主机操作系统的资源,第二点是当设备停机了不会影响NAS的工作。当然它也有它的缺点,既然是接入到网络中,那么主要限制他的就是带宽,如果是数据量大的信息存储用NAS就不大适合了,NAS采用的是文件级别的存储,在实际的存储中我们使用的常常是物理备份(数据的备份)而不是逻辑备份(文件的存储),所以使用场景需要考量。还有一个问题是安全性,关键性数据暴露于网络传输中可以说是很危险的了。
3)SAN存储区域网络
SAN分为两种形式,一个是通过光纤进行传输(FC switch),另外一种是通过ISCSI技术,即通过IP进行信息传输。前者就NAS的不足进行了改进,采用光纤进行消息传输首先也是采用了网络传输的方式,不同于NAS,SAN将传输信息的带宽隔离出来,独立于数据网络的存在,与服务器本身的网络信息传递不相互影响,另外采用光纤大大提高了信息传输的速度。后者则是让SAN支持了块级存储,ISCSI使SAN可以在IP网络上运行SCSI协议,即支持了块级存储。SAN结合了前两种存储方式的优点,它是“可插拔”的,可以在不停止运行的基础上增加存储设备。它支持更大的存储空间,扩展性强,可以对空间进行分配。对于数据访问来说,可以提供一个理想的访问和读写速度。SAN的缺点也比较明显,就是成本和复杂性,虽然采用ISCSI可以降低成本,但是相较于光纤,还是存在速度的劣势。
关于CDN技术
在了解了常用的存储之后,我们进入qcon分享的内容,腾讯在发展云技术有了两次改进,首先是采用了cdn加速技术(cdn Content Delivery Network 内容发布网络),之后又研发了自己的云存储网关进一步提高了存储和响应速度。
那么本片我们先来简析一下cdn加速技术
官方基本思路的解释:
尽可能避开互联网上可能影响数据传输速度和稳定性的的瓶颈和环节,是内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向里用户最近的服务器节点上。
传统的访问方式是访问一个目标url,DNS会解析它,并且返回目标的IP地址,用户发出请求,该ip地址的服务器相应请求。那么就会有一个问题如果数据量大,距离远,又要确保响应速度就很难保证。CDN提供了一种“最优解”。以最简单的模式来说,首先用户向目标url发起请求,DNS不会直接返回目标的ip地址,而是将该请求传达给CDN DNS解析器进行解析,然后返回CDN全局负载设备的ip地址,用户访问全局负载设备url,全局负载设备根据用户的IP地址,返回给用户区域负载设备的地址,用户访问区域负载设备的url,区域负载设备会根据用户的IP和用户的请求内容,进行综合分析,得到一个距离用户最近的,可以最快响应的,包含用户所要信息的服务器并返回该服务器的IP地址,接下来用户就能从这个“最优解”中得到想要的内容。
当然我只是简单说明了CDN的最简单的寻找最优服务器的流程,隐藏了很多技术性的内容。简单来概括CDN就是它是一个“策略中心”,包括分布式存储,负载均衡,网络请求重定向,内容管理和全局网络流量管理几个部分,每一部分的内容,我觉得要想简单理解还都要花一些时间。
关于云网关
最后来谈一下我理解的腾讯云网关CSG的需求分析,首先我们刚才提到的本地的存储选择,如果想采用SAN作为存储结构,部署起来费时费力,那么云网关给我们提供了一个新的选择,就是相当于提供了一种可以快速响应有一定存储空间的不需要我们自己部署的易迁移和扩展的存储服务,具体的我们下次再说,也可能不说,拒绝打广告… 另外它作为网关出现那我理解可能是将存储这个环节放在距离应用的最后一跳,将云存储接入到本地的存储结构中,解决了本地存储和云端的很多兼容性问题,做一些速度和算法上的优化,就比如我们下次会提到的一种改良的读算法。
先说到这里吧,其实也好有很多问题没想特别清楚,欢迎讨论交流^_^