青云王煜:QingStor工作原理解析

2017年3月7日,晚8点30分,青云QingCloud 系统研发工程师、原街旁团队创始成员、基础架构负责人王煜老师带来了主题为“移动App背后的一站式存储解决方案实践”的交流。以下是主持人hrshy整理的问题精华,记录了王老师和读者间问答的精彩片段。


问:在服务器带宽非常有限的情况下,如何保证大文件的上传速度? CDN 服务能否进行上传加速呢?

: 大文件上传通常花费的时间比较久,这期间可能会出现网络中断的情况,为了提高客户端上传大文件的效率,QingStor 提供了一套分段上传的 API 接口。用户可以在本地将大文件切分成小块,并发或顺序上传,如果某一块发生了错误,只需要重新传输这一块。这种上传方法可以充分利用客户本地的带宽。目前 QingStor 的 CDN 服务只提供加速下载的功能,上传加速正在调研中,相信后续会做支持。另外近期 QingStor 针对数据量巨大的客户(TB 级别),提供邮寄硬盘的服务,客户可以将数据拷贝到移动硬盘上邮寄给我们,我们会利用内部的高速带宽进行上传。


问:云存储服务是如何保证文件可用性的?单单靠跨区域备份可以解决吗?

: 存储在 QingStor 中的数据文件都会有三份文件副本,并且至少有一份不在同一台硬件。除了数据,QingStor 的其它系统组件都有高可用的设计。未来还会有跨机房的异地副本,保证在网络和机房发生故障的情况下快速恢复。


问:后端存储采用的是多副本还是纠删码的方式保证的数据可靠性?同时后端存储提供异地容灾功能吗?还就是采用的是全SSD还是HDD和SSD混合的方式呢?

:目前采用的是多副本,不过未来也会考虑提供成本更低的纠删码方案供用户选择。异地容灾正在规划中,未来会提供。数据文件的存储使用 HDD,而数据索引使用了 SSD。


问:会在移动 app 中产生存储需求很大部分都源自 UGC 内容,那么如果在社交类应用中用来存储用户产生的图片/视频要有没有什么方式来保障在国内严峻的审查环境下不因色 情或其他敏感内容查水表呢,会不会像某些友商一样提供鉴黄服务?

: 我们马上会上线基于 QingStor 的数据处理框架,同步上线的第一个服务将会是鉴黄服务。除此以外还会有图片剪裁以及视频转码等。


问:数据迁移的方式有哪些;上传速度能达到多少,有哪些上传的优化;目前有哪些数据处理的子服务?

: QingStor 目前提供了多种客户端工具,可以方便用户的数据迁移,其中包括命令行工具 qingcloud-cli 以及目录同步工具 qsctl,大家都可以在官网上找到。目前不会对特定的用户做上传速度的限制,通常用户更应该关注数据源端的瓶颈,比如客户端带宽,以及本地的文件读取速度。QingStor 马上就要上线数据处理框架,在该框架内将会为用户提供诸如图片处理,视频编码,日志分析等一系列数据处理服务,请关注我们的官网。


问:兼具高可用性、高扩展性和低成本的文件服务器,这个好像是悖论啊。作为金融企业,开源解决方案面临技术风险,市面上有没有用成熟商用软件组合的移动应用文件服务器解决方案?文件服务器同时在给网站、手Q、移动展业提供服务,是建设统一的方案?还是分而建之?数据传输方面,有没有加密和数据压缩的功能?涉及到一些身份证敏感信息。

: 这几点特性并不矛盾,在过去金融企业倾向于选择类似于 SAN 这样硬件存储设备,但伴随着互联网和大数据技术的发展,这类设备越来越不能满足扩展性的需求,而且采购成本非常高昂,因此越来越多企业开始转而采用云存储相关服务,QingStor 就是致力于解决金融等行业对于数据安全性,可用性,扩展性以及成本要求都很严格的问题。QingStor 从设计之初就对于数据类型、大小、数量都没有任何条件限制,是面向通用场景的数据存储平台。在数据传输方面,提供 https 加密和 gzip 压缩的支持,保证传输链路的安全高效,同时也支持数据加密,保证数据存储的安全。


问:对于实际项目中,文件链接的保存,有什么建议吗?如以下两种方式:直接保存云返回的链接地址;去除前面的url链接,只保存文件的储存路径。哪种比较推荐的?

: QingStor 文件访问的 URL 是由 QingStor 域名(qingstor.com) + bucket 名称 + 文件名组成,前两项是固定的,用户只要记录文件名即可。QingStor 也会提供 list-objects 接口,可模拟文件系统的组织结构,列取出某个指定目录下的文件。


问:之前gitlab发生过删数据的囧事,这个QingStor如何预防或者有恢复措施吗?

: 我了解此前 GitLab 事件是由于在线上错误地执行了删除命令,本身是一个运维失误。在这方面 QingStor 首先在运维上会有更加严格的技术流程,在生产环境中已经屏蔽了 rm, dd 等危险命令,并且所有操作都有 double check 提示。更重要的是,由于系统的自动化运维程度很高,运维人员极少需要在生产环境手动执行命令,日常的运维操作都是按照提前写好并 team review 过多次的 playbook 来执行。在高可用性方面,所有数据无论正文还是索引,都有多份副本,并且会定期对索引数据做冷备份。

并且我觉得没有什么必要在线上执行删除操作,如果有不需要或者已过期的数据,可以先移动到另一个地方,总有比删除更缓和的方式去操作,要对生产环境时刻抱有敬畏之心。


问:QingStor在运维方面需要投入的成本多吗?

: 没有什么单独的成本,首先没有专职运维人员,都是研发同事兼任,但生产环境的权限控制是严格把控的。另外也是秉承 QingCloud 一贯理念要尽力做到零人工运维,每个系统组件在设计之初,都考虑过如果发生故障该怎样做自动 failover。

所以我们研发工程师都知道,代码写完了只是完成了20%的工作量,测试,部署,自动化才是重头戏。


问:一般怎么防DDoS?

:如果是三层流量攻击型的DDOS,用户自己确实没什么办法,一般需要在上游流量接入的地方做清洗(前提是有足够的带宽,先让流量进来),当然 QingCloud 已经提供了相关的防攻击服务,用户直接把域名指向改一下就可以。


问:App接入QingStor后,上传的图片能否支持旋转、编辑等操作,有没有好的类似iPhone上live photo的好的实践。

: 存储在 QingStor 的图片想要做预览和编辑,这个其实是偏网盘的需求。我们也正在开发基于 QingStor 的网盘客户端,相信将来可以在客户端上做类似的操作。如果是想通过程序批量处理,即将上线的数据处理框架,以及一起推出的图片视频处理服务,可以满足需求。

后一个预计近两周内可以发布,我们会在官网更新最新的动态


问:假如受到DDoS攻击,后续需要做怎样的预防和服务升级?作为初期的创业者,在这方面要交保护费,看到圈子里的一些人苦不堪言。

: 流量攻击是行业顽疾,利用了网络协议的设计缺陷,攻击来临时想要做到一丁点影响都没有不太可能。可以有选择性的接入例如 QingCloud 防D服务或者第三方安全宝,百度云加速等。


在此感谢人民邮电出版社异步社区,为本场Chat的获奖读者提供了《大数据存储:MongoDB实战指南》一书。


(以上内容转自GitChat,版权归GitChat所有,转载请联系GitChat,微信号:GitChat,原文:《青云王煜:QingStor工作原理解析》