一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

针对分布式存储系统中的变化检测的动态散列函数组合的制作方法

2021-12-08 02:19:00 来源:中国专利 TAG:

针对分布式存储系统中的变化检测的动态散列函数组合


背景技术:

1.分布式存储系统通常包括路由器、交换机、网桥和其他网络设备,它们经由有线或无线网络链路将大量计算机服务器、网络存储设备和其他类型的计算设备互连起来。计算机服务器可以托管一个或多个虚拟机、容器或其他类型的虚拟化组件,以便向用户提供各种计算和/或存储服务。例如,计算机服务器可以被配置为:提供允许用户存储、编辑、检索或执行其他数据管理任务的数据存储和检索服务。


技术实现要素:

2.提供本发明内容以便以简化的形式对下面在具体实施方式中进一步描述的设计构思的选择进行介绍。本发明内容并不旨在标识要求保护的主题的关键特征或重要特征,也不旨在用于限制要求保护的主题的范围。
3.当今的分布式存储系统通常按照分层架构进行布置,以便为大量用户提供可靠且可扩展的存储服务。分布式存储系统的每一层都可以依赖相应的计算系统来提供设计的服务。例如,分布式存储系统可以包括高度可扩展且能够存储大量数据的存储层。存储层通常可以包括一组后端服务器,这些后端服务器被配置为:促进用户的存储、检索和/或其他数据管理任务。这组后端服务器还可以提供用于执行各种数据分析或分析任务的计算资源。此类分析任务的示例包括文档视图的聚合、修改信号的检测、趋势文档的计算等。此类存储层的一个示例是由华盛顿州雷德蒙德市的微软公司提供的microsoft outlook
4.虽然存储层适合执行大量数据的存储和分析,但存储层中使用的数据结构可能不适合提供对个体数据项的随机访问。例如,存储层可能不会在与数据项在列表中的位置或列表的大小无关的恒定时间访问列表中的数据项。此外,这种分布式存储系统的可扩展性通常是通过将存储的数据或对此类数据的索引拆分或“分片”到分区中来实现的。例如,在某些分布式存储系统中,存储层中数据项的主索引可以被拆分为多个子索引。代替引用数据项,主索引可以引用子索引,而子索引又可以引用数据项。在这样的分布式存储系统中,当用户请求存储的数据项时,在存储层中执行多个操作(例如,扇出联合)以对此类引用进行解析。执行多个操作可能会导致服务用户请求的高延时和计算负载。
5.一种用于提供对存储数据的快速随机访问的技术是将所存储的数据的子集(有时被称为“高影响数据”)高速缓存在被配置为提供针对高影响数据的高速缓存服务的集中式存储库中。例如,在存储层中运行的一组分析服务器和/或计算过程(在本文中被称为“摄取处理器”)可以被配置为:将所存储的数据的子集作为高影响数据推送到集中式存储库中。推送到集中式存储库的高影响数据可以包括各种场景计算服务可能感兴趣的各种类别的存储的数据。在一个示例中,在集中式存储库中高速缓存的针对存储层中存储的文档的高影响数据可以包括文档名称、文档扩展(例如“txt”)、最后更新的日期/时间、查看文档的次数、修改文档的次数、可以检索到文档的通用资源定位符(url)和/或与文档相关的其他合适信息。通过对高影响数据进行高速缓存,用户可以容易地从集中式存储库中检索文档和/或文档的其他相关信息。
6.场景计算服务可以被配置为:从集中式存储库中检索高速缓存的高影响数据,并对存储层中存储的底层数据的变化做出反应,以提供相应的用户体验。例如,在上面的文档示例中,搜索索引服务可能对用于更新搜索索引的标题、主体、附录或其他合适类型的文档内容的变化感兴趣。另一方面,文档元数据服务可能对用于更新对文档的查看/编辑的次数的文档的查看者列表和文档的最后修改的时间戳感兴趣。
7.在某些分布式存储系统中,一旦在存储的文档中检测到任何变化,就向所有场景计算服务发送总括通知(blanket notification)以便进行进一步处理。检测到的变化的示例可以包括对文档的属性的写操作。然而,这种总括通知会导致分布式存储系统中计算资源的浪费。首先,总括通知的传输可能涉及资源密集型通知调用(例如,超文本传输协议或“http”请求或远程过程调用)。其次,不同的场景计算服务可能对文档的不同属性的变化感兴趣。例如,在文档示例中,搜索索引服务可能对用于更新搜索索引的文档查看者列表或文档的修改次数的变化不感兴趣。另一方面,文档元数据服务可能对文档主体或标题的变化不感兴趣。因此,总括通知中指示的变化可能适用于一些场景计算服务,但与其他场景计算服务无关。尽管总括通知中指示的变化不相关,但所有场景计算服务都可能消耗额外的计算、网络、输入/输出和/或其他合适类型的资源来确定总括通知中指示的变化是否与个体场景计算服务相关。例如,可以消耗各种类型的资源来执行集中式存储库处的高影响数据的附加读取操作。这种读取操作会导致托管集中式存储库的服务器上的高计算负载、计算机网络中的高网络带宽消耗和/或对分布式存储系统的性能和/或操作的其他负面影响。
8.公开的技术的若干实施例可以通过在分布式存储系统中实现文档属性的粒度变化检测来解决上述缺陷的至少一些方面。在某些实施方式中,分布式存储系统可以包括存储层,该存储层具有经由计算机网络彼此可操作地耦合的一个或多个后端服务器、一个或多个集中式存储服务器以及一个或多个场景计算服务器。集中式存储库服务器可以被配置为:为存储在存储层中的数据的子集提供集中式存储库和高速缓存服务。场景计算服务器可以被配置为:响应于存储在后端存储服务器中的文档的某些属性的变化来提供各种类型的计算服务,例如上述搜索索引服务和文档元数据服务。
9.后端服务器可以被配置为:提供各种数据存储服务以促进存储、检索、修改、删除和/或其他合适类型的数据管理操作。后端服务器还可以被配置为提供摄取处理器,该摄取处理器被配置为:对在存储层接收并存储在存储层中的新的和/或经更新的数据进行分析。在某些实现中,摄取处理器可以被配置为:从场景计算服务接收注册或其他合适类型的指示。注册分别指示文档的一个或多个属性、相应的场景计算服务希望接收通知的变化。这种注册可以作为列表、表格或其他合适的数据结构保存在数据存储单元中。
10.在某些实施例中,集中式存储库可以包括变化检测器,该变化检测器被配置为:对在摄取处理器处接收到的数据项的一个或多个属性执行粒度变化检测。尽管下面将变化检测器描述为集中式存储库的一部分,但在其他实施例中,变化检测器也可以被配置为摄取处理器的一部分、分布式存储系统中的独立计算服务或其他合适的配置。
11.使用文档作为例子,当在摄取处理器处接收到文档的新版本时,摄取处理器可以从文档中提取某些高影响数据并将提取的高影响数据写入集中式存储库。进而,集中式存储库(或其组件)处的变化检测器可以被配置为:将接收到的新版本中的文档的属性的各种值与存储在集中式存储库中的先前版本中的属性的各种值进行比较。例如,变化检测器可
以比较文档的主体和/或标题以确定是否在主体和/或标题中检测到变化。在另一个示例中,变化检测器还可以将新版本中的文档的查看次数和/或修改次数与旧版本中的查看次数和/或修改次数进行比较。
12.响应于检测到属性中的至少一个属性的变化,变化检测器可以被配置为:向摄取处理器提供关于检测到的变化的指示。作为响应,摄取处理器可以被配置为:生成通知并将通知发送到那些已经注册接收针对检测到的属性变化的通知的场景计算服务。例如,当检测到文档的主体和/或标题中的变化时,摄取处理器可以被配置为:向搜索索引服务而不是向文档元数据服务发送通知。另一方面,当检测到查看次数或修改次数的变化时,摄取处理器可以被配置为:向文档元数据服务而不是向搜索索引服务发送通知。因此,可以减少摄取处理器发送的通知数量以及用于验证通知相关性的后续读取操作,从而导致降低计算负载、降低网络带宽消耗和/或降低分布式存储系统中其他资源的消耗。
13.在某些实施例中,检测哪一个或多个属性发生了变化可以包括:将散列函数与文档的属性相关联,并且在摄取处理器处执行相关联的散列函数以促进确定相应的属性是否发生了变化。例如,摄取处理器可以被配置为:将与各个属性相关联的散列函数应用于接收到的文档的新版本中的属性的值以导出散列值(在本文中被称为“新散列值”或h
new
)。然后,摄取处理器可以将生成的新散列值作为高影响数据的一部分推送到集中式存储库。
14.在接收到新散列值时,集中式存储库处的变化检测器可以被配置为:将新散列值与存储在集中式存储库中的文档的同一属性的先前值(在本文中称为“先前散列值”或h
old
)进行比较。如果新散列值与先前散列值不同,则变化检测器可以向摄取处理器指示检测到文档属性的变化。如果新散列值与先前散列值匹配或基本匹配(例如,匹配度大于90%),则变化检测器可以指示相应的属性没有发生变化。
15.在摄取处理器中执行散列函数可以利用存储层的高可扩展性来降低存储层中的计算资源成为瓶颈的风险。此外,通过选择适用于每个属性的散列函数,如下文更详细描述的,可以进一步减少存储层处的计算资源的消耗并且导出的散列值可以具有小的数据大小。产生的值的小的数据大小可以在确定属性是否发生了变化时导致集中式存储库中的低存储开销、低网络带宽消耗以及高效的散列比较。
16.所公开的技术的方面还涉及选择合适的散列函数来与所存储的数据项(例如上述文档)的各个属性相关联。在某些实现中,多个不同的散列函数可以与文档的相应属性静态关联。例如,返回输入值作为输出的恒等函数可用于对文档的查看次数和修改次数。在另一示例中,xxhash函数可以与文档的主体相关联。
17.在另外的实施方式中,散列函数与属性的关联可以是动态的,例如基于属性的值的数据类型和/或大小。例如,恒等函数可用于值是整数或短字符串(例如,少于10个或其他合适的字符数)的属性。因此,对文档的查看次数和修改次数可以与恒等函数相关联。对于不是整数或短字符串的值,其他散列函数被配置为:将属性值的数据映射到与该值的数据大小不同的固定大小的散列值。例如,fowler

noll

vo(fnv)散列函数可以与具有四到二十个字节数据大小的值的属性相关联。xxhash64函数可以与具有大数据大小(例如,大于20个字节)的值的属性相关联。安全散列试探法256(sha256)函数可应用于当相同数据的冲突不能被容忍时的属性值,例如当要检测的变化的次数高于阈值时。例如,当几乎需要检测属性的每一个变化时,将sha256应用于属性值可以产生256比特散列值(或其他阈值比特散列
值),其实现低得多的产生冲突的风险。
18.在某些实施方式中,摄取处理器可以被配置为:使用将散列函数与属性的值大小范围相关联的配置文件。例如,具有小于或等于四个字节的值的属性可以与恒等函数相关联,而具有五到二十个字节之间的值的属性可以与fnv散列函数相关联。具有大于二十字节的值的属性可以与xxhash64相关联。此外,在任何情况下都不能容忍冲突的属性可以与sha256相关联。
19.在其他实施方式中,摄取处理器可以被配置为:使用成本函数来呈现散列函数的动态选择作为优化操作。不同的散列函数具有不同的存储空间(例如,输出散列值大小)、计算资源成本(例如,计算散列值的计算成本)、冲突率和/或其他合适的特性。因此,优化操作可以定义为:对于一属性,选择散列函数来使处理器周期和存储开销最小化,同时将冲突数量保持在阈值以下,并使必须读取以进行完整比较的属性数据的总量最小化。示例成本函数j(
hi
)可以表示如下:
20.j(
hi
)=w
collision
*cr
hi
w
cpu
*cpu
hi
w
storage
*storage
hi
w
data
*data
hi
,其中,cr
hi
是冲突率,cpu
hi
是处理器周期,storage
hi
是散列值的存储大小,data
hi
∈{属性大小(propertysize),storage
hi
},并且w是与各种相应参数相关联的权重。
21.当分布式存储系统运行时,与前述参数相关联的不同权重可以发生变化。例如,可用的系统资源(例如,计算或存储)可以发生变化,从而使计算资源变得丰富。因此,可以调整用于计算资源的权重以造成为同一属性选择与可用系统资源发生变化之前不同的散列函数。
22.所公开的技术的附加方面涉及通过将相关属性一起分组,并针对该组属性而不是该组中的每个属性生成散列值来执行变化检测。不受理论的束缚,认识到数据项(例如,文档)的某些属性经常一起发生变化。例如,查看次数经常随着对文档的修改次数而变化。因此,将属性组合成一个组并针对该组生成散列值可以使得能够快速确定该组中的任何属性是否发生了变化。如果没有检测到组的变化,则可以跳过对该组中每个属性的完全比较,并且可以将元数据添加到新版本中进行相应的指示。如果检测到组中的变化,则可以对该组中的每个属性进行比较以查看哪一个或多个属性发生了变化。
23.根据所公开的技术的附加方面,对属性进行分组还可以使用优化操作。如果不同属性之间变化的相关性用于对属性进行分组,则可以设置“分组相关性阈值”,使得要读取用于属性和散列比较的数据量低于大小阈值和/或最小化。变化的相关性可以包括指示当第二属性发生变化时第一属性可能发生变化的概率(例如,作为百分比)的数据,反之亦然。可以经由属性的历史数据的统计分析或经由其他合适的方式来开发变化的相关性。在一些实施例中,如果属性的值已经被进行了散列,则可以使用组合操作(例如,左移并执行按比特异或)来导出组散列值。然而,如果属性已经通过了恒等函数,则可以对属性值的组合(被称为组值)执行额外散列操作以导出组散列值。在其他实施例中,可以使用属性的多个分组,其中,属性可以是多个组的一部分。
24.一种用于生成属性分组的技术可以包括:维护属性的协方差矩阵。协方差矩阵是这样一种矩阵,其在i、j位置的元素是随机向量的第i个和第j个元素之间的协方差(即联合可变性的度量)。协方差矩阵的计算可以被简化为:如果属性发生了变化,则该属性的值为1。如果该属性没有发生变化,则该属性的值为0。如果属性与已经在聚类中的属性组p
cj
中的
一些(或全部)属性足够相关(即,协方差矩阵中与属性对<pi,p
cj
>相对应的值高于阈值tc),则可以使用聚类试探法通过将属性pi分配给现有聚类(属性组)来构建分组。如果属性不够相关,即在协方差矩阵中没有属性pi的值高于阈值tc,则可以创建仅包含该属性的新聚类(即新的属性组)。另一种分组试探法可以包括:根据聚类相似度函数确定“最靠近的”聚类并将属性分配给该最靠近的聚类(即,属性组)。不管使用哪种试探法来创建属性分组,为了检测哪些属性已经变化而要读取和比较的数据量可以保持在阈值以下和/或最小化。
25.在某些实施方式中,可以在分布式存储系统开始运行之前计算属性分组,但也可以以离线批处理方式定期计算属性分组。在确定属性分组后,其中每个比特与一个属性相对应的比特字段可用于记录哪个属性发生了变化。例如,如果相应属性没有发生变化,则可以将比特设置为零。当相应属性发生变化时,可以将同一比特设置为1。在另外的实施方式中,可以以在线方式改变属性分组,从而更好地适应数据的时间变化。在另外的实施方式中,单个属性可以包括在多个不同的组中。这种包括可以允许随时检测变化。例如,当检测到一个组发生变化而另一组未发生变化时,可以确定这两组中的某个属性都没有发生变化。
附图说明
26.图1是说明根据公开的技术的实施例的、实施粒度变化检测的分布式存储系统的示意图。
27.图2a

图2d是说明根据所公开的技术的实施例的、图1中的用于执行粒度变化检测的分布式存储系统的某些硬件/软件组件的示意图。
28.图3a

图3c是说明根据所公开的技术的实施例的、在签名生成期间图2a

图2d的签名组件的某些硬件/软件组件的示意图。
29.图4是说明根据所公开的技术的实施例的、图2a

图2d的签名组件的某些硬件/软件组件实施属性分组的示意图。
30.图5是说明根据所公开的技术的实施例的、属性的一种实例分组的文氏图。
31.图6a

图6c是说明根据所公开的技术的实施例的、分布式存储系统中粒度变化检测过程的流程图。
32.图7是适用于图1中的分布式存储系统的某些组件的计算设备。
具体实施方式
33.下文描述了用于数据中心或其他合适的分布式存储系统中的粒度变化检测的系统、设备、组件、模块、例程、数据结构和过程的某些实施例。在以下描述中,包括了组件的具体细节以提供对所公开的技术的某些实施例的透彻理解。相关领域的技术人员还将理解,该技术可以具有额外的实施例。也可以在没有下文参考图1

图7描述的实施例的若干细节的情况下实施该技术。
34.如本文中所使用的,术语“分布式存储系统”通常是指具有路由器、交换机、网桥和其他网络设备的互连计算机系统,这些网络设备经由有线或无线网络链路将大量计算机服务器、网络存储设备和其他类型的计算设备相互连接和/或连接到外部网络(例如互联网)。单独的服务器或存储节点可以包括一个或多个持久存储设备,例如硬盘驱动器、固态驱动
器或其他合适的计算机可读存储介质。
35.也在本文中使用的“文档”通常是指包含描述和/或标识计算机文件的各种类型的数据和元数据的计算机文件。各种类型的数据和元数据在本文中被称为文档的“属性”。示例属性可以包括标题、内容主体、作者、通用资源定位符(url)、查看次数、编辑次数和/或与文档相关的其他合适信息。每个属性都可以被定义为包含相应值的参数。例如,作者属性可以具有一个包含姓名的值,例如“nick jones”。查看次数属性可以包括包含整数的值,例如“4”。
36.如本文中所使用的,文档的“版本”通常是指文档的状态或形式。版本可以由版本号、编辑日期/时间、编辑者姓名、保存的日期/时间和/或其他合适的属性来定义。“新版本”通常是指文档的数据和/或元数据的任何方面具有至少一项变化的文档状态。例如,文档的新版本可以包括对文档内容的编辑或文档的一个或多个属性(例如,查看次数)的变化。“先前版本”是文档的另一种状态,可以直接或间接地从先前版本导出新版本。
37.也在本文中使用的“场景计算服务”通常是指通过计算机网络(例如被设计为提供设计的用户体验的互联网)提供的一个或多个计算资源。示例场景计算服务包括软件即服务(“saas”)、平台即服务(“paas”)和基础设施即服务(“iaas”)。saas是一种软件分发技术,其中软件应用由云服务提供商托管在例如数据中心,并由用户通过计算机网络访问。paas通常是指无需下载或安装即可通过计算机网络交付操作系统和相关服务。iaas通常是指用于支持存储、硬件、服务器、网络设备或其他组件的外包设备,所有这些都可以通过计算机网络访问。
38.可以配置各种场景计算服务以提供不同的用户体验。一种示例场景计算服务可以被配置为:将文档的各种属性编译成搜索索引。在另一个示例中,另一种场景计算服务可以被配置为:接收表示用户查看文档的信号,并且响应于接收到的信号,向其他用户提供电子消息以推荐查看同一文档。在进一步的示例中,场景计算服务可以被配置为提供其他合适的用户体验。
39.在某些分布式存储系统中,一旦在文档中检测到任何变化,就向所有场景计算服务发送总括通知以便进行进一步处理。然而,这种总括通知会导致分布式存储系统中计算资源的浪费。首先,总括通知的传输可能涉及资源密集型通知调用(例如,http请求或远程过程调用)。其次,不同的场景计算服务可能对文档的不同属性的变化感兴趣。例如,搜索索引服务可能对用于更新搜索索引的文档查看者列表或文档的修改次数的变化不感兴趣。另一方面,文档元数据服务可能对文档的主体或标题的变化不感兴趣。因此,总括通知中指示的变化可能适用于一些场景计算服务,但与其他场景计算服务无关。
40.尽管总括通知中指示的变化不相关,但所有场景计算服务都可能消耗额外的计算、网络、输入/输出和/或其他合适类型的资源来确定总括通知中指示的变化是否与个体场景计算服务相关。例如,可能会消耗各种类型的资源来执行额外的读取操作。这种读取操作会导致高计算负载、计算机网络中的高网络带宽和/或对分布式存储系统的性能和/或操作的其他负面影响。
41.所公开的技术的若干实施例可以通过在分布式存储系统中实现文档属性的粒度变化检测来解决上述缺陷的至少一些方面。在某些实施方式中,可以在分布式存储系统中实现变化检测器,以确定当与同一文档的先前版本相比时,文档的新版本中哪一个或多个
属性发生了变化。基于所确定的一个或多个属性,可以选择性地将通知发送到先前注册为接收针对一个或多个属性的变化的通知的场景计算服务。因此,可以避免对检测到的属性变化不感兴趣的场景计算服务的代价高昂的http请求和/或远程过程调用。此外,还可以避免用于确定通知中指示的变化是否实际上与场景计算服务相关的额外的计算资源。因此,当与使用总括通知相比时,分布式存储系统的计算负载、网络带宽和/或其他计算资源的消耗可以减少,如下文参考图1

图7更详细地描述的。
42.图1是说明根据所公开的技术的实施例的、实施粒度变化检测的计算环境100的示意图。如图1所示,计算环境100可以包括与用户101相对应的一个或多个客户端设备102以及通过例如互联网等的计算机网络(未示出)互连到客户端设备102的分布式存储系统103。尽管图1中示出了计算环境100的特定组件,但在其他实施例中,计算环境100也可以包括额外的和/或不同的组件或布置。例如,在某些实施例中,计算环境100还可以包括额外的网络存储设备、网络设备、主机和/或其他合适配置的其他合适的组件(未示出)。
43.客户端设备102均可以包括用于促进用户101经由计算机网络访问由分布式存储系统103提供的云存储服务的计算设备。在一个实施例中,客户端设备102均可以包括桌面式计算机。在其他实施例中,客户端设备102还可以包括膝上型计算机、平板计算机、智能电话或其他合适的计算设备。尽管图1中出于说明目的示出了两个用户101和101’,但在其他实施例中,计算环境100可以促进其他合适数量的用户101访问云存储或由计算环境100中的分布式存储系统103提供的其他类型的计算服务。
44.如图1所示,分布式存储系统103可以包括一个或多个前端服务器104、一个或多个后端服务器105、集中式存储库106以及通过计算机网络107可操作地耦合的一个或多个场景服务器108。后端服务器105可以可操作地耦合到被配置为存储用户数据的网络存储单元112。在说明的示例中,存储在网络存储单元112处的用户数据被示为文档110。在其他示例中,用户数据还可以包括图像文件、视频文件或者其他合适类型的计算机文件。尽管在图1中示出了分布式存储系统103的特定组件,但在其他实施方式中,分布式存储系统103还可以包括额外的和/或不同的组件。
45.计算机网络107可以包括任何合适类型的网络。例如,在一个实施例中,计算机网络107可以包括以太网或快速以太网网络,其具有路由器、交换机、负载平衡器、防火墙和/或实现聚合以太网上的rdma(roce)协议的其他合适的网络组件。在其他实施例中,计算机网络107还可以包括具有相应网络组件的无限带宽网络。在另外的实施例中,计算机网络107还可以包括上述和/或其他合适类型的计算机网络的组合。
46.前端服务器104可以被配置为:经由客户端设备102与用户101交互。例如,前端服务器104可以被配置为:在客户端设备102上提供用户界面(未示出)以允许相应的用户101对存储在网络存储单元112中的文档110进行上传、修改、检索或对其执行其他合适的操作。在另一个示例中,前端服务器104还可以被配置为:提供允许用户101设置要对网络存储单元112中的文档110实施的保留、隐私、访问或其他合适类型的策略的用户门户(未示出)。在某些实施例中,前端服务器104可以包括网络服务器、安全服务器和/或其他合适类型的服务器。在其他实施例中,前端服务器104可以从分布式存储系统103中省略,代替由外部计算系统提供,例如云计算系统(未示出)。
47.后端服务器105可以被配置为提供各种数据存储服务以促进对网络存储单元112
中的文档110的存储、检索、修改、删除和/或其他合适类型的数据管理操作。例如,后端服务器105可以被配置为:将文档110和/或文档110的索引存储在分片中。后端服务器105还可以被配置为:响应于来自例如用户101的适当查询来提供用于执行来自各种分片的数据的扇出联合的设施。在进一步的示例中,后端服务器105还可以被配置为:提供用于执行重复减少、数据压缩、访问控制和/或其他合适的操作的设施。
48.后端服务器105还可以被配置为提供摄取处理器107(图2a

图2d中所示),该摄取处理器被配置为:对在网络存储单元112处接收并存储在网络存储单元112中的文档110的新的和/或经更新的数据进行分析。在某些实现中,摄取处理器107可以被配置为:从场景服务器108和/或相应的场景计算服务接收注册或其他合适类型的指示。注册可以分别指示文档110的一个或多个属性、相应的场景服务器或场景计算服务希望接收通知的变化。这样的注册可以作为网络存储单元112中的通知列表128(图2d所示)、表格或其他合适数据存储单元中的其他合适数据结构来维护。
49.虽然后端服务器105可适用于执行大量数据的存储和分析,但后端服务器105和/或网络存储单元112中使用的数据结构可能不适用于提供对个体数据项(例如,文档110)的随机访问。例如,后端服务器105可能不会在与文档110在列表中的位置或列表的大小无关的恒定时间访问列表中的文档110。此外,当用户请求存储的文档时,后端服务器105可以执行多个操作(例如,扇出联合)以解析间接引用。执行多个操作可能会导致服务用户请求的高延时和计算负载。
50.集中式存储库106可以被配置为:通过向高速缓存在数据存储单元114中的文档110的子集提供高速缓存服务来提供对网络存储单元112中存储的文档110的快速随机访问(有时被称为“高影响数据”,在图1中显示为“数据111”)。在某些实施例中,在后端服务器105中运行的摄取处理器107可以被配置为:将文档110的所存储的数据的子集作为数据111推送到集中式存储库106中以存储在数据存储单元114中。
51.被推送到集中式存储库106的数据111可以包括各种场景服务器108和/或场景计算服务可能感兴趣的各种类别的存储的数据。在一个示例中,在集中式存储库106中高速缓存的、针对网络存储单元112中存储的文档110的数据111可以包括文档名称、文档扩展(例如“txt”)、最后更新的日期/时间、查看文档的次数、修改文档的次数、可以检索到文档的通用资源定位符(url)和/或与文档相关的其他合适信息。通过对数据111进行高速缓存,用户101可以容易地从集中式存储库106中检索文档的信息和/或其他相关信息。
52.场景服务器108可以被配置为:从集中式存储库106中检索高速缓存的数据111,并对网络存储单元112中存储的文档110的底层数据的变化做出反应,以提供相应的用户体验。例如,搜索索引服务可能对用于更新搜索索引的标题、主体、附录或其他合适类型的文档110内容的变化感兴趣(未示出)。另一方面,文档元数据服务可能对用于更新对文档110的查看/编辑的次数的文档110的查看次数或查看者列表以及文档110的最后修改的时间戳感兴趣。响应于查看次数的变化,文档元数据服务可以被配置为:向例如用户101’发送消息118以向用户101’通知:另一用户101查看和/或编辑了文档110。尽管场景服务器108在图1中被示为物理计算设备,但在一些实施方式中,场景服务108的功能可以由执行合适指令的合适服务器(例如,前端服务器104)提供作为相应场景计算服务。
53.在某些分布式存储系统中,一旦在存储的文档110中检测到任何变化,就向所有场
景器108发送变化通知116以便进行进一步处理。检测到的变化的示例可以包括对文档110的属性的写操作。然而,这种总括通知会导致分布式存储系统103中计算资源的浪费。首先,变化通知116的传输可能涉及资源密集型通知调用(例如,超文本传输协议或“http”请求或远程过程调用)。
54.其次,不同的场景服务器或场景计算服务可能对文档110的不同属性的变化感兴趣。例如,搜索索引服务可能对用于更新搜索索引的文档110的查看者列表或对文档110的修改次数的变化不感兴趣。另一方面,文档元数据服务可能对文档110的主体或标题的变化不感兴趣。因此,变化通知116中指示的变化可能适用于一些场景计算服务,但与其他场景计算服务无关。尽管变化通知116中指示的变化不相关,但所有场景计算服务都可能消耗额外的计算、网络、输入/输出和/或其他合适类型的资源来确定变化通知116中指示的变化是否与个体场景计算服务相关。例如,可以消耗各种类型的资源来执行集中式存储库106处的数据111的额外读取操作。这种读取操作会导致托管集中式存储库106的服务器上的高计算负载、计算机网络107中的高网络带宽和/或对分布式存储系统103的性能和/或操作的其他负面影响。
55.所公开的技术的若干实施例可以通过在分布式存储系统103中实现文档属性的粒度变化检测来解决上述缺陷的至少一些方面。在某些实施方式中,可以在集中式存储库106中实现变化检测器122,以确定当与同一文档110的先前版本相比时,文档110的新版本中哪一个或多个属性发生了变化。基于所确定的一个或多个属性,可以选择性地将变化通知116发送到先前注册为接收针对一个或多个属性的变化的通知的场景服务器108。因此,可以避免对检测到的属性变化不感兴趣的场景计算服务的代价高昂的http请求和/或远程过程调用。此外,还可以避免用于确定变化通知116中指示的变化是否实际上与场景服务器108相关的额外的计算资源。因此,当与使用总括通知相比时,分布式存储系统103的计算负载、网络带宽和/或其他计算资源的消耗可以减少,如下文参考图2a

图2d更详细地描述的。
56.图2a

图2d是说明根据所公开的技术的实施例的、图1中的用于执行粒度变化检测的分布式存储系统103中的某些硬件/软件组件的示意图。在图2a

图2d和本文的其他图中,为了清楚起见省略了图1的计算环境100和分布式存储系统103的某些组件。例如,在图2a

图2d中,为了便于说明,从分布式存储系统103中省略了前端服务器104和计算机网络107。在图2a

图2d和本文的其他图中,各个软件组件、对象、类、模块和例程可以是用c、c 、c#、java和/或其他合适的编程语言编写为源代码的计算机程序、过程或进程。组件可以包括但不限于一个或多个模块、对象、类、例程、属性、进程、线程、可执行文件、库或其他组件。组件可以采用源代码形式或二进制形式。组件可以包括编译之前的源代码的方面(例如,类、属性、过程、例程),经编译的二进制单元(例如,库、可执行文件)或在运行时实例化并使用的工件(例如,对象、进程、线程)。
57.系统内的组件可以在系统内采用不同的形式。作为一个示例,包括第一组件、第二组件和第三组件的系统可以包括但不限于涵盖以下系统:其具有的第一组件为源代码中的属性,第二组件为二进制编译库,并且第三组件为在运行时创建的线程。可以将计算机程序、过程或进程编译成目标、中间代码或机器代码,并呈现以供个人计算机、网络服务器、膝上型计算机、智能手机和/或其他合适的计算设备的一个或多个处理器执行。
58.同样,组件可以包括硬件电路。本领域普通技术人员将认识到,硬件可以被视为石
化的软件,软件可以被视为液化的硬件。仅作为一个示例,组件中的软件指令可以被刻录到可编程逻辑阵列电路,或者可以被设计为具有适当集成电路的硬件电路。同样,硬件可以由软件仿真。源代码、中间代码和/或目标代码以及相关联数据的各种实现可以存储在计算机存储器中,计算机存储器包括只读存储器、随机存取存储器、磁盘存储介质、光学存储介质、闪存设备和/或除了所传播的信号以外的其他合适的计算机可读存储介质。
59.如图2a所示,后端服务器105可以包括用于对经由前端服务器104(图1)从用户101的客户端设备102接收的文档110的新版本进行处理的摄取处理器107。文档110可以包括多个属性120。在说明的实施例中,摄取处理器107可以包括彼此可操作地耦合的接口组件130、签名组件132和通知组件134。在其他实施例中,摄取组件107还可以包括网络、安全、数据库或其他合适类型的组件。
60.接口组件130可以被配置为:接收文档110的新版本并将接收到的文档110提供给签名组件132用于进一步处理。接口组件130还可以被配置为:对网络存储单元112中的文档110进行存储、检索或执行其他合适的文件操作。例如,在所说明的实施例中,接口组件130可以被配置为:将接收到的文档110的新版本的副本作为与先前版本分开的文件存储在网络存储单元112中,或者替代文档110的先前版本。
61.签名组件132可以被配置为:生成与属性120中的一个或多个属性相对应的签名121。在某些实施例中,属性120的签名121可以包括属性120的散列值。例如,文档110的内容主体的签名121可以包括预设长度的随机字母数字串。在其他实施例中,属性120的签名可以包括属性120的值。例如,文档110的查看次数属性的值可以包括整数“4”。在另外的示例中,签名121可以包括从文档110的各种属性120导出和/或与文档110的各种属性120相对应的其他合适的值。
62.如图2a所示,在生成签名121后,签名组件132可以指示接口组件130将从文档110的新版本中提取的数据111连同签名121一起发送到集中式存储库106以进行粒度变化检测。尽管本文中将粒度变化检测的实施例描述为在集中式存储库106中实施,但在其他实施例中,这种粒度变化检测也可以在后端服务器105或分布式存储系统103的其他合适的服务器(未示出)中的一个或多个上实施。
63.如图2a所示,集中式存储库106可以包括彼此可操作地耦合的变化检测器122和变化指示器124。变化检测器122可以被配置为:确定检测属性中的哪一个或多个属性已经变化。在某些实施例中,变化检测器122可以被配置为:将文档110的新版本的个体签名121与存储在数据存储单元114中的先前版本的那些个体签名进行比较。响应于确定新版本的签名121相同或基本相同(例如,相似度超过90%),变化检测器122可以被配置为:指示文档110的相应属性120没有发生变化。否则,变化检测器122可以被配置为:指示相应的属性120已经发生变化。如图2b所示,在迭代遍历所有签名121(图2a)后,变化指示器124可以被配置为:将标识发生了变化的属性120列表的属性id列表123发送到后端服务器105处的摄取处理器107。
64.响应于接收到属性id 123,摄取处理器107的通知组件134可以被配置为:从网络存储单元112检索通知列表128。通知列表128可以包括指示场景服务器108(和/或相应场景计算服务)中的哪一个或多个对文档110的特定属性120的变化感兴趣的数据。通知列表128可以通过从场景服务器108接收注册数据(未示出)、通过分配默认值或经由其他合适的技
术来生成。基于检索到的通知列表128,通知组件134可以被配置为:基于属性id 123来确定一个或多个场景服务器108接收到了变化通知125。在说明的示例中,第一场景服务器108a可以在通知列表128中被指示为对由属性id 123之一标识的属性120的变化感兴趣。因此,变化通知116仅被发送到第一场景服务器108a,而不被发送到第二和第三场景服务器108b和108c。
65.如图2c所示,在接收到变化通知116时,第一场景服务器108a可以被配置为:向用户101’提供消息118以例如向用户101’通知检测到的文档110的属性120的变化,或者提供其他合适的用户体验。如图2d所示,当用户101提供属性120’中的一个或多个属性发生了不同变化的文档110’的另一版本时,通知组件134可以被配置为:当检测到不同属性120’的变化时,如属性id 123’所指示的,向第三场景服务器108c而不是第一或第二场景服务器108a和108b提供变化通知116’。因此,可以避免对场景服务器108中的一个或多个场景服务器的资源密集型通知调用以及由这样的一个或多个场景服务器108进行的额外读取操作。
66.图3a

图3c是说明根据所公开的技术的实施例的、在签名生成期间的图2a

图2d的签名组件132的某些硬件/软件组件的示意图。如图3a所示,签名组件132可以包括可操作地彼此耦合的函数选择器142和签名生成器146。函数选择器142可以被配置为:基于属性120的值来选择用于生成签名121的函数。如下文更详细描述的,函数选择器142可以被配置为:以各种方式选择函数。签名生成器146可以被配置为:将所选择的函数(例如,散列函数)应用于属性120的值以生成签名121。
67.所公开的技术的方面涉及选择与文档110的各个属性120相关联的合适的函数,以便将后端服务器104(图1)处的计算资源消耗保持在阈值以下或甚至最小化。在某些实施方式中,如图3a所示,多个不同的散列函数可以被静态地分配并与文档110的相应属性120相关联,如存储在网络存储单元112中的函数列表137所示。例如,返回输入值作为输出的恒等函数可用于对文档的查看次数或修改次数,因为计算这些值的散列值的成本可能超过用于比较这些值的计算资源的节省量。在另一示例中,xxhash函数可以与文档110的主体相关联,因为主体可以包括大量数据。
68.在另外的实施方式中,例如基于属性120的值的数据类型和/或大小或者其他合适的函数标准138,如图3b所示,散列函数与属性120的关联可以是动态的。例如,函数选择器142可以被配置为确定属性120的值的数据类型和/或大小,并且根据函数标准138向用于属性120的恒等函数分配值,所述值是整数或短字符串(例如,少于十个或其他合适数量的字符)。因此,对文档的查看次数和修改次数可以与恒等函数相关联。在其他示例中,函数选择器142可以被配置为:根据函数标准138将fowler

noll

vo(fnv)散列函数分配给具有4到20个字节的数据大小的值的属性120。在另外的示例中,函数选择器142还可以被配置为:根据函数标准138将xxhash64函数分配给具有大数据大小(例如,大于20字节)的值的属性120。在另外的示例中,函数选择器142可以被配置为:将安全散列试探法256(sha256)函数分配给具有可能产生散列值冲突的值的属性120,并且是在这样的冲突不能被容忍时。
69.在其他实施方式中,如图3c所示,函数选择器142可以被配置为:使用成本函数139来呈现散列函数的动态选择作为优化操作。不同的散列函数可以具有不同的存储空间(例如,输出散列值大小)、计算资源成本(例如,计算散列值的成本)、冲突率和/或其他合适的特性。因此,优化操作可以被定义为:对于属性120,选择散列函数来使处理器周期和存储开
销最小化,同时将冲突数量保持在阈值以下,并使必须读取以进行完整比较的属性数据(data)的总量最小化。示例成本函数j(hi)可以表示如下:j(
hi
)=w
collision
*cr
hi
w
cpu
*cpu
hi
w
storage
*storage
hi
w
data
*data
hi
,其中,cr
hi
是冲突(collision)率,cpu
hi
是处理器周期,storage
hi
是散列值的存储(storage)大小,data
hi
∈{属性大小(propertysize),storage
hi
}并且w是与各种相应参数相关联的权重。
70.当分布式存储系统103运行时,与前述参数相关联的不同权重可以发生变化。例如,可用的系统资源可以发生变化,从而使计算资源变得丰富。因此,可以调整用于计算资源的权重以导致为同一属性120选择与可用系统资源发生变化之前不同的散列函数。
71.图4是说明根据所公开的技术的实施例的、图2a

图2d的签名组件的某些硬件/软件组件实施属性分组的示意图。如图4所示,签名组件132还可以包括分组模块140,其被配置为:将文档110的属性120中的一些组成集合,生成该集合的签名121,并允许集中式存储库106(图2a)处的变化检测器122(图2a)高效地确定属性120中的哪一个或多个发生了变化。
72.在某些实施方式中,分组组件140可以被配置为:将相关属性120分组在一起,并针对属性120的集合而不是集合中的每个属性120生成签名121。不受理论的束缚,认识到文档110的某些属性120经常一起发生变化。例如,查看次数经常随着对文档110的修改次数而变化。因此,将属性120组合成组或集合并针对集合生成散列值可以使得能够快速确定该集合中的任何属性120是否发生了变化。例如,如果未检测到集合中的变化,则变化检测器122可以跳过集合中的每个属性120的完全比较。如果检测到集合中的变化,则可以比较该集合中的每个属性120以基于函数列表137、函数标准138或成本函数139来查看属性120中的哪一个或多个属性发生了变化,如上文针对图3a

图3c所述。
73.根据所公开的技术的附加方面,对属性120进行分组还可以使用优化操作。如果不同属性120之间变化的相关性用于对属性120进行分组,则可以设置“分组相关性阈值”,使得要读取用于属性120和散列比较的数据量保持低于大小阈值和/或最小化。在一些实施例中,如果属性120的值已经被进行了散列,则可以使用组合操作(例如,左移并执行按比特异或)来生成组散列值作为该组的签名121。然而,如果属性120已经通过了恒等函数,则可以对属性的值的组合执行额外散列操作以生成组散列值。在其他实施例中,可以使用属性120的多个分组,其中,属性120可以是多个组或集合的一部分。
74.一种用于生成属性分组的技术可以包括:维护属性120的协方差矩阵(未示出)。协方差矩阵的计算可以被简化以使得:如果属性120发生了变化,则该属性120的值为1。如果属性120没有发生变化,则该属性120的值为0。如果属性120与已经在聚类中的属性组p
cj
中的一些(或全部)属性120足够相关(即,协方差矩阵中与属性对<pi,p
cj
>相对应的值高于阈值tc),则可以使用聚类试探法通过将属性120pi分配给现有聚类(属性组)来构建分组。如果属性120不够相关,即在协方差矩阵中没有属性pi的值高于阈值tc,则可以创建仅包含该属性的新聚类(即新的属性组)。另一种分组试探法可以包括:根据聚类相似度函数确定“最靠近的”聚类并将属性120分配给该最靠近的聚类(即,属性组)。不管使用哪种试探法来创建属性分组,为了检测哪些属性120已经变化而要读取和比较的数据量可以保持在阈值以下和/或最小化。
75.在某些实施方式中,可以在分布式存储系统103开始变得运行之前计算属性分组,
但也可以以离线批处理或其他合适的处理方式定期计算属性分组。在确定属性分组后,其中每个比特与一个属性120相对应的比特字段可用于记录组中的哪个属性120发生了变化。例如,如果相应属性120没有发生变化,则可以将比特设置为零。当相应属性发生变化时,可以将同一比特设置为1。在另外的实施方式中,可以以在线方式改变属性分组,从而更好地适应数据的时间变化。
76.在另外的实施方式中,单个属性120可以包括在多个不同的属性组中。这种包括可以允许准备好检测变化。例如,如图5所示,第一组150a可以包括表示为圆圈的四个属性120,而第二组150b也可以包括四个属性120’。第一和第二组150a和150b共享共同属性120”。因此,当检测到第一组150a中的变化但在第二组150b中未检测到变化时,可以确定第一组150a和第二组150b二者中的共享属性120”没有发生变化。
77.图6a

图6c是示出根据所公开的技术的实施例的、用于分布式存储系统中粒度变化检测的过程的流程图。尽管下面在图1的计算环境100的上下文中描述了过程的实施例,但在其他实施例中,也可以在具有额外和/或不同组件的其他计算环境中实现这些过程。
78.如图6a所示,过程200可以包括:在阶段202接收文档的新版本。在某些实施例中,文档的新版本可以具有存储在分布式存储系统103(图1)中的相应先前版本。在其他实施例中,文档的先前版本可以不存在于分布式存储系统103中。然后,过程200可以包括:在阶段204对接收到的文档的新版本的各个属性进行比较。可以应用对属性进行比较的各种技术。在上文中参考图2a

图2d以及在下文中参考图6b描述了某些示例技术。过程200还可以包括:在阶段206识别其值在接收到的文档的新版本中发生了变化的属性。在识别出其值发生了变化的属性时,过程200可以继续向先前注册为接收关于属性变化的通知的场景服务器或场景计算服务发送通知。
79.图6b说明了对文档的各个属性进行比较的示例操作。如图6b所示,操作可以包括:对属性值210的签名(例如,散列值)进行比较,其包括在阶段212识别各个属性的值。这些操作可以可选地包括:为每个属性选择用于在阶段214生成签名的函数。上文参考图3a

图3c描述了用于选择函数的各种示例技术。然后,操作可以包括:将所选择的函数应用于相应属性的值以在阶段216生成签名。基于生成的签名,操作可以包括:在阶段218检测一个或多个属性的变化。
80.图6c说明了通过将属性分组为集合来检测属性变化的示例操作。如图6c所示,操作可以包括:在阶段222将属性分组为集合。上文参考图4描述了用于对属性进行分组的示例技术。然后,操作可以包括:在阶段224为每个集合生成组签名。对于每个集合,操作可以包括:用于基于组签名来确定是否检测到集合中的变化的决策阶段224。响应于确定未检测到集合中的变化,操作可以包括:将集合中的所有属性标记为未发生变化。响应于确定检测到集合中的变化,操作可以包括:在阶段228通过执行诸如上文参考图6b描述的那些操作来检测集合中的一个或多个属性的变化。
81.图7是适用于图1中的计算环境100的某些组件的计算设备300。例如,计算设备300可以适用于图1的客户端设备102、前端服务器104、后端服务器105、集中式存储库106以及场景服务器108。在非常基本的配置302中,计算设备300可以包括一个或多个处理器304和系统存储器306。存储器总线308可以用于在处理器304和系统存储器306之间进行通信。
82.根据所需配置,处理器304可以是任何类型的,包括但不限于微处理器(μp)、微控
制器(μc)、数字信号处理器(dsp)或者它们的任意组合。处理器304可以包括一个或多个级别的高速缓存器(例如一级高速缓存器310和二级高速缓存器312)、处理器核314以及寄存器316。示例处理器核314可以包括算术逻辑单元(alu)、浮点单元(fpu)、数字信号处理核(dsp核)或者它们的任意组合。示例存储器控制器318还可以与处理器304一起使用,或者在一些实现中,存储器控制器318可以是处理器304的内部部分。
83.取决于期望的配置,系统存储器306可以是任何类型的,包括但不限于易失性存储器(例如ram)、非易失性存储器(例如rom、闪存器等)或者它们的任何组合。系统存储器306可以包括操作系统320、一个或多个应用322,以及程序数据324。所描述的基本配置302在图7中由内部虚线内的那些组件示出。
84.计算设备300可以具有额外特征或功能,以及用于便利基本配置302与任何其他设备和接口之间通信的额外接口。例如,总线/接口控制器330可用于便利基本配置302与一个或多个数据存储设备332之间经由存储接口总线334的通信。数据存储设备332可以是可移除存储设备336、不可移除存储设备338或者它们的组合。可移除存储和不可移除存储设备的示例包括磁盘设备(例如软盘驱动器和硬盘驱动器(hdd)),光盘驱动器(例如压缩盘(cd)驱动器或数字通用盘(dvd)驱动器)、固态驱动器(ssd)以及磁带驱动器,仅举几例。示例计算机存储介质可以包括用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息、以任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。术语“计算机可读存储介质”或“计算机可读存储设备”不包括所传播的信号和通信介质。
85.系统存储器306、可移除存储设备336,以及不可移除存储设备338是计算机可读存储介质的示例。计算机可读存储介质包括但不限于:ram、rom、eeprom、闪存或其他存储器技术、cd

rom、数字多功能盘(dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需的信息且可由计算设备300访问的任何其他媒介。任何这样的计算机可读存储介质可以是计算设备300的一部分。术语“计算机可读存储介质”不包括所传播的信号和通信介质。
86.计算设备300还可以包括接口总线340,其用于便利经由总线/接口控制器330从各种接口设备(例如,输出设备342、外围接口344,以及通信设备346)到基本配置302的通信。示例输出设备342包括图形处理单元348和音频处理单元350,其可以被配置为经由一个或多个a/v端口352与诸如显示器或扬声器的各种外部设备通信。示例外围接口344包括串行接口控制器354或并行接口控制器356,其可以被配置为:经由一个或多个i/o端口358与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他外围设备(例如,打印机、扫描仪等)的外部设备通信。示例通信设备346包括网络控制器360,其可以被布置为:便利经由一个或多个通信端口364在网络通信链路上与一个或多个其他计算设备362的通信。
87.网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为计算机可读指令、数据结构、程序模块或调制数据信号(如载波波形)或其他传输机制中的其他数据并且可以包括任何信息传递介质。“调制数据信号”可以是具有其特性集合中的一个或多个特性或以对信号中的信息进行编码的方式变化的信号。通过举例而非限制的方式,通信介质可以包括诸如有线网络或直接线连接的有线介质,以及诸如声音、射频(rf)、微波、红外线(ir)和其他无线介质的无线介质。本文中所使用的术语计算机可读介质可以包括存储介质
和通信介质二者。
88.计算设备300可以被实现为诸如手机、个人数据助理(pda)、个人媒体播放器设备、无线网络观看设备、个人耳机设备、专用设备,或者包括上述任何功能的混合设备的小型便携式(或移动)电子设备的一部分。计算设备300还可以被实现为包括膝上型计算机和非膝上型计算机配置二者的个人计算机。
89.从上文可以理解,为了说明的目的已经在本文中描述了本公开内容的特定实施例,但是在不背离本公开内容的情况下可以进行各种修改。另外,一个实施例的许多要素可以附加于或代替其他实施例的要素而与其他实施例组合。因此,除所附权利要求书外,本技术不受限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献