OpenStack Swift跨地域存储集群的部署与优化

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
文件存储 NAS,50GB 3个月
简介:

OpenStack Swift,大家会说它是OpenStack的对象存储服务,或者对象存储项目,但是实际上对象存储这个词它的含义,不同的人有不同的理解。

首先,让我们先看一个例子,就是淘宝在06、07年的时候,开始用他们自己研发的分布式存储系统,或者用现在时髦的话说叫SDS存储系统,来替代NAS设备。就以前淘宝的图片都是放在NAS里面的,但是从06年开始逐步的替换,当然很快,现在早已经不见了,没有一台NAS,负责一台SAN在淘宝的后端里面。中间有一个数据,当然更新的数据在2010年的时候,淘宝后端的图片数量已经突破了280亿,这个数量也是非常巨大的。这也是造成他们为什么要替换NAS一个很重要的原因,就是因为对于海量数据存储,传统的NAS、传统的文件系统可能会遇到问题,这是一方面。另一方面,就是他要支持客户端直接访问。

也就是说,我们现在随着互联网的发展、移动互联网的发展,我们的手机,我们的移动互联网的发展,像网页如果要读取存储或者读取数据的话,我们会希望他能够直接访问存储系统,而不像再像以前,先通过Http服务,访问应用服务器或者访问web前端服务器,然后web再往后给到应用服务器。应用服务器再往后接到存储,然后再把数据吐出来,现在可能会希望能够由客户端直接访问存储,这样的话对整个存储系统的并发,一方面是对整个系统的并发有一个非常好的提升。另一方面,也对存储系统的并发提出了一个挑战,当然这样做以后就会大量节省中间那两层,web服务器和应用服务期的开销,简化整个系统的架构,所以他带来的好处也是很多的,这就是为什么像淘宝,他会在当年用,其实用现在的话就是SDS或者对象存储系统来替代当初的NAS。

那么淘宝只是一个例子,其实在互联网公司中,类似的架构、类似的技术在广泛的得到使用,互联网公司是这样。那对于传统行业,我们现在所谓的传统行业,或者我更习惯说是非互联网行业,

而过去将近一年多,将近两年时间我所从事的主要工作,就是我把所了解的互联网公司里面用到的比较好的技术推荐或者传播或者说帮助传统行业的非互联网产业的企业怎么样应用、怎么样改造他们的IT系统。

以前我们去银行办卡,需要排几十分钟的队才能办到一张卡,或者需要去指定网点才能办,而现在,比如在招行,进去10分钟,就可以办一张卡出来。为什么?因为我们不用再到柜台去排队了,虽然也要去网点,但是也有这样的一个机器,你站在这个机器前边,跟机器那边的人对话几句,然后签署几个电子档的文件就可以了。然后在他的后端,会把你的这段视频,实际上声音是要单独存储的。因为声文识别比视频识别目前来看,还是要更容易和准确一些,所以声音文件是要单独存储的,这是他们的业务,这是他们的应用,那后端的存储用什么?用以前传统存储还行不行,同样会面对像淘宝面对的两个问题,第一个是数据量的激增,以前银行可以说多长时间能存满100T的数据,,存100T会需要很长时间的数据积累,但是上了这套系统以后,因为大量的视频需要存储,所以很快这个存储容量就会发生一个非常大的增长,那以前传统的存储架构可能会有问题。另外这也是一种客户端,这个客户端,我们也会希望它能够直接访问存储系统,还有类似的,像以前我们去银行要复印一些,现在我们去了话,如果办借助卡,可能主要是复印一个身份证,但是实际上银行有很多贷款业务,中间有大量的票据需要复印、需要存档,那现在用什么?全都是扫描件,全都是电子档的数字图片存档。

面对这样的存储需求,背后最好的解决方案是什么?

就是我们今天在这里谈论的对象存储。对象存储,也可以叫类似于S3的存储,S3—like storgae,它主要有两个特征。

第一个是没有一级一级的文件夹、目录数的东西,它是用户在它的存储空间只能看到一级,类似于目录动,叫做桶或者叫做容器。然后它就把对象放到那些桶里面、容器里面,这个就跟我们使用传统文件系统一级一级建目录的方式不一样。大家知道在亚马逊的云上面,最早提出的服务,在它的虚机、云主机推出之先,最早提供的服务也是对象存储。

另外一个特点,提供REST API ,也就是说直接能够HTTP的访问。这个是HTTP的接口,它非常简单,因为它是REStful的,所以他主要通过put、get、Delete、post,四类接口对数据进行操作。

文件存储

跟文件存储非常类似,叫Object Storage。Object Storage是对象,这个在台湾那边给它翻译为物件存储,我觉得更准确一些,他说实际上这个Object 就是东西,东西往框里放,就是这样一个意思。那Object本质上或者从另外一个角度来说,它就是我们今天说的文件,只不过它的系统这种形态方面不太一样。

这个也涉及到一个问题,就是这个东西没有文件夹,没有目录数了,我们怎么管理数据对吧,现在很多人会想到这个事,他又会有疑虑,就是我的应用,以前用的文件夹管理数据,现在没有了,怎么管理数据?

其实仔细想一下,现在在很多场景下文件存储没有用到文件夹。这个听起来很疯狂,文件的存储没有用到文件夹,其实大家仔细想一下,举一个非常直接的例子,你知道你手记拍的照片存在哪个目录下,文件名是什么吗?其实你不知道,但是你用的很好。如果程序员来编程的话,在后端实现一个系统的时候,其实也是类似的,现在很多地方,都不需要用文件夹来管理数据的,不需要用目录来管理数据的。当然并不是说这种东西要否定它,只是说我们在遇到某些问题的时候可以多想一下,像buckets实现,还有像操作系统的实现,它肯定得依赖文件系统。

海量数据存储的场景

大数据存储场景主要包括这两个,一个是超大文件存储,一个是海量小文件存储。另外一个是极高的可靠性与可用性,就是极高的。就是这个基本上可以很容易做到你的数据永远不丢失,然后永远在线的访问,这个对于Swift来说要做到很容易。当然必须得做正确,不正确的做法其实也是很容易出问题的,所以我们强调运维这个事情。特别是对分布式系统来说,正确的做事情,运维在中间基本上,做OpenStack,有一句话叫三分产品、七分运维,这个是很重要的。

由于Swift采用的是全分布式架构,所以它的扩展性非常好,没有集中节点。比如说HDFS,包括像淘宝的TFS,其实还是有NAS接点的,那NAS接点往往就会成为大家关注瓶颈的关键,这个在Swift里面是没有的,所以它的扩展性非常好。而且很多存储系统,随着规模的扩展到一定程度,规模特别大的时候,性能可能会下降,或者说衰减的很厉害,但是Swift不会。Swift几乎在非常大的规模,仍然做到性能随着规模的线性提升。

那么,还有就是目前可以支持纠删码,所以分布式存储三副本或者多副本,不再耗裸存储容量的事情,其实在Swift里面目前已经是得到解决,

现在在Swift基础上,做了哪些企业级用户比较关心事情?

第一个是安全性。

第二个是我们除了支持对象结构以外,我们为了照顾以前习惯NAS的应用,我们也可以支持POSIX兼容的接口。

第三个就是就是支持应用开发。

另外,说到在跨地域的基础之上,我们其实还可以提供双活或者多活的存储解决方案。所以在我们存储解决方案里面,针对目前这种企业级客户比较关注的双活和多活的事情,提供了这种定制化的解决方案。

跨域部署主要是三个方面:

第一个是在硬件上

第二个就是Ring的创建

第三个是最终一致性的问题
本文转自d1net(转载)

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
相关文章
|
6月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
377 2
|
4月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
130 3
|
8天前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
23 1
|
18天前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
40 5
|
3月前
|
存储 移动开发 Swift
使用Swift进行iOS应用开发:探索现代移动开发的魅力
【8月更文挑战第12天】使用Swift进行iOS应用开发,不仅能够享受到Swift语言带来的简洁、快速、安全的编程体验,还能够充分利用iOS平台提供的丰富资源和强大功能。然而,iOS应用开发并非易事,需要开发者具备扎实的编程基础、丰富的实践经验和不断学习的精神。希望本文能够为您的iOS应用开发之旅提供一些有益的参考和帮助。
|
4月前
|
Swift iOS开发 Kotlin
苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数
Swift可通过扩展实现类似Kotlin作用域函数效果。如自定义`let`, `run`, `with`, `apply`, `also`,增强代码可读性和简洁性。虽无直接内置支持,但利用Swift特性可达成相似功能。
70 7
|
4月前
|
调度 Swift Android开发
苹果iOS新手开发之Swift中的并发任务和消息机制
Swift的消息机制类似Android的Handler,实现任务调度有三种方式: 1. **Grand Central Dispatch (GCD)**:使用`DispatchQueue`在主线程或后台线程执行任务。 2. **OperationQueue**:提供高级接口管理`Operation`对象。 3. **RunLoop**:处理事件如输入源、计时器,类似Android的`Looper`和`Handler`。 **示例**: - GCD:在不同线程执行代码块。 - OperationQueue:创建操作并执行。 - RunLoop:用Timer添加到RunLoop中。
97 2
|
4月前
|
安全 编译器 Swift
探索iOS开发:Swift语言的现代魔法
【7月更文挑战第11天】本文深入探讨了Swift编程语言,它如何革新iOS开发领域,以及它为开发者带来的独特优势。我们将从Swift的基础语法出发,通过实际案例分析其性能优化技巧,最后讨论Swift在跨平台开发中的潜力。文章旨在为读者提供一个全面而深入的视角,了解Swift不仅仅是一门语言,更是一种推动创新的力量。
|
6月前
|
设计模式 前端开发 Swift
使用Swift进行iOS应用开发:深入探索与最佳实践
【5月更文挑战第24天】探索Swift在iOS开发中的深度应用与最佳实践。Swift以其简洁语法、类型安全、面向对象、高性能及与Objective-C的互操作性脱颖而出。使用Xcode设置开发环境,学习Swift语法,创建并设计项目,编写业务逻辑,同时进行调试和测试。遵循MVC模式,利用SwiftUI、并发特性,并注重内存管理,持续学习新工具和技术,以实现高质量应用开发。
|
6月前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
286 1
下一篇
无影云桌面