热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

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

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

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

也就是说,我们现在随着互联网的发展、移动互联网的发展,我们的手机,我们的移动互联网的发展,像网页如果要读取存储或者读取数据的话,我们会希望他能够直接访问存储系统,而不像再像以前,先通过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的创建
  • 第三个是最终一致性的问题
本文作者:谭盼雨

来源:51CTO

推荐阅读
  • 伸缩性|发生_分布式文件系统设计,该从哪些方面考虑?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了分布式文件系统设计,该从哪些方面考虑?相关的知识,希望对你有一定的参考价值。点击上方关注“ ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Hadoop之Yarn
    目录1Hadoop1.x和Hadoop2.x架构区别2Yarn概述3Yarn基本架构4Yarn工作机制5作业提交全过程6资源调度器7任务的推测执行1Hadoop1.x和Hadoo ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • 于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题 ... [详细]
  • Zookeeper 总结与面试题汇总
    Zookeeper总结与面试题汇总,Go语言社区,Golang程序员人脉社 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
author-avatar
给糖就不骗你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有