CN103595797B - 一种分布式存储系统中的缓存方法 - Google Patents
一种分布式存储系统中的缓存方法 Download PDFInfo
- Publication number
- CN103595797B CN103595797B CN201310578110.1A CN201310578110A CN103595797B CN 103595797 B CN103595797 B CN 103595797B CN 201310578110 A CN201310578110 A CN 201310578110A CN 103595797 B CN103595797 B CN 103595797B
- Authority
- CN
- China
- Prior art keywords
- memcache
- data block
- file
- metadata
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及一种分布式存储系统中的缓存方法,包括以下步骤:1)客户端上传文件到服务端,1a)先将文件的元数据和数据块写入分布式存储系统;1b)再将文件的元数据写入分布式缓存系统Memcache中;2)客户端从服务端读取文件,2a)判断在Memcache中是否查找到元数据,若为是,将Memcache中的元数据返回给客户端,否则执行步骤2b);2b)分布式存储系统先将查找到的元数据再次写入Memcache中;2c)分布式存储系统再将文件的元数据和数据块组合后返回给客户端。与现有技术相比,本发明具有加速客户端浏览操作的响应时间,减缓了分布式系统的访问压力,提高访问文件的一致性等优点。
Description
技术领域
本发明涉及一种缓存方法,尤其是涉及一种分布式存储系统中的缓存方法。
背景技术
随着信息时代的来临,人们产生的数据也正在迅速膨胀并变大,文件数量也随着迅猛增加,传统时代的采用单机系统做文件备份恢复,容易产生容量不易扩展、数据难以迁移,且易出现单点故障等诸多问题,所以越来越多的采用了多节点的分布式存储系统。
目前,大部分应用于文件备份恢复的分布式存储系统都是不带有缓存系统的,这样的系统恢复操作会有很大的性能问题和一致性问题。通常分布式存储系统都会保留多个副本,当客户端备份一个文件到分布式系统中的某一个节点上后,如果在该节点上读取该文件,那么服务器端直接读取磁盘上的数据返回,磁盘的IO(读写)相对内存和数据库操作来说是一个比较慢动作,而当磁盘IO达到一定瓶颈,读取操作的性能会急剧下降。如果在另一个节点上访问该文件,此时副本还没有同步完成,有的分布式系统会从其他的节点尝试读取指定的文件,此时跨网络的访问会更加延误本次读取操作的响应,性能非常糟糕;有的分布式系统则是本节点访问不到,直接通知客户端访问的文件不存在,或者通知客户端等多副本同步完成后再去访问,显然这是存在一致性问题的,明明已经备份上去的文件却不能立即读到,对于一些要求实时性比较高的应用系统来说,出现该问题是不能容忍的。
有些分布式存储系统是带有本地缓存系统的,一般都是采用本地数据库缓存,虽然解决了一部分的性能问题,但是还是很难解决上述的一致性问题。还有一些分布式存储系统为缓解读取的压力,增加专门用于读取文件的服务器做分布式缓存,需要采购对应的服务器,这样显然增加了极大的成本和资源浪费。
而Memcache是一个高性能的分布式的内存对象缓存系统,采用的Key-Value的存储结构。虽然是分布式缓存系统,但是它的服务端不存在多个副本,而分布式是客户端实现的,目前已有成熟的客户端配置分布式的API(Application Programming Interface,应用程序编程接口)。同时也提供了增删查改的操作API,使用起来比较方便。通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。但遗憾的是,文件备份领域的分布式存储系统少有采用Memcache做分布式缓存的。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种分布式存储系统中的缓存方法,将分布式存储系统和分布式缓存系统Memcache结合应用,加速客户端浏览操作的响应时间,减缓了分布式系统的访问压力,提高访问文件的一致性。
本发明的目的可以通过以下技术方案来实现:
一种分布式存储系统中的缓存方法,其特征在于,包括以下步骤:
1)客户端上传文件到服务端,
1a)先将文件的元数据和数据块写入分布式存储系统;
1b)再将文件的元数据写入分布式缓存系统Memcache中;
2)客户端从服务端读取文件,
2a)判断在Memcache中是否查找到元数据,若为是,将Memcache中的元数据返回给客户端,否则执行步骤2b);
2b)分布式存储系统先将查找到的元数据再次写入Memcache中;
2c)分布式存储系统再将文件的元数据和数据块组合后返回给客户端。
所述的步骤1)客户端上传文件到服务端具体为:
11)将上传文件拆分为元数据和数据块,其中元数据包括子对象索引、对象信息和数据块索引;
12)将子对象索引、对象信息、数据块索引和数据块写入分布式存储系统,写入完成后执行步骤13);
13)将子对象索引、对象信息、数据块索引写入Memcache中。
所述的步骤2)客户端从服务端读取文件具体为:
21)向Memcache中查找子对象索引,并判断是否找到,若为是,执行步骤23),否则,执行步骤22);
22)向分布式存储系统中查找子对象索引,找到后将其再次写入Memcache中,并执行步骤23);
23)根据找到的子对象索引,查找对象信息,并判断是否找到,若为是,执行步骤25),否则,执行步骤24);
24)向分布式存储系统中查找对象信息,找到后将其再次写入Memcache中,并执行步骤25);
25)向Memcache中查找数据块索引,并判断是否找到,若为是,执行步骤27),否则,执行步骤26);
26)向分布式存储系统中查找数据块索引,找到后将其再次写入Memcache中,并执行步骤27);
27)根据找到的数据块索引向分布式存储系统查找数据块,找到后执行步骤28);
28)将获取到的对象索引、对象信息、数据块索引和数据块组合后,返回给客户端。
与现有技术相比,本发明具有以下优点:
1)提升了文件的元数据读取速度,内存操作显然比数据库和磁盘操作快很多,而Memcache的数据正是存在内存中的,文件元数据的读取速度提高了,也就提高了文件整体读取的性能。
2)缓解分布式存储系统的访问压力,文件的读取操作很大一部分会经过分布式缓存系统后直接返回给客户端,读取操作由于不经过分布式存储系统,因此缓解了分布式存储系统的访问压力。
3)由于Memcache的服务端不会存在多个副本,Memcache中存在数据的一定是正确的和完整的,因此解决了访问的一致性问题。
附图说明
图1为本发明的整体结构示意图;
图2为文件树状结构图;
图3为本发明的写入文件过程示意图;
图4为本发明的读取文件过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例1
如图1所示,本发明分布式存储系统中的缓存方法,包括以下步骤:
客户端1上传文件到服务端2,
101)先将文件的元数据和数据块写入分布式存储系统22;
102)再将文件的元数据写入分布式缓存系统Memcache21中;
客户端1从服务端2读取文件,
103)判断在Memcache21中是否查找到元数据,若为是,将Memcache21中的元数据返回给客户端1,否则执行步骤102);
104)分布式存储系统22先将查找到的元数据再次写入Memcache21中;
105)分布式存储系统22再将文件的元数据和数据块组合后返回给客户端1。
之所以会出现写入到Memcache中,却查不到的情况,是因为Memcache是内存存储的,内存的存储容量是GB级别,而用户数据很可能是PB(1PB=1024*1024GB)级别或者以上级别。如此大的容量Memcache可能会存储不下。当容量满了之后,会自动删除掉最久未被访问的数据,通常用户的行为习惯是不太经常翻阅很久很久之前的文件,用户的大部分行为是查看近期的使用文档。
1、客户端上传文件到服务端具体为:
11)将上传文件拆分为元数据和数据块,其中元数据包括子对象索引、对象信息和数据块索引;
如图2所示,通常文件树状结构主要包含目录、子目录、目录信息、子文件、文件信息、文件和目录索引、数据块索引以及数据块。
根据Memcache的Key-Value存储特征,将这些信息重新整理。由于数据块比其他的信息的所占容量大很多,而Memcache采用内存保存的,内存容量是相对有限的,故数据块不存储在缓存中。将文件和目录统称为对象,每个对象都有一个全局唯一的uuid((Universally Unique Identifier)表示;文件和目录的信息称为对象信息,包括文件或目录名称,文件或者目录属性,及其他的元数据信息。文件和目录索引称为子对象索引,用于浏览查找子目录和子文件;数据块索引便于定位数据在底层存储的位置,利用该索引可直接获取数据块信息。
12)将子对象索引、对象信息、数据块索引和数据块写入分布式存储系统,写入完成后执行步骤13);
13)将子对象索引、对象信息、数据块索引写入Memcache中。
之所以在已经写入分布式存储系统后,再写入Memcache中,是为了后续的读过程做准备的。此步操作所用时间非常少,几乎不会影响写的性能。
2、客户端从服务端读取文件具体为:
21)向Memcache中查找子对象索引,并判断是否找到,若为是,执行步骤23),否则,执行步骤22);
22)向分布式存储系统中查找子对象索引,找到后将其再次写入Memcache中,并执行步骤23);
23)根据找到的子对象索引,查找对象信息,并判断是否找到,若为是,执行步骤25),否则,执行步骤24);
24)向分布式存储系统中查找对象信息,找到后将其再次写入Memcache中,并执行步骤25);
25)向Memcache中查找数据块索引,并判断是否找到,若为是,执行步骤27),否则,执行步骤26);
26)向分布式存储系统中查找数据块索引,找到后将其再次写入Memcache中,并执行步骤27);
27)根据找到的数据块索引向分布式存储系统查找数据块,找到后执行步骤28);
28)将获取到的对象索引、对象信息、数据块索引和数据块组合后,返回给客户端。
大部分情况下,读取过程向Memcache中读取元数据信息都能找到,这就大大提升了文件的读取操作。极少数情况未找到元数据信息的也会通过再次写入以便于下次读取时提升读取速度。
实施例2
以客户端在目录名为dir的目录下备份和读取一个文件名为file的文件为例,结合图3和图4进行详细阐述。
(1)写过程:
首先将文件拆分为元数据信息(包括子对象索引、对象信息、数据块索引)和数据块信息,通过自动生成的file的uuid和已存在的dir的uuid构造dir的子对象索引,通过file的uuid和读取file的文件名和文件属性值等信息构造对象信息,根据file的uuid和分块的大小构造数据块索引,然后将这些信息先写入分布式存储系统,然后再写入Memcache中,最后数据块以二进制的方式直接写入到分布式存储系统中。
(2)读过程:
步骤401.通过dir的uuid向Memcache中查找dir的所有子对象索引,若能找到与file相匹配的uuid,说明找到了,则执行步骤403;若未找到则执行步骤402。
步骤402.通过dir的uuid向分布式存储系统中查找dir的所有子对象索引,找到后将其再次写入Memcacahe中,然后执行步骤403。
步骤403.通过file的uuid向Memcache中查找对象信息,若找到了,执行步骤405:若未找到则执行步骤404。
步骤404.通过file的uuid向分布式存储系统中查找对象信息,找到后将其再次写入Memcacahe中,然后执行步骤405。
步骤405.通过file的uuid向Memcache中查找数据块索引,若找到了,则执行步骤407;若未找到则执行步骤406。
步骤406.通过file的uuid向分布式存储系统中查找数据块索引,找到后将其再次写入Memcacahe中,然后执行步骤407。
步骤407.根据找到的数据块索引向分布式存储系统查找数据块,找到后执行步骤408。
步骤408.根据前面一些步骤获取到的子对象索引,对象信息,数据块索引,数据块,将其组合返回给客户端。
Claims (1)
1.一种分布式存储系统中的缓存方法,其特征在于,包括以下步骤:
1)客户端上传文件到服务端,
1a)先将文件的元数据和数据块写入分布式存储系统;
1b)再将文件的元数据写入分布式缓存系统Memcache中;
2)客户端从服务端读取文件,
2a)判断在Memcache中是否查找到元数据,若为是,将Memcache中的元数据返回给客户端,否则执行步骤2b);
2b)分布式存储系统先将查找到的元数据再次写入Memcache中;
2c)分布式存储系统再将文件的元数据和数据块组合后返回给客户端;
所述的步骤1)客户端上传文件到服务端具体为:
11)将上传文件拆分为元数据和数据块,其中元数据包括子对象索引、对象信息和数据块索引;
12)将子对象索引、对象信息、数据块索引和数据块写入分布式存储系统,写入完成后执行步骤13);
13)将子对象索引、对象信息、数据块索引写入Memcache中;
所述的步骤2)客户端从服务端读取文件具体为:
21)向Memcache中查找子对象索引,并
判断是否找到,若为是,执行步骤23),否则,执行步骤22);
22)向分布式存储系统中查找子对象索引,找到后将其再次写入Memcache中,并执行步骤23);
23)根据找到的子对象索引,查找对象信息,并判断是否找到,若为是,执行步骤25),否则,执行步骤24);
24)向分布式存储系统中查找对象信息,找到后将其再次写入Memcache中,并执行步骤25);
25)向Memcache中查找数据块索引,并判断是否找到,若为是,执行步骤27),否则,执行步骤26);
26)向分布式存储系统中查找数据块索引,找到后将其再次写入Memcache中,并执行步骤27);
27)根据找到的数据块索引向分布式存储系统查找数据块,找到后执行步骤28);
28)将获取到的对象索引、对象信息、数据块索引和数据块组合后,返回给客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310578110.1A CN103595797B (zh) | 2013-11-18 | 2013-11-18 | 一种分布式存储系统中的缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310578110.1A CN103595797B (zh) | 2013-11-18 | 2013-11-18 | 一种分布式存储系统中的缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103595797A CN103595797A (zh) | 2014-02-19 |
CN103595797B true CN103595797B (zh) | 2017-01-18 |
Family
ID=50085777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310578110.1A Active CN103595797B (zh) | 2013-11-18 | 2013-11-18 | 一种分布式存储系统中的缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103595797B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104133882B (zh) * | 2014-07-28 | 2017-06-23 | 四川大学 | 一种基于hdfs的小文件处理方法 |
CN105867846A (zh) * | 2016-03-28 | 2016-08-17 | 联想(北京)有限公司 | 一种数据处理方法、服务器及系统 |
CN105787124A (zh) * | 2016-03-28 | 2016-07-20 | 中国建设银行股份有限公司 | 应用于数据库的数据处理方法、装置及数据存储系统 |
CN107301177B (zh) * | 2016-04-14 | 2020-02-18 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN108737573A (zh) * | 2018-06-28 | 2018-11-02 | 郑州云海信息技术有限公司 | 一种分布式存储集群及其服务响应控制方法、装置和设备 |
CN108958660B (zh) * | 2018-07-02 | 2021-03-19 | 深圳市茁壮网络股份有限公司 | 分布式存储系统及其数据处理方法和装置 |
CN110413449B (zh) * | 2019-06-29 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种基于文件存储系统的元数据备份与恢复方法 |
CN111966751B (zh) * | 2020-08-14 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 分布式对象存储元数据存储方法及系统、读方法及系统 |
CN113342837B (zh) * | 2021-08-06 | 2021-11-09 | 北京金山云网络技术有限公司 | 数据发送方法、装置、电子设备和计算机可读介质 |
CN114051056B (zh) * | 2022-01-13 | 2022-05-10 | 阿里云计算有限公司 | 数据缓存及读取方法、数据存取系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
CN102611752A (zh) * | 2012-03-21 | 2012-07-25 | 南京邮电大学 | 一种电信运营商参与对等计算技术的监管服务器的实现方法 |
CN102855239A (zh) * | 2011-06-28 | 2013-01-02 | 清华大学 | 一种分布式地理文件系统 |
CN103092927A (zh) * | 2012-12-29 | 2013-05-08 | 华中科技大学 | 一种分布式环境下的文件快速读写方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9380127B2 (en) * | 2011-05-18 | 2016-06-28 | Alibaba Group Holding Limited | Distributed caching and cache analysis |
-
2013
- 2013-11-18 CN CN201310578110.1A patent/CN103595797B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
CN102855239A (zh) * | 2011-06-28 | 2013-01-02 | 清华大学 | 一种分布式地理文件系统 |
CN102611752A (zh) * | 2012-03-21 | 2012-07-25 | 南京邮电大学 | 一种电信运营商参与对等计算技术的监管服务器的实现方法 |
CN103092927A (zh) * | 2012-12-29 | 2013-05-08 | 华中科技大学 | 一种分布式环境下的文件快速读写方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103595797A (zh) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103595797B (zh) | 一种分布式存储系统中的缓存方法 | |
US11269832B2 (en) | Application-centric object configuration | |
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
CN104731921B (zh) | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 | |
US10296611B2 (en) | Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes | |
US20170315882A1 (en) | Protected write-back cache transaction replication | |
US10262004B2 (en) | Native snapshots in distributed file systems | |
CN105183839A (zh) | 一种基于Hadoop的小文件分级索引的存储优化方法 | |
US20160283501A1 (en) | Posix-compatible file system, method of creating a file list and storage device | |
WO2013174305A1 (zh) | 基于SSD的Key-Value型本地存储方法及系统 | |
US20170091215A1 (en) | Write-back cache transaction replication to object-based storage | |
US20170091262A1 (en) | Object storage backed file system cache | |
CN113377868B (zh) | 一种基于分布式kv数据库的离线存储系统 | |
CN111367991B (zh) | 一种基于消息队列的MongoDB数据实时同步方法及系统 | |
CN111159176A (zh) | 一种海量流数据的存储和读取的方法和系统 | |
GB2439577A (en) | Storing data in streams of varying size | |
US8818971B1 (en) | Processing bulk deletions in distributed databases | |
CN103942301A (zh) | 一种面向多数据类型访问应用的分布式文件系统 | |
US20170286442A1 (en) | File system support for file-level ghosting | |
US10762139B1 (en) | Method and system for managing a document search index | |
US20070192273A1 (en) | Online data volume deletion | |
US11341163B1 (en) | Multi-level replication filtering for a distributed database | |
US20170153951A1 (en) | Incremental synchronous hierarchical system restoration | |
US11055266B2 (en) | Efficient key data store entry traversal and result generation | |
CN111796767A (zh) | 一种分布式文件系统及数据管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant after: SHANGHAI EISOO INFORMATION TECHNOLOGY CO., LTD. Address before: 200072 room 3, building 840, No. 101 Middle Luochuan Road, Shanghai, Zhabei District Applicant before: Shanghai Eisoo Software Co.,Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |