干货 | 公有云存储技术分享
2018-08-02 16:28
411 查看
公有云是PP视频核心的文件存储服务,目前正在为苏宁云、苏宁体育等部门提供后台支撑。本文就 “swift分布式存储”、“项目架构”、 “文件上传流程”、“上传功能”四个方面进行介绍。
一、swift分布式存储
什么是swift?
Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储服务,并于 2010 年贡献给 OpenStack 开源社区作为其最初的核心子项目之一,为其 Nova 子项目提供虚机镜像存储服务。Swift 构筑在比较便宜的标准硬件存储基础设施之上,无需采用 RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。-官网地址: http://docs.openstack.org/developer/swift/-Github代码地址: https://github.com/openstack/swift 下图是swfit系统架构,细节可参考相关文档:
swift存储特点:
分布式对象存储: 理论上可以存任意大小,任意类型的文件。
极高的数据持久性。Swift具备10个9以上的数据持久性。
完全对称的系统架构。Swift中各节点可以完全对等,能极大地降低系统维护成本。
可扩展性。因为Swift是完全对称的架构,扩容只需简单地新增机器,系统会自动完成数据迁移等工作,使各存储节点重新达到平衡状态。
无单点故障。整个Swift集群中,也没有一个角色是单点的,并且在架构和设计上保证无单点业务是有效的。
简单、可依赖。SWift架构优美、代码整洁、实现易懂,不管出现任何问题,都能通过日志、阅读代码迅速解决。
RESTful API: 资源访问路径规范, 统一http协议访问。
功能拓展和二次开发方便: 可以用插件的方式给swift服务添加附属组件, 方便开发人员对服务进行功能扩展以及二次开发。
技术栈完备:针对用户管理和鉴权, 有Keystone;针对存储服务器监控, 有Swift Recon插件;针对客户端请求监控, 有Swift Informant插件;另外,作为OpenStack项目的旗舰产品之一, Swift和Openstack技术栈的其他产品进行整合和扩展非常容易。
公有云Swift系统设计使用lvs做proxy负载均衡和故障转移
使用udp发送到本机rsyslog收集日志
依照机柜划分zone
使用keystone认证
使用rsync同步ring文件
二、项目架构
公有云项目主要由 “filecenter, filecenter-tool, filecenter-hash”三个模块组成:filecenter
公有云项目核心模块。主要功能包括: 文件的创建、上传、特征值校验,文件扩展信息管理等。同时它负责管理和调度系统内其它他模块(filecenter-hash、filecenter-tool)。filecenter-tool
该模块主要包含一些定时任务,执行一些边缘化的任务。例如:由于文件是分块上传,如果文件没有上传完成,则删除一个月之前的分块记录。
将文件的审核信息载入redis缓存, 供之后查询管理。
filecenter-hash
通过MQ接受filecenter派发的任务: 从swift下载文件流计算特征值,并将结果用MQ发送回filecenter。三、文件上传流程
1. 获取上传令牌: 用于后去上传操作中校验请求合法性2. 获取文件ID: 用户提交文件信息, 公有云生成并返回文件的ID3. 用户获取分段上传地址4. 用户按分段地址上传分段到swift,swift在接收分段文件的同时验证每个分段的MD5值, 确保接收到的分段的有效性5. 每个分段上传完成, 汇报公有云6.公有云filecenter判断文件上传完毕,异步提交文件清单及通知特征值计算四、上传功能
基于上述核心上传流程,公有云还实现了“秒传”,“断点续传”,“并发上传”等功能。
秒传
公有云利用独创的ppfeature作为上传文件的唯一标识, 其特点为客户端可以快速计算获取; 当上传的文件ppfeature和库文件重叠时, 判定为已存在文件, 走秒传流程.断点续传
公有云利用分段缓存的机制实现断点续传; 当上传未完成文件时, 系统返回剩余分段地址给客户端。并发上传
公有云利用分段缓存的机制实现并发上传:不同客户端可以同时上传同一文件, 并且各自获取不同的分段地址, 从而实现无重复接力上传。相关文章推荐
- 【腾讯Bugly干货分享】总结一个技术总监的教训和经验
- 【腾讯Bugly干货分享】舞动的表情包——浅析GIF格式图片的存储和压缩
- 【迁移学习】迁移学习的干货学习资料 | 干货分享 | 技术解读
- 8场云栖大会、10场在线技术峰会、200余场在线分享,千余份技术干货大盘点——以此记录云栖社区陪你共同走过的2017
- fir.im Weekly - 2016 开年技术干货分享
- 6位技术大咖11月倾心巨献,大数据+安全主题的技术分享合集【阿里云MVP 干货集锦】
- 【干货】2017年1月6日 IT技术文章分享
- 【腾讯Bugly干货分享】总结一个技术总监的教训和经验
- 干货分享:分析Android应用使用的技术框架和开源库
- 【腾讯Bugly干货分享】Android 插件技术实战总结
- 揭秘百度核心技术:53位专家纯干货分享
- [转]【腾讯Bugly干货分享】Android Linker 与 SO 加壳技术
- 【Android】开发干货-技术分享之高仿QQ微信网页加载进度条实现
- 干货分享:分析Android应用使用的技术框架和开源库
- 干货分享:分析Android应用使用的技术框架和开源库
- [置顶] 【Android】 开发干货-技术分享(ClearableEditText实现)
- 游戏性能优化技术干货分享——内存管理
- 【腾讯Bugly干货分享】移动App入侵与逆向破解技术-iOS篇
- 云+社区专栏:分享技术干货,专注打造技术影响力
- 技术分享+行业融合,第二届日知录企业存储峰会即将揭幕