首页> 中国专利> 用于低延迟数据存取的数据流分割

用于低延迟数据存取的数据流分割

摘要

在本文中公开了一种通过分割数据流促进并且加速日志数据处理的技术。前端集群实时生成大量日志数据并且将日志数据传送至聚合集群。聚合集群被设计成聚合来自不同的前端服务器和集群的到来的日志数据流。聚合集群进一步将日志数据分割成多个数据流以便数据流被并行发送至接收应用。在一个实施方式中,随机分割日志数据以确保日志数据被均匀分布在分割数据流中。在另一个实施方式中,接收分割数据流的应用确定如何分割日志数据。

著录项

  • 公开/公告号CN104969213A

    专利类型发明专利

  • 公开/公告日2015-10-07

    原文格式PDF

  • 申请/专利权人 脸谱公司;

    申请/专利号CN201480007137.8

  • 申请日2014-01-17

  • 分类号

  • 代理机构北京康信知识产权代理有限责任公司;

  • 代理人梁丽超

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 11:28:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-02-15

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/00 专利号:ZL2014800071378 变更事项:专利权人 变更前:脸谱公司 变更后:元平台公司 变更事项:地址 变更前:美国加利福尼亚州 变更后:美国加利福尼亚州

    专利权人的姓名或者名称、地址的变更

  • 2018-01-12

    授权

    授权

  • 2016-03-16

    实质审查的生效 IPC(主分类):G06F17/00 申请日:20140117

    实质审查的生效

  • 2015-10-07

    公开

    公开

说明书

相关申请的交叉引用

本申请要求于2013年1月31日提交的美国专利申请号13/756,340的 优先权,通过引用将其全部内容结合于此。

技术领域

本发明总体涉及数据获取和处理系统,并且具体地涉及能够将数据分 割成多个数据流的数据获取和处理系统。

背景技术

计算机和网络计算的发展引起了需要大量数据存储的应用。例如,数 千万用户可以创建网页并且将图像和文本上传到社交媒体网站中。因此, 社交媒体网站每天可能累积大量数据,因此,需要一种用于存储和处理数 据的高度可扩展的系统(scalable system)。存在促进这样的大量数据存储 的多种工具。

这些社交媒体网站的前端集群监测用户活动并且基于社交媒体用户 的活动产生日志数据。前端集群将日志数据传输至集中存储文件管理器或 数据仓库。集中存储文件管理器或数据仓库组织所接收的日志数据并且对 来自数据处理应用的请求作出响应。为了容纳大量的日志数据,普遍使用 大规模的数据仓库以存储日志数据并且为来自数据处理应用的数据密集 查询服务。

通过使应用能够与数以千计的计算机(也称作节点)的集群和前兆字 节的数据交互存在支持大规模数据密集的分布式应用的框架。例如,被称 为Hadoop的框架使用分布式、可扩展的、便携式文件系统,称为Hadoop 分布式文件系统(HDFS)以在Hadoop集群中的数据节点(也称为从节点) 之中分布大量数据。为了减小数据节点电源中断或网络故障(包括开关故 障)的不利影响,HDFS内的数据通常被复制在不同的数据节点上。

开发了Hive用于在Hadoop集群的顶部上运行,Hive是一种开放源 数据仓库系统。Hive支持用被称为HiveQL的类似脚本查询语言(SQL) 的说明性语言表示的数据查询。然后Hive系统将用HiveQL表示的查询编 译成可以有向无环图的数学表达式在Hadoop集群上执行的映射减少工 作。HiveQL语言包括支持包含原始类型、集合(例如,阵列和映射)以 及嵌套布局类型(nested compositions of types)的表格的类型系统。此外, Hive系统包括被称为Hive-Metastore的系统类目,包含方案和统计,这对 数据探索和查询优化有用。

与Hadoop集群耦合的Hive系统可以为社会网络系统存储和分析大量 数据。例如,Hive系统可以分析在用户之间的连接程度以对用户在社会网 络系统上跟进的故事进行排列。Hive系统可以分析活动日志以了解社会网 络系统的服务如何被用来帮助应用开发员、网页管理员以及广告人员做出 开发和业务决定。Hive系统可以运行复杂的数据挖掘程序以优化向社会网 络系统的用户示出的广告。Hive系统可以进一步分析使用日志以识别社会 网络系统的垃圾邮件和滥用。

Hive系统对于没有创造并且执行Hive查询用于著作、调试并且调度 复杂的数据管道并且基于存储在Hive系统和如同MySQL和Oracle的其 他关系数据库中存储的数据生成报告的能力的人包括基于网络的工具。

然而,前端集群将捕获的日志数据定期而不是实时地发送到集中数据 仓库。此外,在数据仓库能够对这些日志数据的数据查询做出响应之前, 数据仓库需要花费时间组织所接收的日志数据。因此,在捕获日志数据的 时长之后仅可用数据仓库中的日志数据。时长可以是一小时甚至一天。数 据处理和消耗应用仅可访问具有明显延迟的日志数据。

此外,集中数据仓库需要保持与前端服务器的连接来持续接收日志数 据。在现代的社交网络中,前端服务器的数目可以上千甚至更多。数据仓 库承载保持连接的重大负荷。这种保持连接的负荷影响数据仓库的总性 能。

发明内容

本文中引进的技术提供了低延迟地日志数据存取和处理的益处。具体 地,本文中引进的技术包括实时生成大量日志数据并且将日志数据传送至 聚合集群的前端集群。将聚合集群设计成聚合来自不同的前端服务器和集 群的到来的日志数据流。聚合集群进一步将日志数据分割成多个数据流以 便数据流被并行发送至接收应用。在一个实施方式中,聚合集群随机分割 日志数据以确保日志数据被均匀分布在分割数据流中。在另一个实施方式 中,接收分割数据流的应用确定如何分割日志数据。

根据本文中引进的技术,因此,提供了分割数据流的方法。该方法包 括基于实时用户活动产生日志数据、将日志数据传输至聚合服务器、在聚 合服务器聚合日志数据、将日志数据分割到多个日志数据流、以及将日志 数据流并行馈送到至少一个后端服务器。

根据本文中引进的技术,因此,也提供了分割数据流的计算机实施系 统。计算机实施系统包括多个前端服务器和至少一个聚合服务器。多个前 端服务器配置成用于基于实时用户活动产生日志数据。聚合服务器配置成 用于聚合从前端服务器中的至少一些接收的日志数据。聚合服务器经由网 络与前端服务器中的至少一些相连。聚合服务器包括配置成用于暂存日志 数据的数据暂存区。聚合服务器进一步配置成用于将所述日志数据分割到 多个日志数据流以便一个或多个后端服务器能够并行检索所述日志数据 流。

根据本文中引进的技术,因此,也提供了分割日志数据的聚合服务器。 聚合服务器包括处理器、网络接口、数据存储和存储器。网络接口耦接至 处理器,所述聚合服务器通过所述网络接口能够与多个前端服务器通信。 前端服务器基于实时用户活动产生日志数据。数据存储包括数据暂存区。 存储器存储当由处理器执行时使得聚合服务器执行包括从前端服务器接 收日志数据的过程的指令,其中,前端服务器基于实时用户活动产生日志 数据、聚合日志数据、在数据暂存区暂存日志数据、以及将日志数据分割 到多个日志数据流以便一个或多个后端服务器能够并行检索日志数据流。

在本发明的实施方式中,提供了一种用于对社交网络系统或者第三方 系统或者客户端系统的用户进行认证的方法,尤其是用于防止社交网络系 统或者社交网络系统的部分或者第三方系统或者客户端系统未经批准的 使用,包括:

在本发明的实施方式中,方法包括:

基于实时用户活动在多个前端服务器处产生日志数据;

将日志数据传输至聚合服务器;

在聚合服务器处聚合日志数据;

将日志数据分割到多个日志数据流;并且

将日志数据流并行馈送到至少一个后端服务器。

分割步骤可以包括:

随机分割日志数据使得日志数据被均匀分布至多个日志数据流。

该方法可以进一步包括:

在数据暂存区暂存日志数据。

该方法可以进一步包括:

从后端服务器接收关于如何将日志数据分割到多个日志数据流的指 令。

日志数据可包括多个日志数据条目,每个日志数据条目包括应用标识 和类目字段。

该方法可以进一步包括:

对于日志数据的每个条目,以总桶数为模通过应用标识和类目字段的 散列函数计算桶号,其中,总桶数是多个日志数据流的总数;并且

将日志数据的条目分配至通过桶号识别的日志数据流。

类目字段可包括日志数据条目的预期目的地的高级描述。

应用标识能够识别用于处理日志数据条目的数据消耗应用。

日志数据可包括多个日志数据条目;并且

该方法可以进一步包括:

对于每个日志数据条目,随机生成从1至总桶数的整数,其中,总桶 数是多个日志数据流的总数;并且

将该日志数据条目分配至通过桶号识别的日志数据流。

通过能用于接收日志数据流的后端服务器的数量和每个后端服务器 能够处理的连接数能够确定总桶数。

可通过在至少一个后端服务器上运行的数据消耗应用指示总桶数。

当后端服务器接收并且处理日志数据流时后端服务器是等载的。

该方法可以进一步包括:

检查日志数据的条目的前缀以确定被分配条目的日志数据流。

该方法可以进一步包括:

将日志数据发送至数据仓库;并且

处理在数据仓库处的日志数据使得数据仓库能够基于处理日志数据 对数据查询做出响应。

在也可要求保护的发明的实施例中,计算机实施系统,包括:

多个前端服务器,配置成用于基于实时用户活动产生日志数据;以及

至少一个聚合服务器,配置成用于聚合从所述前端服务器中的至少一 些接收的日志数据,聚合服务器经由网络与前端服务器中的至少一些相 连;

其中,聚合服务器包括配置成用于暂存日志数据的数据暂存区,并且 聚合服务器被配置成用于将日志数据分割到多个日志数据流以便一个或 多个后端服务器能够并行检索日志数据流。

日志数据能够包括多个日志数据条目,每个日志数据条目可包括应用 标识和类目字段;并且聚合服务器可进一步配置成:

对于日志数据的每个条目,以总桶数为模通过应用标识和类目字 段的散列函数计算桶号,其中,总桶数是多个日志数据流的总数;并 且

将日志数据的条目分配至通过桶号识别的日志数据流。

日志数据可包括多个日志数据条目;并且聚合服务器可进一步配置成 用于:

对于每个日志数据条目,随机生成从1至总桶数的整数,其中, 总桶数是多个日志数据流的总数;并且

将该日志数据条目分配至通过桶号识别的日志数据流。

可通过在一个或多个后端服务器上运行的数据消耗应用指示总桶数, 并且可通过能用于接收日志数据流的后端服务器的数量和后端服务器中 的每个后端服务器能够处理的连接数来确定总桶数。

在也可要求保护的发明的实施例中,聚合服务器,包括:

处理器;

网络接口,耦接至处理器,聚合服务器通过网络接口能够与多个前端 服务器通信;

数据存储,包括数据暂存区;以及

存储器,存储当由处理器执行时使得聚合服务器执行过程的指令,包 括:

从前端服务器接收日志数据,其中,前端服务器基于实时用户活 动产生日志数据,

聚合日志数据,

在数据暂存区暂存日志数据,并且

将日志数据分割到多个日志数据流以便一个或多个后端服务器 能够并行检索日志数据流。

日志数据可包括多个日志数据条目,每个日志数据条目可包括应用标 识和类目字段;并且过程可进一步包括:

对于日志数据的每个条目,以总桶数为模通过应用标识和类目字 段的散列函数计算桶号,其中,总桶数是多个日志数据流的总数;并 且

将日志数据的条目分配至通过桶号识别的日志数据流。

日志数据可包括多个日志数据条目;并且

过程可进一步包括:

对于每个日志数据条目,随机生成从1至总桶数的整数,其中, 总桶数是多个日志数据流的总数;并且

将该日志数据条目分配至通过桶号识别的日志数据流。

在本发明的另一实施方式中,一个或多个计算机可读非易失性存储介 质体现为当执行时可操作以执行根据本发明或根据上述实施方式中任一 项的方法的软件。

在本发明的另一实施方式中,系统包括:一个或多个处理器;以及耦 接至处理器的存储器,存储器包括通过处理器可执行的指令,当执行指令 时处理器可操作为执行根据本发明或上述实施方式的任一个的方法。通过 附图并且通过以下详细描述,在本文中介绍的技术的其他方面显而易见。

附图说明

通过结合所附权利要求和附图的以下具体描述(它们均构成本说明书 的一部分)的研究,本发明的这些和其他目标、特征以及特性对于本领域 的技术人员更加显而易见。在附图中:

图1示出了线上数据收集系统的实例。

图2示出了能够分割日志数据流的聚合集群的实例。

图3示出了日志数据条目的示例性结构。

图4示出了具有多层聚合服务器的线上数据收集系统的另一实例。

图5示出了聚合并且暂存日志数据的示例过程。

图6示出了暂存并且分割日志数据的示例过程。

图7是示出可以表示在本文中描述的任何节点或服务器的计算机服务 的架构的实例的高级框图。

具体实施方式

在本说明书中参考“实施方式”、“一个实施方式”等,表示在本发明 的至少一个实施方式中包括所描述的特定特征、功能或特性。这样的短语 出现在本说明书中,不必指相同的实施方式,也不必互相排斥。

图1示出了线上数据收集系统的实例。线上数据收集系统100包括多 个前端集群110。每个前端集群110包括多个相互连接的前端服务器112。 在一个实施方式中,前端集群110可包括从5000至30000个前端服务器 112。前端集群处理网络流量并且基于线上数据收集系统100监测的用户 活动实时产生日志数据。在一个实施方式中,前端集群110进一步负责向 系统100的用户提供用户界面,包括提供HTTP服务。

线上数据收集系统100还包括负责聚合日志数据的多个聚合集群 120,即,收集和缓冲高效网络数据传输的日志数据。每一个前端集群110 向聚合集群120中至少一个发送请求以确定聚合集群120是否可用。如果 聚合集群120可用,前端集群110将捕获日志数据实时流传输至聚合集群 120。每一个聚合集群120从多个服务器接收流式日志数据并且聚合日志 数据。在一个实施方式中,聚合日志数据包括就合并文件和类目而言重组 日志数据。聚合日志数据文件与到来的日志数据文件不必具有一对一映 射。将聚合集群120设计成按比例排列大量服务器节点并且对网络和节点 失败具有鲁棒性。在一个实施方式中,聚合集群120对聚合日志数据执行 另外的处理,包括压缩聚合日志数据。在另一个实施方式中,聚合集群120 对聚合日志数据不执行另外的处理。

然后,聚合集群120定期将聚合日志数据拷贝到数据仓库130,诸如, 在Hadoop集群上实现的Hive数据仓库。在一些实施方式中,Hive数据 仓库能够存储千兆字节的数据。在一些其他实施方式中,聚合集群120将 聚合日志数据发送至一个或多个NFS文件管理器。

在一些实施方式中,聚合集群120可被实现为二级结构。聚合集群之 一称为主聚合集群。其余的聚合集群是二级聚合集群。主聚合集群负责从 前端集群110接收日志数据,并且将所接收的日志数据分配到二级聚合集 群。在后端服务器上运行的数据消耗应用从二级聚合集群实时检索日志数 据。聚合集群的该二级结构为后端服务器提供大带宽以从它们下拉(pull down)日志数据。在一些其他实施方式中,在后端服务器上运行的数据消 耗应用直接从主聚合集群实时检索日志数据。

一旦数据仓库130已接收并且处理相关日志数据,后端服务器140可 向数据仓库130发送查询请求用于离线数据分析。对于更快的日志数据存 取,每一个聚合集群120包括数据暂存区122。数据暂存区122是在处理 之前暂时存储(也称作存放)聚合日志数据的聚合集群120内的中间存储 区。在一个实施方式中,数据暂存区122可横跨聚合集群120的服务器扩 大。后端服务器140能够直接访问数据暂存区122用于实时或近实时日志 数据馈送。在预定时长之后可以移除存储在数据暂存区122中的日志数据。 例如,在一个实施方式中,在捕获日志数据之后3天移除日志数据。在一 个实施方式中,后端服务器140是线上数据收集系统100的一部分。在另 一个实施方式中,后端服务器140与线上数据收集系统100分离。

在一些实施方式中,前端集群110中的服务器112可以进一步包括一 级附加暂存区115。例如,前端集群110中的前端服务器112被告知其相 应的聚合集群120是不可用的。而非将日志数据流传输至当前不可用的聚 合集群120,前端服务器112暂时将日志数据存储在一级附加暂存区115。 可通过后端服务器直接访问一级附加暂存区115。换言之,后端服务器140 可直接从一级附加暂存区115流传输日志数据而无需访问聚合集群120或 数据仓库130。在一些其他实施方式中,在有或者没有一级附加暂存区的 情况下,前端集群110可以进一步包括系统内任何级别的服务器能够直接 访问的零级暂存区。

在一个实施方式中,线上数据收集系统可通过将数据分成多个优先级 层而对日志数据划分优先顺序。例如,上层日志数据将具有较高优先级被 传输到数据仓库和后端服务器。当数据被存放在暂存区中时,上层日志数 据也可以具有较长停留时间。与上层日志数据相比在较短停留时段之后将 会较早地删除下层日志数据。在一些实施方式中,在策略系统中能够实现 有关设置优先级的指令。当提交数据消耗应用时,策略可以详细说明带宽 以及其请求的数据等级的优先级层。策略可以进一步详细说明请求日志数 据是否被从暂存区直接传输到应用运行的后端服务器、是否从数据仓库传 输请求日志数据、或者请求日志数据是否是聚合服务器中的一级附加暂存 区或暂存区。

为了加速日志数据的处理,聚合集群能够将日志数据分割到多个日志 数据流以便日志数据流被并联发送至在后端服务器上运行的数据消耗应 用。图2示出了能够分割日志数据流的聚合集群的实例。聚合集群210通 过检查日志数据的条目分割日志数据从而确保日志数据被均匀并且随机 地分布于分割的日志数据流212(也称作桶(bucket))中。图3示出了日 志数据条目的示例性结构。日志数据的条目300包括应用ID310,其识别 将要消耗并且处理该日志数据条目的数据消耗应用。在一个实施方式中, 应用ID310是开发者证书。条目300还包括类目320。类目320是消息的 预期目的地的高级说明。条目300还包括消息330。消息330包括日志数 据条目的实际内容。

在一个实施方式中,聚合服务器读取应用ID和类目,并且然后计算 应用ID和类目的散列函数。例如,散列函数可以是得到32位或128位散 列值的MurmurHash3散列函数。聚合服务器通过总桶数进一步对散列函 数的值取模。结果是日志数据条目被分配的桶号。换言之,日志数据条目 将要被归入具有该桶号的日志数据流。散列函数改组日志数据的条目使得 项被均匀且随机地分布于桶(即,分割的日志数据流)中。条目的桶号的 分配与创建条目时的时间或者条目的应用ID无关。在一些实施方式中, 桶号可以是除了应用ID以外的日志数据条目的数据字段的函数。例如, 散列函数能够使用应用ID和日志数据条目的另一数据字段以生成散列值 用以确定桶号。

可以各种各样的方式确定总桶数。在一个实施方式中,通过估计总数 据量和每个后端服务器能够处理的数据带宽来确定后端服务器的总数。桶 数被确定为大于后端服务器的数量的数,因此系统能够按比例扩大至包括 更多的后端服务器。例如,如果桶数是1024,这意味着在串流分割中不需 要进行任何改变系统能够按比例增大至1024后端服务器。可以利用多个 后端服务器以实时并行处理分割数据流。由于流被均匀地分割,所以后端 服务器是等载的。在另一个实施方式中,当提交数据消耗应用时,可以详 细说明包括用于并行处理日志数据流的桶数的数据消耗应用的策略。

在另一个实施方式中,通过随机数来确定被分配到每个日志数据条目 的桶号。聚合服务器生成总桶数的范围内的随机整数并且将该生成的整数 分配到日志数据条目作为分配桶号。

在又一个实施方式中,数据消耗应用能够详细说明分配桶号的函数或 方式。例如,数据消耗应用可基于条目的某些ID分配桶号。数据消耗应 用可将条目的第一范围的用户ID分配给第一桶号;并且将条目的第二范 围的用户ID分配给第二桶号等。

在一个实施方式中,线上数据收集系统可具有与如1中的聚合服务器 相似的一层以上的中间服务器。图4示出了具有多层聚合服务器的线上数 据收集系统的另一实例。线上数据收集系统400包括多个前端集群410。 每个前端集群410包括多个相互连接的前端服务器412。前端集群410基 于线上数据收集系统100监测的用户活动实时产生日志数据。在一个实施 方式中,前端集群110中的服务器412可以进一步包括后端服务器450可 直接访问的一级附加暂存区415。

线上数据收集系统400还包括负责聚合从前端集群410传输的日志数 据的多个一级聚合集群420。此外,线上数据收集系统400包括负责聚合 从一级聚合集群420传输的日志数据的一个或多个二级聚合集群430。二 级聚合集群430然后定期将聚合日志数据拷贝到数据仓库440,诸如,在 Hadoop集群上实现的Hive数据仓库。

一级聚合集群420包括一级数据暂存区422并且二级聚合集群430包 括二级数据暂存区432。后端服务器450能够直接从一级数据暂存区422 或二级数据暂存区432检索日志数据。在一个实施方式中,后端服务器450 可决定是否基于网络布局从一级暂存区或二级暂存区检索日志数据。例 如,如果就网络布局而言与一级聚合集群420相比后端服务器450更靠近 二级聚合集群430,那么后端服务器450决定从二级数据暂存区432检索 日志数据。

例如,在一个实例中,日志数据是用户活动数据并且数据消耗应用是 新鲜事应用。而非在一段时间之后等待数据仓库上可用的脱机日志数据, 新鲜事应用能够根据在网络布局中哪个聚合集群更靠近新鲜事应用的后 端服务器而请求从一级暂存区或二级暂存区实时检索相关用户活动日志 数据。新鲜事应用用非常低的延迟下拉用户活动日志数据并且能够处理日 志数据并且尽快填入新鲜事结果。

在一个实施方式中,具有多级聚合集群的线上数据收集系统包括具有 一级附加暂存功能的前端集群。当聚合集群不可用时,前端集群能够使用 其一级附加暂存功能以继续将日志数据馈送至后端服务器。在另一个实施 方式中,线上数据收集系统甚至可以包括具有数据暂存功能的二级以上的 聚合集群。

在日志数据聚合的每个阶段,具有多级暂存功能的这种线上数据收集 系统能够实时提供日志数据。当还不能从中心数据库(例如,数据仓库) 获得日志数据时,系统能够在每个阶段响应于数据消耗查询提供低延迟数 据馈送。后端服务器可选择在网络布局方面用于检索阶段日志数据的更近 的集群。后端服务器的数据流穿过网络中较少的节点和系统,因此,在传 输过程中损失日志数据或破坏日志数据的机会减少了。因此,多级暂存系 统提高日志数据传输的耐用性和可靠性。

图5示出了聚合并且暂存日志数据的示例过程。在步骤510,前端服 务器基于实时用户活动产生日志数据。在一个实施方式中,前端服务器进 一步向用户提供网络内容。在一个实施方式中,前端服务器将日志数据划 分成多个优先级层,并且仅向聚合服务器传输优先级层的上层中的日志数 据。

在步骤514,前端服务器检查聚合服务器是否可用。如果聚合服务器 不可用,那么在步骤516中前端服务器将一级附加暂存区处的日志数据暂 存到多个前端服务器的至少一个中。在步骤518中,如果后端服务器请求, 前端服务器将一级附加暂存区的日志数据实时馈送至后端服务器。如果聚 合服务器可用,在步骤520中,前端服务器将日志数据传输至聚合服务器。

在步骤530中,聚合服务器聚合日志数据。在一个实施方式中,聚合 包括通过在聚合服务器结合日志数据的流重组日志数据。在另一个实施方 式中,聚合服务器进一步压缩在聚合服务器处的日志数据。

在步骤540中,聚合服务器暂存日志数据以便后端服务器能够实时访 问日志数据。在一个实施方式中,一个后端服务器向有关日志数据的数据 暂存位置的聚合服务器和前端服务器发送指令。然后,聚合服务器和前端 服务器根据指令确定是否暂存日志数据。在步骤550中,聚合服务器将来 自聚合服务器的日志数据直接实时馈送到后端服务器。

在步骤560中,聚合服务器将日志数据发送至数据仓库。在步骤570 中,数据仓库处理日志数据以便数据仓库能够基于处理的日志数据对数据 查询做出响应。

在步骤580中,聚合服务器在预定时段之后从聚合服务器移除日志数 据。如果前端服务器在一级附加暂存区暂存日志数据,那么在预定时段之 后前端服务器也从一级附加暂存区移除日志数据。

图6示出了暂存并且分割日志数据的示例过程。在步骤610中,前端 服务器基于实时用户活动产生日志数据。在一个实施方式中,前端服务器 进一步向用户提供网络内容。

在步骤614中,前端服务器检查聚合服务器是否可用。如果聚合服务 器不可用,那么在步骤616中前端服务器将一级附加暂存区处的日志数据 暂存到多个前端服务器的至少一个中。

在步骤618中,如果后端服务器请求,前端服务器将一级附加暂存区 的日志数据实时馈送至后端服务器。如果聚合服务器可用,在步骤620中, 前端服务器将日志数据传输至聚合服务器。

在步骤630中,聚合服务器聚合日志数据。在一个实施方式中,聚合 包括通过在聚合服务器结合日志数据的流重组日志数据。在另一个实施方 式中,聚合服务器进一步压缩在聚合服务器处的日志数据。

在步骤640中,聚合服务器暂存日志数据以便后端服务器能够实时访 问日志数据。

在一个实施方式中,日志数据包括多个日志数据。每个日志数据包括 应用标识和类目字段。类目字段包括日志数据的预期目的地的高级说明; 应用标识识别处理日志数据的数据消耗应用。聚合服务器可检查日志数据 的条目的前缀以识别应用标识和类目字段。

在一个实施方式中,在步骤650中,对于日志数据的每个条目,聚合 服务器以总桶数为模通过应用标识和类目字段的散列函数来计算桶号。总 桶数是多个日志数据流的总数。在一个实施方式中,通过能用于接收日志 数据流的后端服务器的数量和每个后端服务器能够处理的连接数确定总 桶数。在另一个实施方式中,可通过在至少一个后端服务器上运行的数据 消耗应用指示总桶数。目的是当后端服务器接收并且处理日志数据流时, 后端服务器是等载的。在步骤652中,聚合服务器将日志数据的条目分配 至通过桶号识别的日志数据流。

在另一个实施方式中,对于每个日志数据,聚合服务器随机生成从1 至总桶数的整数。然后,聚合服务器将该日志数据登记项分配至通过桶号 识别的日志数据流。

在步骤654中,聚合服务器将日志数据分割到多个日志数据流。在一 个实施方式中,聚合服务器从后端服务器接收关于如何将日志数据分割到 多个日志数据流的指令。在一个实施方式中,前端服务器也可以与分割日 志数据的聚合服务器相似的方式将日志数据分割到多个日志数据流。在步 骤660中,聚合服务器将日志数据流并行馈送至一个或多个后端服务器。

在步骤670中,聚合服务器将日志数据发送至数据仓库。在步骤680 中,数据仓库处理日志数据以便数据仓库能够基于处理的日志数据对数据 查询做出响应。

在步骤690中,聚合服务器在预定时段之后从聚合服务器移除日志数 据。如果前端服务器将日志数据暂存在一级附加暂存区,那么在预定时段 之后前端服务器也从一级附加暂存区移除日志数据。

在一个实施方式中,在后端服务器接收分割日志数据流之后,后端服 务器合并分割日志数据流。假设分割之前的日志数据属于多个流,每一个 流被分配至后端服务器之一。当后端服务器中的任一个从聚合服务器接收 分割日志数据流的消息时,其确定为消息所属的流分配哪个后端服务器。 然后,后端服务器将消息转发至分配的后端服务器(也称作拥有者)。在 一个实施方式中,后端服务器将一个类目的日志数据合并到队列中。可以 各种各样的方式实现队列。例如,可以与类目中文件相似的命名规则实现 队列,其中,最后一个文件是唯一可能打开的文件。另一个实现队列的方 式是利用二层系统。

在一些实施方式中,为了记录流到服务器的分配信息,后端服务器保 留分配信息的分布图。当分配信息存在变化时,例如,当服务器不可用时, 或者当添加新流时,更新分布图。后端服务器以低延迟方式获得这些变化 的通知。

该流到服务器分配机制提供管理流与后端服务器之间的关系的自动 和动态方式。当后端服务器之一出故障时,剩余的后端服务器能够重新分 布被分配到出故障的后端服务器的流的所有权。通过将一些后端服务器的 一些流的所有权转移至其他后端服务器,该机制能够平衡后端服务器的工 作负荷。

图7是示出服务器700的架构的实例的高级框图,其可以表示前端服 务器、聚合服务器、数据仓库服务器、以及后端服务器中的任一个。服务 器700包括与互连730耦接的一个或多个处理器710和存储器720。在图 7中示出的互连730是表示由合适的桥接器、适配器或控制器连接的任何 一个或多个单独的物理总线、点对点连接或这两者的抽象化表示。因此, 互连730可以包括(例如)系统总线、外部设备互连(PCI)总线或PCI 快线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI) 总线、通用串行总线(USB)、IIC(I2C)总线或电气与电子工程师协会 (IEEE)标准1394总线,也称为“火线”。

处理器710是服务器700的中央处理器(CPU),从而控制服务器700 的总体操作。在某些实施方式中,处理器710通过执行存储在存储器720 内的软件或固件来完成这个。处理器710可以是或者可以包括一个或多个 可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、 专用集成电路(ASIC)、可编程逻辑装置(PLD)、可信任平台模块(TPM) 等或这样的装置的组合。

存储器720是或者包括服务器700的主存储器。存储器720表示任何 形式的随机存取存储器(RAM)、只读存储器(ROM)、闪存等或这样的 装置的组合。在使用中,除了别的之外,存储器720可以包含体现服务器 700的至少一部分操作系统的代码770。代码770也可包括用于执行在本 文中公开的技术的指令。

同样通过互连730连接至处理器710的是网络适配器740和存储适配 器750。网络适配器740为服务器700提供经由网络与装置通信的能力, 诸如,其他前端服务器、巩固服务器、数据仓库服务器、或后端服务器并 且可以是例如以太网适配器或光纤通道适配器。在一些实施方式中,服务 器可以使用不止一个网络适配器来单独处理在数据存储集群内以及数据 存储集群外的通信。存储适配器750允许服务器700访问永久存储器并且 例如可以是光纤通道适配器或SCSI适配器。

存储在存储器720内的代码770可以实施为软件和/或固件以对处理器 710进行编程以执行如下所述动作。在某些实施方式中,可以通过服务器 700(即,经由网络适配器740)从系统中下载这种软件或固件而将这种软 件或固件首先提供给服务器700。

在本文中介绍的技术例如可以由通过软件和/或固件或者完全在专用 硬连线电路内或者在这种形式的组合内编程的可编程电路(例如,一个或 多个微处理器)实现。专用硬连线电路可以是例如一个或多个专用集成电 路(ASIC)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)等的 形式。

实现本文中引进的技术的软件或固件可以被存储在机器可读存储介 质中并且可通过一个或多个通用或专用可编程序微处理机执行。如在本文 中使用的术语“机器可读存储介质”包括能够以机器可访问的形式存储信 息的任何机构(例如,机器可以是计算机、网络装置、蜂窝电话、个人数 字助理(PDA)、制造工具、具有一个或多个处理器的任何装置等)。例如, 机器可访问存储介质包括可记录/不可记录的介质(例如,只读存储器 (ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存 装置)等。

如在本文中使用的,术语“逻辑”可包括例如用专用软件和/或固件、 专用硬连线电路、或它们的组合编程的可编程电路。

除了上述实例以外,在不背离本发明的情况下,本发明还可以做出各 种其他修改和变形。因此,以上公开内容不被视为具有限制性,并且所附 权利要求被解释为包括本发明的真实精神和整个范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号