专利名称::分配数据库操作请求的系统的制作方法
技术领域:
:本发明涉及数据库技术,尤其涉及一种分配数据库操作请求的系统。
背景技术:
:随着计算机网络的快速发展,出现了具有大量用户的网络应用,这些网络应用需要存储大量的用户数据以及相关数据。先前的单台数据存储服务器的数据存储方式已经不能满足当前网络应用的数据存储要求。目前数据库在使用中普遍采用主-从架构(一般来说,主数据库有一个,从数据库有多个),从数据库只承担读操作,所有的写操作都由主数据库来执行。为了保证数据的一致性,从数据库会不断地从主数据库同步最新写入的数据到从数据库上。应用程序员需要根据数据库操作的读写类型,分别将数据库操作语句发往主数据库或从数据库,增加了应用程序员的负担,提高了开发成本。另外,从主数据库到从数据库的数据同步不是完全实时的,而是存在着一定的延迟时间,这就带来了问题。设想以下情况应用程序向数据库写一条数据,如上所述,该数据会被写入到主数据库中,然后马上又要读出该数据,读操作由从数据库执行,但此时从数据库尚未来得及把该数据由主数据库同步到本地,读操作的执行结果必然是未找到该数据或是读到了该数据的旧版本,这就造成了错误发生。除此之外,如果某台数据库服务器发生故障,而程序仍然向不可用的机器导入请求,就会发生错误,此时只能通过修改程序来解决,维护成本很高。
发明内容鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的分配数据库操作请求的系统。依据本发明的一个方面,提供了一种分配数据库操作请求的系统,包括分配数据库操作请求的设备;一个或者多个应用程序服务器,适于向该设备发送对于数据库的操作请求;以及主数据库服务器以及一个或者多个从数据库服务器,适于响应于该设备的检查,向该设备返回其状态,并且接收该设备分配的操作请求;其中,所述分配数据库操作请求的设备包括网络接口,适于接收对于数据库的操作请求;操作请求解析器,适于解析该操作请求,以检测该操作请求中的类型注释,确定与该类型注释相对应的数据库服务器;以及操作请求分配器,适于将该操作请求分配给所确定的数据库服务器。可选地,在根据本发明的实施例的分配数据库操作请求的设备中,当该操作请求解析器未检测到该操作请求中的类型注释时,解析该操作请求,以判断该操作请求的类型,确定与该操作请求的类型相对应的数据库服务器;并且该操作请求分配器将该操作请求分配给所确定的与该操作请求的类型相对应的数据库服务器。可选地,在根据本发明的实施例的分配数据库操作请求的设备中,该操作请求的类型包括写操作和读操作。可选地,在根据本发明的实施例的分配数据库操作请求的设备中,该数据库服务器包括主数据库服务器和从数据库服务器,对应于写操作的数据库服务器是主数据库服务器,对应于读操作的数据库服务器是从数据库服务器。可选地,所述分配数据库操作请求的设备还包括数据库检查器,适于检查该数据库服务器;并且该操作请求分配器根据检查结果将该操作请求分配给相应的数据库服务器或者返回错误提示。本发明提供了上述分配数据库操作请求的系统。根据本发明的实施例,可以解析接收到的对于数据库的操作请求,以检测操作请求中的类型注释,并根据类型注释,确定相对应的数据库服务器,并向其分配该操作请求。这样,应用开发人员通过利用例如在诸如SQL语句之类的操作请求中本来没有意义的注释语句,就可以确定要将操作请求分配给具体数据库服务器,从而极大地提高了应用开发的灵活性。对于实时性要求较高的读操作,只需要简单地在操作请求中添加表示主数据库类型的类型注释,就能自动地将该操作请求分配给主数据库服务器,避免发生找不到所请求的数据或者读取到该数据的旧版本的问题。另外,根据本发明的实施例,在确定了要将操作请求分配到的数据库服务器之后,还可以检查该数据库服务器,并根据检查结果将该操作请求分配给相应的数据库服务器或者返回错误提示。这样,在数据库服务器集群中的某一台或者多台数据库服务器发生故障时,可以自动检测到该故障,不再把操作请求分配给存在故障的数据库服务器。其中,在主数据库服务器出现故障的情况下,写操作无法执行,但读操作不受影响;而在从数据库服务器出现故障的情况下,可以转而将读操作分配给主数据库服务器,从而读写操作均不受影响。这一过程对于应用程序完全透明,应用程序员不在不需要对应用程序作出任何修改,降低了应用程序的维护成本。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图I是根据本发明的实施例的分配数据库操作请求的方法的流程图2是根据本发明的一个实施例的分配数据库操作请求的方法各步骤的流程图;以及图3是根据本发明的实施例的分配数据库操作请求的设备以及系统的框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图I示意性地图示了根据本发明的实施例的分配数据库操作请求的方法100的流5程图。根据本发明的实施例,数据库例如可以是MySQL数据库。在下文中,以MySQL数据库为例,对本发明的原理进行描述,然而,这只是为了示例的目的,本发明的范围并不限于此,本发明的原理同样适用于其它类型的数据库。如图I所示,根据本发明的实施例的分配数据库操作请求的方法100始于步骤S101,其中,接收对于数据库的操作请求。该对于数据库的操作请求例如来自于一个或者多个应用服务器。图2示意性地图示了根据本发明的一个实施例的分配数据库操作请求的方法各步骤的流程图,下面将结合图2对本发明的原理进行详细的描述。参见图2,首先,从应用服务器接收对于数据库的操作请求,如果没有接收到,则继续等待;如果已经接收到,则进入下一步骤,即图I所示的步骤S103。在步骤S103中,解析该操作请求,从而检测操作请求中的类型注释。根据本发明的实施例,该操作请求可以包括数据库程序语言语句,该数据库程序语言可以是SQL(StructuredQueryLanguage,结构化查询语言),即,该操作请求包括SQL语句。然而,SQL语言和SQL语句仅为示例,用于帮助读者理解本发明的原理,本发明的范围并不限于此,而是同样适用于其它适当的数据库程序语言和相对应的语句。在解析操作请求时,例如可以检测SQL语句的开头是否包含类型注释,即是否包含例如“/*master*/”的主数据库类型注释。如果包含,即检测到操作请求中的类型注释,则可以进入如图I所示的步骤S105。在步骤S105中,确定与该检测到的类型注释相对应的数据库服务器。可选地,在此之前,如图2所示,可以将该类型注释从操作请求中删除。根据本发明的实施例,数据库服务器可以包括主数据库服务器和从数据库服务器。在步骤S105中,检测该类型注释是否表示主数据库服务器类型,如果是,即,例如类型注释为“/*master*/”,则可以确定与该类型注释相对应的数据库服务器为主数据库服务器。这样,在随后的步骤S107中,就可以将操作请求分配给主数据库服务器。然而,如果在步骤S103中,通过解析操作请求,未检测到类型注释时,就可以执行步骤S103’,即,进一步解析操作请求,来判断操作请求的类型。根据本发明的实施例,操作请求的类型包括写操作和读操作。在步骤S103’中,可以根据SQL语句中的关键字,来判断操作请求的类型。例如,可以检测SQL语句中的第一个单词,如果该单词为例如INSERT、UPDATE、REPLACE等表示写操作的单词,则判断操作请求的类型为写操作;而如果该单词为不表示写操作的其它单词,则判断操作请求的类型为读操作。然后,执行步骤S105’,确定与操作请求类型相对应的数据库服务器。根据本发明的实施例,对应于写操作的数据库服务器是主数据库服务器,对应于读操作的数据库服务器是从数据库服务器。可选地,而在上述步骤S105中,如果检测到注释类型不表示主数据库服务器类型,则如图2所示,也可以考虑执行步骤S103’和步骤S105’,即解析操作请求,判断操作请求的类型,并且确定与该类型相对应的数据库服务器。在步骤S105’之后,执行步骤S107,其中,将该操作请求分配给与操作请求的类型相对应的数据库服务器,即,如果操作请求的类型是写操作,则将操作请求分配给主数据库服务器;而如果操作请求的类型是读操作,则将操作请求分配给从数据库服务器。根据本发明的实施例,在上述步骤S107之前,还可以执行步骤S106,其中,检查所确定的数据库服务器,并且在步骤S107中,根据检查结果来讲操作请求分配给相应的数据库服务器或者返回错误提示。其中,如图2所示,在所确定的数据库服务器是从数据库服务器的情况下,在检查结果表示从数据库服务器状态正常时,将操作请求分配给从数据库服务器。而在检查结果表示从数据库服务器状态不正常时,检查主数据库服务器,在主数据库服务器状态正常时,将该操作请求分配给主数据库服务器;而在主数据库服务器状态不正常时,返回表示数据库服务器不可用的错误提示,例如,向应用程序服务器返回“数据库不可用”的错误提示。而在所确定的数据库服务器是主数据库服务器的情况下,在检查结果表示主数据库服务器状态正常时,将操作请求分配给主数据库服务器;在检查结果表示主数据库服务器状态不正常时,返回表示数据库服务器不可用的错误提示,例如,向应用程序服务器返回“数据库不可用”的错误提示。下面,为了帮助读者理解本发明,结合三个示例SQL语句来说明本发明的原理。(I)假设操作请求中所包含的SQL语句为INSERTINTOmytabIeVALUES(I,‘abc’),首先检测SQL语句开头是否包含类型注释,此SQL语句不包含注释,则判断操作请求的类型,检查SQL语句中的第一个单词,发现是INSERT,从而判断出操作请求的类型是写操作,应当分配给主数据库服务器,检查主数据库服务器,如果主数据库服务器状态正常,则向其分配操作请求,如果主数据库服务器状态不正常,则可以向应用程序服务器返回“数据库不可用”的错误提示。(2)假设操作请求中所包含的SQL语句为SELECT*FR0Mmytable,首先检测SQL语句开头是否包含类型注释,此SQL语句不包含注释,则判断操作请求的类型,检查SQL语句中的第一个单词,发现是SELECT,从而判断出操作请求的类型是读操作,应当分配给从数据库服务器,检查从数据库服务器,如果其状态正常则向其分配操作请求,如果其状态不正常,则检查主数据库服务器,如果主数据库服务器状态正常,则向其分配操作请求,如果主数据库服务器状态不正常,则可以向应用程序服务器返回“数据库不可用”的错误提示。(3)假设操作请求中所包含的SQL语句为/*master*/SELECT*FROMmytable,首先检测SQL语句开头是否包含类型注释,此句SQL包含注释,且注释内容为/*master*/,表示主数据库服务器,检查主数据库服务器,如果主数据库服务器状态正常,则向其分配操作请求,如果主数据库服务器状态不正常,则可以向应用程序服务器返回“数据库不可用”的错误提示。本发明提供了一种分配数据库操作请求的方法。根据本发明的实施例,可以解析接收到的对于数据库的操作请求,以检测操作请求中的类型注释,并根据类型注释,确定相对应的数据库服务器,并向其分配该操作请求。这样,应用开发人员通过利用例如在诸如SQL语句之类的操作请求中本来没有意义的注释语句,就可以确定要将操作请求分配给具体数据库服务器,从而极大地提高了应用开发的灵活性。对于实时性要求较高的读操作,只需要简单地在操作请求中添加表示主数据库类型的类型注释,就能自动地将该操作请求分配给主数据库服务器,避免发生找不到所请求的数据或者读取到该数据的旧版本的问题。另外,根据本发明的实施例,在确定了要将操作请求分配到的数据库服务器之后,还可以检查该数据库服务器,并根据检查结果将该操作请求分配给相应的数据库服务器或者返回错误提示。这样,在数据库服务器集群中的某一台或者多台数据库服务器发生故障时,可以自动检测到该故障,不再把操作请求分配给存在故障的数据库服务器。其中,在主数据库服务器出现故障的情况下,写操作无法执行,但读操作不受影响;而在从数据库服务器出现故障的情况下,可以转而将读操作分配给主数据库服务器,从而读写操作均不受影响。这一过程对于应用程序完全透明,应用程序员不在不需要对应用程序作出任何修改,降低了应用程序的维护成本。与上述方法100相对应,本发明还提供了一种分配数据库操作请求的设备200。图3示意性地图示了根据本发明的实施例的分配数据库操作请求的设备200。参见图3,设备200主要包括网络接口201、操作请求解析器203、操作请求分配器207。根据本发明的实施例,网络接口201适于接收对于数据库的操作请求。操作请求解析器203适于解析操作请求,以检测操作请求中的类型注释。操作请求解析器203还适于确定与类型注释相对应的数据库服务器。操作请求分配器207适于将操作请求分配给所确定的数据库服务器。网络接口201、操作请求解析器203、操作请求分配器207可以分别用于执行上述分配数据库操作请求的方法100中的步骤S101、S103和S105、S107。根据本发明的实施例,操作请求解析器203解析该操作请求,从而检测操作请求中的类型注释。根据本发明的实施例,该操作请求可以包括数据库程序语言语句,该数据库程序语言可以是SQL,即,该操作请求包括SQL语句。在操作请求解析器203解析操作请求时,例如可以检测SQL语句的开头是否包含类型注释,即是否包含例如“/*master*/”的主数据库类型注释。如果包含,即操作请求解析器203检测到操作请求中的类型注释。随后,操作请求解析器203确定与该检测到的类型注释相对应的数据库服务器。可选地,在此之前,操作请求解析器203可以将该类型注释从操作请求中删除。根据本发明的实施例,数据库服务器可以包括主数据库服务器和从数据库服务器。操作请求解析器203检测该类型注释是否表示主数据库服务器类型,如果是,即,例如类型注释为“/*master*/”,则操作请求解析器203可以确定与该类型注释相对应的数据库服务器为主数据库服务器。这样,随后操作请求分配器207就可以将操作请求分配给主数据库服务器。然而,当操作请求解析器203未检测到操作请求中的类型注释时,解析操作请求,以判断操作请求的类型。根据本发明的实施例,操作请求的类型包括写操作和读操作。操作请求解析器203可以根据SQL语句中的关键字,来判断操作请求的类型。例如,操作请求解析器203可以检测SQL语句中的第一个单词,如果该单词为例如INSERT、UPDATE、REPLACE等表示写操作的单词,则判断操作请求的类型为写操作;而如果该单词为不表示写操作的其它单词,则操作请求解析器203判断操作请求的类型为读操作。然后,操作请求解析器203确定与操作请求类型相对应的数据库服务器。根据本发明的实施例,对应于写操作的数据库服务器是主数据库服务器,对应于读操作的数据库服务器是从数据库服务器。可选地,如果操作请求解析器203检测到操作请求中存在类型注释、但注释类型不表示主数据库服务器类型,则操作请求解析器203解析操作请求,判断操作请求的类型,并且操作请求解析器203确定与该类型相对应的数据库服务器。随后,操作请求分配器207将该操作请求分配给与操作请求的类型相对应的数据库服务器,即,如果操作请求的类型是写操作,则操作请求分配器207将操作请求分配给主数据库服务器;而如果操作请求的类型是读操作,则操作请求分配器207将操作请求分配给从数据库服务器。根据本发明的实施例,操作请求解析器203在确定数据库服务器之后,由数据库检查器205检查数据库服务器,随后,操作请求分配器207根据检查结果将操作请求分配给相应的数据库服务器或者返回错误提示。其中,在操作请求解析器203所确定的是从数据库服务器的情况下,在检查结果表示从数据库服务器状态正常时,操作请求分配器207将操作请求分配给从数据库服务器;在检查结果表示从数据库服务器状态不正常时,数据库检查器205检查主数据库服务器,在主数据库服务器状态正常时,操作请求分配器207将操作请求分配给主数据库服务器,在主数据库服务器状态不正常时,操作请求分配器207返回表示数据库服务器不可用的错误提示。而在操作请求解析器203所确定的数据库服务器是主数据库服务器的情况下,在检查结果表示主数据库服务器状态正常时,操作请求分配器207将操作请求分配给主数据库服务器;在检查结果表示主数据库服务器状态不正常时,操作请求分配器207返回表示数据库服务器不可用的错误提示。由于上述各设备(装置)实施例与前述各方法实施例相对应,因此不再对各装置实施例进行详细描述。根据本发明的又一方面,还提供了一种分配数据库操作请求的系统1000。参见图3,系统1000包括上述设备200;一个或者多个应用程序服务器300-1、…、300_n,适于向设备200发送对于数据库的操作请求;以及主数据库服务器400a以及一个或者多个从数据库服务器400bl、…、400bn,适于响应于设备200的检查,向设备200返回其状态,并且接收设备200分配的操作请求。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的装置中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个装置中。可以把实施例中的若干模块组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者模块中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个装置实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。权利要求1.一种分配数据库操作请求的系统(1000),包括分配数据库操作请求的设备(200);一个或者多个应用程序服务器(300-1,…,300-n),适于向所述设备(200)发送对于数据库的操作请求;主数据库服务器(400a)以及一个或者多个从数据库服务器(400bl,…,400bn),适于响应于所述设备(200)的检查,向所述设备(200)返回其状态,并且接收所述设备(200)分配的操作请求;以及所述分配数据库操作请求的设备(200)包括网络接口(201),适于接收对于数据库的操作请求;操作请求解析器(203),适于解析所述操作请求,以检测所述操作请求中的类型注释,并确定与所述类型注释相对应的数据库服务器;以及操作请求分配器(207),适于将所述操作请求分配给所确定的数据库服务器。2.如权利要求1所述的系统,其中当所述操作请求解析器(203)未检测到所述操作请求中的类型注释时,解析所述操作请求,以判断所述操作请求的类型,并确定与所述操作请求的类型相对应的数据库服务器;并且所述操作请求分配器(207)将所述操作请求分配给所确定的与所述操作请求的类型相对应的数据库服务器。3.如权利要求2所述的系统,其中所述操作请求的类型包括写操作和读操作。4.如权利要求3所述的系统,其中所述数据库服务器包括主数据库服务器和从数据库服务器,对应于写操作的数据库服务器是主数据库服务器,对应于读操作的数据库服务器是从数据库服务器。5.如权利要求1至4中的任一项所述的系统,所述分配数据库操作请求的设备(200)还包括数据库检查器(205),适于检查所确定的数据库服务器;以及所述操作请求分配器(207)根据检查结果将所述操作请求分配给相应的数据库服务器或者返回错误提示。6.如权利要求1至5中的任一项所述的系统,其中在所述操作请求解析器(203)检测到所述操作请求中的类型注释时,检测所述类型注释是否表示主数据库服务器类型,在检测到所述类型注释表示主数据库服务器类型的情况下,确定与所述类型注释相对应的数据库服务器是主数据库服务器。7.如权利要求2所述的系统,其中当所述操作请求解析器(203)未检测到所述操作请求中的类型注释时,根据所述操作请求中包括的数据库程序语言语句中的关键字,判断所述操作请求的类型。8.如权利要求5所述的系统,其中在所述操作请求解析器(203)所确定的是从数据库服务器的情况下,在检查结果表示从数据库服务器状态正常时,所述操作请求分配器(207)将所述操作请求分配给从数据库服务器;在检查结果表示从数据库服务器状态不正常时,所述数据库检查器(205)检查主数据库服务器,在主数据库服务器状态正常时,所述操作请求分配器(207)将所述操作请求分配给主数据库服务器,在主数据库服务器状态不正常时,所述操作请求分配器(207)返回2表示数据库服务器不可用的错误提示;或者在所述操作请求解析器(203)所确定的数据库服务器是主数据库服务器的情况下,在检查结果表示主数据库服务器状态正常时,所述操作请求分配器(207)将所述操作请求分配给主数据库服务器;在检查结果表示主数据库服务器状态不正常时,所述操作请求分配器(207)返回表示数据库服务器不可用的错误提示。9.如权利要求7所述的系统,其中所述数据库程序语言是结构化查询语言SQL,所述数据库是MySQL数据库。全文摘要本发明公开了一种分配数据库操作请求的系统(1000),其包括分配数据库操作请求的设备(200);一个或者多个应用程序服务器(300-1,…,300-n),适于向设备(200)发送对于数据库的操作请求;主数据库服务器(400a)以及一个或者多个从数据库服务器(400b1,…,400bn),适于响应于设备(200)的检查,向设备(200)返回其状态,并且接收设备(200)分配的操作请求;以及分配数据库操作请求的设备(200)包括网络接口(201),适于接收对于数据库的操作请求;操作请求解析器(203),适于解析操作请求,以检测操作请求中的类型注释,并确定与类型注释相对应的数据库服务器;以及操作请求分配器(207),适于将所述操作请求分配给所确定的数据库服务器。文档编号G06F11/20GK102982145SQ20121048334公开日2013年3月20日申请日期2012年11月23日优先权日2012年11月23日发明者朱超,陈超,桂勇哲,代兵,王超申请人:北京奇虎科技有限公司,奇智软件(北京)有限公司