热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

云存储技术_干货|公有云存储技术分享

本文由编程笔记#小编为大家整理,主要介绍了干货|公有云存储技术分享相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了干货 | 公有云存储技术分享相关的知识,希望对你有一定的参考价值。


技术分享图片

公有云是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存储特点:


  1. 分布式对象存储: 理论上可以存任意大小,任意类型的文件。

  2. 极高的数据持久性。Swift具备10个9以上的数据持久性。

  3. 完全对称的系统架构。Swift中各节点可以完全对等,能极大地降低系统维护成本。

  4. 可扩展性。因为Swift是完全对称的架构,扩容只需简单地新增机器,系统会自动完成数据迁移等工作,使各存储节点重新达到平衡状态。

  5. 无单点故障。整个Swift集群中,也没有一个角色是单点的,并且在架构和设计上保证无单点业务是有效的。

  6. 简单、可依赖。SWift架构优美、代码整洁、实现易懂,不管出现任何问题,都能通过日志、阅读代码迅速解决。

  7. RESTful API: 资源访问路径规范, 统一http协议访问。

  8. 功能拓展和二次开发方便: 可以用插件的方式给swift服务添加附属组件, 方便开发人员对服务进行功能扩展以及二次开发。

  9. 技术栈完备:针对用户管理和鉴权, 有Keystone;针对存储服务器监控, 有Swift Recon插件;针对客户端请求监控, 有Swift Informant插件;另外,作为OpenStack项目的旗舰产品之一, Swift和Openstack技术栈的其他产品进行整合和扩展非常容易。


公有云Swift系统设计


  1. 使用lvs做proxy负载均衡和故障转移

  2. 使用udp发送到本机rsyslog收集日志

  3. 依照机柜划分zone

  4. 使用keystone认证

  5. 使用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: 用户提交文件信息, 公有云生成并返回文件的ID

3. 用户获取分段上传地址

4. 用户按分段地址上传分段到swift,swift在接收分段文件的同时验证每个分段的MD5值, 确保接收到的分段的有效性

5. 每个分段上传完成, 汇报公有云

6.公有云filecenter判断文件上传完毕,异步提交文件清单及通知特征值计算


四、上传功能


基于上述核心上传流程,公有云还实现了“秒传”,“断点续传”,“并发上传”等功能。


秒传


公有云利用独创的ppfeature作为上传文件的唯一标识, 其特点为客户端可以快速计算获取; 当上传的文件ppfeature和库文件重叠时, 判定为已存在文件, 走秒传流程.


断点续传


公有云利用分段缓存的机制实现断点续传; 当上传未完成文件时, 系统返回剩余分段地址给客户端。


并发上传

公有云利用分段缓存的机制实现并发上传:不同客户端可以同时上传同一文件, 并且各自获取不同的分段地址, 从而实现无重复接力上传。



推荐阅读
  • 本章主要列举服务器程序的各种网络模型,示例程序以及性能对比后面再写。一、分类依据。服务器的网络模型分类主要依据以下几点(1)是否阻塞方式处 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 架构设计:负载均衡层设计方案之负载场景和解决方式篇
    来自:JAVA入门中https:blog.csdn.netyinwenjiearticledetails46605451在上一篇《标准Web系统的架构分层》文章中&# ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了架构文摘:消息队列设计精要相关的知识,希望对你有一定的参考价值。消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具 ... [详细]
  • 好东西,负载均衡LVS
    理论知识点一,集群的含义1,多台主机构成,对外表现是这个整体,提供一个访问入口,多台主机组成集群,2,分类①、负载均衡群集②、高可用群集③、高性能运算群集3,负载均衡集群提高系统的 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • 开发笔记:Python脚本优化Zabbix多行日志监控
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python脚本优化-----Zabbix多行日志监控相关的知识,希望对你有一定的参考价值。通过使用z ... [详细]
  • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
author-avatar
香福武燕_205
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有