发明内容
本发明实施例提供一种服务端的数据处理装置、计算机设备及存储介质,以达到提高服务端稳定性、可靠性的目的。
第一方面,本发明实施例提供一种数据处理装置,包括:
发表业务处理模块,用于执行内容发表对应的第一业务逻辑,该内容发表对应的第一业务逻辑包括前置流程和写数据请求流程,前置流程用于对待发表内容的数据进行写数据操作前的处理,写数据请求流程用于请求数据处理模块对经过处理的所述待发表内容的数据执行写数据操作;
浏览业务处理模块,用于执行内容浏览对应的业务逻辑,内容浏览对应的业务逻辑包括加载流程和打包流程,加载流程用于请求数据处理模块对待浏览内容的数据执行读数据操作,打包流程用于对待浏览内容的数据进行打包操作;
数据处理模块,用于根据发表业务处理模块的请求执行写数据操作,根据浏览业务处理模块的请求执行读数据操作。
本发明实施例提供的装置,将发表和浏览内容的业务逻辑与数据读写操作隔离,统一由数据处理模块进行数据的读写操作。那么,发表和浏览内容的业务逻辑(读写服务)即使频繁更新,由于不直接进行读写操作,也不会引起存储设备的抖动,因此不会由此造成服务端运行故障,提高了服务端运行的稳定性和可靠性。
在此基础上,数据处理模块包括写入数据子模块,读取数据子模块和离线拉取数据子模块;其中,写入数据子模块用于根据发表业务处理模块的请求执行写数据操作;读取数据子模块和离线拉取数据子模块均用于根据浏览业务处理模块的请求执行读数据操作。
本发明实施例提供的装置,通过将数据处理模块拆分为写入数据子模块、读取数据子模块和离线拉取数据子模块,分别承担数据写入、在线数据读取、离线拉取的职能,从而可以实现数据隔离的业务场景需求,且有助于提高缓存命中率。
在上述任意装置实施例的基础上,为实现根据浏览业务处理模块的请求执行读数据操作,数据处理模块可以用于:在本地缓存中查找浏览业务处理模块的请求对应的待浏览内容的数据;若在本地缓存中查找到待浏览内容的数据,从本地缓存中读取待浏览内容的数据,并返回给浏览业务处理模块;若在本地缓存中未查找到待浏览内容的数据,在缓存服务器中查找待浏览内容的数据;若在缓存服务器中查找到待浏览内容的数据,从缓存服务器中读取待浏览内容的数据,并返回给浏览业务处理模块;若在缓存服务器中未查找到待浏览内容的数据,从关系型数据库中查找待浏览内容的数据的元数据,利用该元数据从键值对数据库中查找待浏览内容的数据,并将查找到的待浏览内容的数据返回给浏览业务处理模块。
本发明实施例提供的装置,采用三级数据存储架构,首先在本地缓存上查找待浏览内容的数据,未找到的情况下继续在缓存服务器中查找,最终在数据库中查找,一方面可以提高数据读取的效率,另一方面也避免对数据库的频繁访问。另外,本发明实施例提供的装置中,将关系型数据库与键值对数据库结合,在关系型数据库中仅保存元数据字段作为拉链索引,在键值对数据库中进行数据查找。这种数据库组合方式可以减少数据存储空间,提高数据查找效率。
在此基础上,本发明实施例提供的装置还可以包括数据验证模块,用于分别从键值对数据库和验证数据库中读取待验证的数据,对分别从键值对数据库和验证数据库中读取的待验证的数据进行比对验证;键值对数据库和验证数据库的存储结构不同。
本发明实施例提供的装置,全量数据不仅在键值对数据库中保存,还在验证数据库中保存,这两个数据库的存储结构不同,那么,利用数据验证模块分别从这两个数据库中读取待验证的数据,通过数据比对可以实现对键值对数据库的数据验证。
在上述任意装置实施例的基础上,上述发表业务处理模块用于采用工作流技术串联执行多个第一业务逻辑。
发明人在实现本发明的过程中发现,可以将发表业务划分为发表、点赞、更新等,这些发表业务的第一业务逻辑基本相同,因此,可以采用工作流技术串联多个第一业务逻辑,从而减少对数据库的读写次数。
在上述任意装置实施例的基础上,上述前置流程至少包括参数校验节点和文本检验节点,在文本检验节点,发表业务处理模块用于通过Trie树结构实现文本中的表情字符检测。
通过Trie树结构实现文本中的表情字符检测可以降低检测时延,提高检测速度。
在上述任意装置实施例的基础上,上述前置流程包括至少一个审核节点,至少一个审核节点为异步处理节点。
发明人在实现本发明的过程中发现,由于现有的前置流程为同步处理流程,即每个节点均需要在前一节点执行完毕后开始执行,导致发表业务耗时较高。更具体的,是其中的审核节点的耗时导致了整体流程的耗时,而审核节点的处理结果只影响业务发表的最终结果,并不影响下一个节点的执行,因此,本发明实施例提供的装置,审核节点为异步处理节点,即审核节点的下一个节点不需要等待审核节点的审核结果即可执行,从而降低整体流程的耗时。
在上述任意装置实施例的基础上,所述发表业务处理模块还用于执行所述第一业务逻辑后,通过单向发送的方式调用内容发表对应的第二业务逻辑,所述第二业务逻辑用于实现写数据操作成功后的内容发表操作。
本发明实施例提供的装置,将发表业务服务进一步拆分为第一业务逻辑和第二业务逻辑,其中,第二业务逻辑实现第一业务逻辑对应的写数据操作成功后的内容发表操作。通过这种拆分,可以降低发表业务的时延,优化发表业务服务。
第二方面,本发明实施例还提供一种计算机设备,包括处理器和存储器;
存储器用于存储第一应用程序、第二应用程序和第三应用程序;
处理器被配置为执行存储器中存储的第一应用程序,用于执行内容发表对应的第一业务逻辑,内容发表对应的第一业务逻辑包括前置流程和写数据请求流程,前置流程用于对待发表内容的数据进行写数据操作前的处理,写数据请求流程用于请求第三应用程序对经过处理的待发表内容的数据执行写数据操作;
处理器被配置为执行存储器中存储的第二应用程序,用于执行内容浏览对应的业务逻辑,内容浏览对应的业务逻辑包括加载流程和打包流程,加载流程用于请求第三应用程序对待浏览内容的数据执行读数据操作,打包流程用于对待浏览内容的数据进行打包操作;
处理器被配置为执行存储器中存储的第三应用程序,用于根据第一应用程序的请求执行写数据操作,根据第二应用程序的请求执行读数据操作。
本发明实施例提供的计算机设备,将发表和浏览内容的业务逻辑与数据读写操作隔离,统一由第三应用程序进行数据的读写操作。那么,发表和浏览内容的业务逻辑(读写服务)即使频繁更新,由于不直接进行读写操作,也不会引起存储设备的抖动,因此不会由此造成服务端运行故障,提高了服务端运行的稳定性和可靠性。
在此基础上,第三应用程序包括写入数据子模块,读取数据子模块和离线拉取数据子模块;其中,写入数据子模块用于根据第一应用程序的请求执行写数据操作;读取数据子模块和离线拉取数据子模块均用于根据第二应用程序的请求执行读数据操作。
本发明实施例提供的计算机设备,通过将第三应用程序拆分为写入数据子模块、读取数据子模块和离线拉取数据子模块,分别承担数据写入、在线数据读取、离线拉取的职能,从而可以实现数据隔离的业务场景需求,且有助于提高缓存命中率。
在上述任意计算机设备实施例的基础上,为实现根据第二应用程序的请求执行读数据操作,处理器执行第三应用程序:在本地缓存中查找第二应用程序的请求对应的待浏览内容的数据;若在本地缓存中查找到待浏览内容的数据,从本地缓存中读取待浏览内容的数据,并返回给第二应用程序;若在本地缓存中未查找到待浏览内容的数据,在缓存服务器中查找待浏览内容的数据;若在缓存服务器中查找到待浏览内容的数据,从缓存服务器中读取待浏览内容的数据,并返回给第二应用程序;若在缓存服务器中未查找到待浏览内容的数据,从关系型数据库中查找待浏览内容的数据的元数据,利用该元数据从键值对数据库中查找待浏览内容的数据,并将查找到的待浏览内容的数据返回给第二应用程序。
本发明实施例,采用三级数据存储架构,首先在本地缓存上查找待浏览内容的数据,未找到的情况下继续在缓存服务器中查找,最终在数据库中查找,一方面可以提高数据读取的效率,另一方面也避免对数据库的频繁访问。另外,本发明实施例,将关系型数据库与键值对数据库结合,在关系型数据库中仅保存元数据字段作为拉链索引,在键值对数据库中进行数据查找。这种数据库组合方式可以减少数据存储空间,提高数据查找效率。
在此基础上,本发明实施例提供的计算机设备还可以包括第四应用程序,处理器执行第四应用程序:分别从键值对数据库和验证数据库中读取待验证的数据,对分别从键值对数据库和验证数据库中读取的待验证的数据进行比对验证;键值对数据库和验证数据库的存储结构不同。
本发明实施例中,全量数据不仅在键值对数据库中保存,还在验证数据库中保存,这两个数据库的存储结构不同,那么,利用第四应用程序分别从这两个数据库中读取待验证的数据,通过数据比对可以实现对键值对数据库的数据验证。
在上述任意计算机设备实施例的基础上,上述第一应用程序采用工作流技术串联执行多个第一业务逻辑。
发明人在实现本发明的过程中发现,可以将发表业务划分为发表、点赞、更新等,这些发表业务的第一业务逻辑基本相同,因此,可以采用工作流技术串联多个第一业务逻辑,从而减少对数据库的读写次数。
在上述任意计算机设备实施例的基础上,上述前置流程至少包括参数校验节点和文本检验节点,在文本检验节点,第一应用程序通过Trie树结构实现文本中的表情字符检测。
通过Trie树结构实现文本中的表情字符检测可以降低检测时延,提高检测速度。
在上述任意计算机设备实施例的基础上,上述前置流程包括至少一个审核节点,至少一个审核节点为异步处理节点。
发明人在实现本发明的过程中发现,由于现有的前置流程为同步处理流程,即每个节点均需要在前一节点执行完毕后开始执行,导致发表业务耗时较高。更具体的,是其中的审核节点的耗时导致了整体流程的耗时,而审核节点的处理结果只影响业务发表的最终结果,并不影响下一个节点的执行,因此,本发明实施例提供的计算机设备,审核节点为异步处理节点,即审核节点的下一个节点不需要等待审核节点的审核结果即可执行,从而降低整体流程的耗时。
在上述任意计算机设备实施例的基础上,处理器执行第一应用程序,执行所述第一业务逻辑后,通过单向发送的方式调用内容发表对应的第二业务逻辑,所述第二业务逻辑用于实现写数据操作成功后的内容发表操作。
本发明实施例提供的计算机设备,将发表业务服务进一步拆分为第一业务逻辑和第二业务逻辑,其中,第二业务逻辑实现第一业务逻辑对应的写数据操作成功后的内容发表操作。通过这种拆分,可以降低发表业务的时延,优化发表业务服务。
第三方面,本发明实施例还提供一种计算机可读存储介质,存储有第一应用程序、第二应用程序和第三应用程序;
第一应用程序,用于执行内容发表对应的第一业务逻辑,所述内容发表对应的第一业务逻辑包括前置流程和写数据请求流程,所述前置流程用于对待发表内容的数据进行写数据操作前的处理,所述写数据请求流程用于请求第三应用程序对经过处理的所述待发表内容的数据执行写数据操作;
第二应用程序,用于执行内容浏览对应的业务逻辑,所述内容浏览对应的业务逻辑包括加载流程和打包流程,所述加载流程用于请求第三应用程序对待浏览内容的数据执行读数据操作,所述打包流程用于对所述待浏览内容的数据进行打包操作;
第三应用程序,用于根据第一应用程序的请求执行写数据操作,根据第二应用程序的请求执行读数据操作。
本发明实施例提供的存储介质,将发表和浏览内容的业务逻辑与数据读写操作隔离,统一由第三应用程序进行数据的读写操作。那么,发表和浏览内容的业务逻辑(读写服务)即使频繁更新,由于不直接进行读写操作,也不会引起存储设备的抖动,因此不会由此造成服务端运行故障,提高了服务端运行的稳定性和可靠性。
在此基础上,第三应用程序包括写入数据子模块,读取数据子模块和离线拉取数据子模块;其中,写入数据子模块用于根据第一应用程序的请求执行写数据操作;读取数据子模块和离线拉取数据子模块均用于根据第二应用程序的请求执行读数据操作。
本发明实施例提供的存储介质,通过将第三应用程序拆分为写入数据子模块、读取数据子模块和离线拉取数据子模块,分别承担数据写入、在线数据读取、离线拉取的职能,从而可以实现数据隔离的业务场景需求,且有助于提高缓存命中率。
在上述任意存储介质实施例的基础上,为实现根据第二应用程序的请求执行读数据操作,处理器执行第三应用程序:在本地缓存中查找第二应用程序的请求对应的待浏览内容的数据;若在本地缓存中查找到待浏览内容的数据,从本地缓存中读取待浏览内容的数据,并返回给第二应用程序;若在本地缓存中未查找到待浏览内容的数据,在缓存服务器中查找待浏览内容的数据;若在缓存服务器中查找到待浏览内容的数据,从缓存服务器中读取待浏览内容的数据,并返回给第二应用程序;若在缓存服务器中未查找到待浏览内容的数据,从关系型数据库中查找待浏览内容的数据的元数据,利用该元数据从键值对数据库中查找待浏览内容的数据,并将查找到的待浏览内容的数据返回给第二应用程序。
本发明实施例,采用三级数据存储架构,首先在本地缓存上查找待浏览内容的数据,未找到的情况下继续在缓存服务器中查找,最终在数据库中查找,一方面可以提高数据读取的效率,另一方面也避免对数据库的频繁访问。另外,本发明实施例,将关系型数据库与键值对数据库结合,在关系型数据库中仅保存元数据字段作为拉链索引,在键值对数据库中进行数据查找。这种数据库组合方式可以减少数据存储空间,提高数据查找效率。
在此基础上,本发明实施例提供的存储介质还可以包括第四应用程序,处理器执行第四应用程序:分别从键值对数据库和验证数据库中读取待验证的数据,对分别从键值对数据库和验证数据库中读取的待验证的数据进行比对验证;键值对数据库和验证数据库的存储结构不同。
本发明实施例中,全量数据不仅在键值对数据库中保存,还在验证数据库中保存,这两个数据库的存储结构不同,那么,利用第四应用程序分别从这两个数据库中读取待验证的数据,通过数据比对可以实现对键值对数据库的数据验证。
在上述任意存储介质实施例的基础上,上述第一应用程序采用工作流技术串联执行多个第一业务逻辑。
发明人在实现本发明的过程中发现,可以将发表业务划分为发表、点赞、更新等,这些发表业务的第一业务逻辑基本相同,因此,可以采用工作流技术串联多个第一业务逻辑,从而减少对数据库的读写次数。
在上述任意存储介质实施例的基础上,上述前置流程至少包括参数校验节点和文本检验节点,在文本检验节点,第一应用程序通过Trie树结构实现文本中的表情字符检测。
通过Trie树结构实现文本中的表情字符检测可以降低检测时延,提高检测速度。
在上述任意存储介质实施例的基础上,上述前置流程包括至少一个审核节点,至少一个审核节点为异步处理节点。
发明人在实现本发明的过程中发现,由于现有的前置流程为同步处理流程,即每个节点均需要在前一节点执行完毕后开始执行,导致发表业务耗时较高。更具体的,是其中的审核节点的耗时导致了整体流程的耗时,而审核节点的处理结果只影响业务发表的最终结果,并不影响下一个节点的执行,因此,本发明实施例提供的存储介质,审核节点为异步处理节点,即审核节点的下一个节点不需要等待审核节点的审核结果即可执行,从而降低整体流程的耗时。
在上述任意计算机设备实施例的基础上,处理器执行第一应用程序,执行所述第一业务逻辑后,通过单向发送的方式调用内容发表对应的第二业务逻辑,所述第二业务逻辑用于实现写数据操作成功后的内容发表操作。
本发明实施例提供的存储介质,将发表业务服务进一步拆分为第一业务逻辑和第二业务逻辑,其中,第二业务逻辑实现第一业务逻辑对应的写数据操作成功后的内容发表操作。通过这种拆分,可以降低发表业务的时延,优化发表业务服务。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明实施例的技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明实施例技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
本发明实施例提供的技术方案,将UGC场景的服务端至少抽象为发表业务服务(Post Server)、浏览业务服务(Pack Server)、数据处理服务(Data Server)。更进一步的,还可以抽象出发表后续处理服务(PostSubsequent Server)。可以但不仅限运用于UGC场景中台的服务端,以提高服务端运行的稳定性和可靠性。
本发明实施例提供的技术方案适用于多种UGC场景,例如评论、视频内容发布、文本内容发布、图片内容发布等等。
本发明实施例中,服务端的整体架构可以划分为发表(包括上述发表业务服务和发表后续处理服务)、浏览(包括上述浏览业务服务)和数据处理(包括上述数据处理服务)三部分。
其中,发表业务服务和发表后续处理服务承担包括发表、点赞、更新在内的所有写数据操作相关的业务逻辑;浏览业务服务承担所有读数据操作相关的业务逻辑,基本业务逻辑可以拆分成加载(Load)和打包(Pack)两部分。Load部分负责从下游依赖中获取本次服务调用中所需的原始数据,Pack部分将Load获取的原始数据进行业务逻辑相关的打包操作。在评论场景中,该服务包括评论列表中推荐sort服务的调用以及相应的打包操作;数据处理服务剥离业务逻辑,工作在CURD(创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作)层,收敛所有存储组件的读写权限。
对于浏览部分,更进一步的,Load部分通过ParallelLoader组件(ParallelLoader组件于facility库内提供)进行依赖下游的并发调用。Load部分通过LoadManager进行打包管理,其中LoadManager内分成多级LoaderContainer,存在依赖关系的Loader之间由LoaderContainer保证Loader执行前已完成依赖的加载。在LoaderContainer内部所有的Loader均为并行执行,从而减少服务整体延时。为了保证并行操作的安全性,ParallelLoader利用Golang interface接口特性采用双重注册制公职数据流规范。首先各个子Loader需要通过各自LoaderParamer的interface注册将会使用到的Get和Set方法,同时各LoadManager需要注册各业务使用到的Loader,并注册全部的Get及Set方法。
Pack服务内实现merge组件,将多个请求汇总后再调用下游服务。
以评论场景为例,基于评论发表、更新、点赞业务以及浏览业务的服务端架构如图1所示。
其中,发表业务服务承担发表、更新、点赞的业务逻辑,具体包括文本检查(IDGenerator)和参数检验(Proactive Analysis),进而转由数据处理服务进行数据写入操作,数据处理服务进一步又包括本地缓存(Local Catach)、缓存服务器(Redis)、和数据库(MySQL/Abase)三级架构,对于部分发表服务,还进一步需要后续处理,则转由发表后续处理服务处理,发表后续处理服务通过数据总线(DATA BUS)、高性能消息队列(NSQ)、下游服务(Downstream Service)等完成后续服务。
其中,浏览业务服务承担浏览的业务逻辑,具体还可以包括推荐(sort)服务,计数信息(Count Info)、数字信息(Digg Info)的获取,以及下游服务,之后转由数据处理服务进行数据读取操作。
基于上述服务端架构的划分,本发明实施例提供一种数据处理装置,如图2所示,包括:
发表业务处理模块101,用于执行内容发表对应的第一业务逻辑,该内容发表对应的第一业务逻辑包括前置流程和写数据请求流程,前置流程用于对待发表内容的数据进行写数据操作前的处理,写数据请求流程用于请求数据处理模块对经过处理的所述待发表内容的数据执行写数据操作。
该模块对应上述架构中的发表部分,第一业务逻辑包括发表、点赞、更新等。
其中,前置流程包括参数校验、检查(若待发表内容为文本,则进行文本检查,若待发表内容为图片,则进行图片检查,若待发表内容为视频,则进行视频检查)等等写数据操作前的处理。
以发表业务为例,若收到发表业务请求,发表业务处理模块101执行第一业务逻辑,对该发表业务请求对应的待发表内容的数据进行参数校验、文本检查等等,前置流程执行完成后,向数据处理模块发送写操作请求。
浏览业务处理模块102,用于执行内容浏览对应的业务逻辑,内容浏览对应的业务逻辑包括加载流程和打包流程,加载流程用于请求数据处理模块对待浏览内容的数据执行读数据操作,打包流程用于对待浏览内容的数据进行打包操作。
该模块对应上述架构中的浏览部分。
具体的,若收到浏览业务请求,浏览业务处理模块102执行对应的业务逻辑,首先通过加载流程请求数据处理模块读取待浏览内容的数据,然后通过打包流程对获取的数据进行打包操作。
数据处理模块103,用于根据发表业务处理模块101的请求执行写数据操作,根据浏览业务处理模块102的请求执行读数据操作。
本发明实施例中,数据处理服务作为一个纯粹CURD服务收敛了所有对基础存储的读写控制,不承担业务逻辑,并且只为上层的Post、Pack(对于评论场景,还包括评论Sort服务)使用。
本发明实施例提供的装置,将发表和浏览内容的业务逻辑与数据读写操作隔离,统一由数据处理模块进行数据的读写操作。那么,发表和浏览内容的业务逻辑(读写服务)即使频繁更新,由于不直接进行读写操作,也不会引起存储设备的抖动,因此不会由此造成服务端运行故障,提高了服务端运行的稳定性和可靠性。
此外,将发表和浏览内容的业务逻辑与数据读写操作隔离,还可以收敛数据安全权限,提高数据的安全性。
在此基础上,数据处理模块包括写入(Post)数据子模块,读取(Default)数据子模块和离线拉取(Offline)数据子模块;其中,写入数据子模块用于根据发表业务处理模块的请求执行写数据操作;读取数据子模块和离线拉取数据子模块均用于根据浏览业务处理模块的请求执行读数据操作。
更进一步的,在线模式下,通过读取数据子模块根据浏览业务处理模块的请求执行读数据操作,在离线模式下,通过离线拉取数据子模块根据浏览业务处理模块的请求执行读数据操作。又或者,首先离线拉取数据子模块根据浏览业务处理模块的请求执行读数据操作,若未获取数据,再通过读取数据子模块根据浏览业务处理模块的请求执行读数据操作。
对应到上述服务端架构,即将数据处理部分拆分为Post、Default和Offline三个集群,分别承担写入、读取以及离线拉取的职责。
本发明实施例提供的装置,通过将数据处理模块拆分为写入数据子模块、读取数据子模块和离线拉取数据子模块,分别承担数据写入、在线数据读取、离线拉取的职能,从而可以实现数据隔离的业务场景需求,且有助于提高缓存命中率。
在上述任意装置实施例的基础上,为实现根据浏览业务处理模块的请求执行读数据操作,数据处理模块可以用于:在本地缓存中查找浏览业务处理模块的请求对应的待浏览内容的数据;若在本地缓存中查找到待浏览内容的数据,从本地缓存中读取待浏览内容的数据,并返回给浏览业务处理模块;若在本地缓存中未查找到待浏览内容的数据,在缓存服务器中查找待浏览内容的数据;若在缓存服务器中查找到待浏览内容的数据,从缓存服务器中读取待浏览内容的数据,并返回给浏览业务处理模块;若在缓存服务器中未查找到待浏览内容的数据,从关系型数据库中查找待浏览内容的数据的元数据,利用该元数据从键值对数据库中查找待浏览内容的数据,并将查找到的待浏览内容的数据返回给浏览业务处理模块。
其中,关系型数据库可以但不仅限于是MySQL数据库,键值对数据库可以但不仅限于是Abase数据库。
本发明实施例提供的装置,采用三级数据存储架构,首先在本地缓存上查找待浏览内容的数据,未找到的情况下继续在缓存服务器中查找,最终在数据库中查找,一方面可以提高数据读取的效率,另一方面也避免对数据库的频繁访问。另外,本发明实施例提供的装置中,将关系型数据库与键值对数据库结合,在关系型数据库中仅保存元数据字段作为拉链索引,在键值对数据库中进行数据查找。这种数据库组合方式可以减少数据存储空间,提高数据查找效率。
也就是说,本发明实施例提供的技术方案,在存储架构方面,采用本地缓存(LocalCache)—缓存服务器(Redis)—网络数据库三级存储架构。因关系型数据库(如MySQL)仅存储元数据(Meta)字段,因此MySQL设计职责可专注于优化列表(如评论列表)拉取操作,ABase保存全量数据供在线场景使用。
作为举例而非限定,LocalCache使用的是开源的freecache,freecache通过控制对象指针数及分段保证了极小的内存开销和高效的并发访问能力。
作为举例而非限定,以评论为例,Redis采用内容标识(该场景中为评论标识(CommentId))作为主键(key),因评论场景本身的离散性保证了没有热key倾斜的问题,其中,可通过计算各评论标识切片后方差验证来进行验证。
本发明实施例提供的技术方案,采用关系型数据库与键值对数据库配合,这种配合的数据库结构适用于有索引,且有大量数据拉取需求的场景,例如UGC场景。
在此基础上,本发明实施例提供的装置还可以包括数据验证模块,用于分别从键值对数据库和验证数据库中读取待验证的数据,对分别从键值对数据库和验证数据库中读取的待验证的数据进行比对验证;键值对数据库和验证数据库的存储结构不同。
本发明实施例提供的装置,全量数据不仅在键值对数据库中保存,还在验证数据库中保存,这两个数据库的存储结构不同,那么,利用数据验证模块分别从这两个数据库中读取待验证的数据,通过数据比对可以实现对键值对数据库的数据验证。
上述验证机制可以称之为“对账机”。数据验证模块是独立于上述架构中的三部分之外独立部署的一个监控保障服务,它采用ElasticSearch作为搜索存储引擎。该服务用于实现内容发表阶段的生命周期监控和双机房同步数据一致性监控两大目的。
其中,对于双机房同步数据一致性监控,其实现背景是:两个机房提供同一应用程序的不同版本,这两个版本之间有内容互通的实现需求。这种情况下,采用异构存储的ElasticSearch对双机房抽样进行数据一致性监控,进而保障了融合场景的数据稳定性。这种情况下,数据验证模块用于按照相同的抽样规则分别从两个机房对应的键值对数据库中读取数据,进行数据一致性检测。
数据验证模块利用与三大服务组件(上述架构中的三部分)的存储设备不同的存储结构对监控节点的数据进行存储,并与三大服务组件的存储设备中存储的数据进行比对,来实现监控。
另外,数据验证模块还能起到容灾备份的目的,例如,当三大服务组件的存储设备数据丢失,可以利用数据验证模块对应的数据库保存的数据进行补充。
在上述任意装置实施例的基础上,可选的,上述发表业务处理模块用于采用工作流技术串联执行多个第一业务逻辑。
发明人在实现本发明的过程中发现,可以将发表业务划分为发表、点赞、更新等,这些发表业务的第一业务逻辑基本相同,因此,可以采用工作流技术串联多个第一业务逻辑,从而减少对数据库的读写次数。
在上述任意装置实施例的基础上,上述前置流程至少包括参数校验节点和文本检验节点,在文本检验节点,发表业务处理模块用于通过Trie树结构实现文本中的表情字符检测。
通过Trie树结构实现文本中的表情字符检测可以降低检测时延,提高检测速度。相较于现有技术调用Antidirt服务进行校验,本发明实施例提供的方法可以将延时从5毫秒降至1毫秒内。
在上述任意装置实施例的基础上,上述前置流程包括至少一个审核节点,至少一个审核节点为异步处理节点。
发明人在实现本发明的过程中发现,由于现有的前置流程为同步处理流程,即每个节点均需要在前一节点执行完毕后开始执行,导致发表业务耗时较高。更具体的,是其中的审核节点的耗时导致了整体流程的耗时,而审核节点的处理结果只影响业务发表的最终结果,并不影响下一个节点的执行,因此,本发明实施例提供的装置,审核节点为异步处理节点,即审核节点的下一个节点不需要等待审核节点的审核结果即可执行,从而降低整体流程的耗时。
在上述任意装置实施例的基础上,所述发表业务处理模块还用于执行所述第一业务逻辑后,通过单向发送的方式调用内容发表对应的第二业务逻辑,所述第二业务逻辑用于实现写数据操作成功后的内容发表操作。
本发明实施例提供的装置,将发表业务服务进一步拆分为第一业务逻辑和第二业务逻辑,其中,第二业务逻辑实现第一业务逻辑对应的写数据操作成功后的内容发表操作。通过这种拆分,可以降低发表业务的时延,优化发表业务服务。
相应的,以评论写入场景为例,发表业务服务拆分为以评论场景为例,Post和PostSubsequent两个子服务。拆分后发表评论(PostComment)接口晚高峰延时从250ms降至25ms,既一个数量级的优化提升。
具体的,PostSubsequent服务负责在评论成功落库后其他的业务逻辑的处理。因为数据落库后本次调用核心流程就已经结束,所以Post服务以OneWay(单向发送)的形式调用PostSubsequent后对上游返回成功。在PostSubsequent服务内部通过EventBus(事件总线)组件(EventBus组件于facility库内提供)进行各子任务(Task)的分发管理;在EventBus中通过EventType(事件类型)注册执行不同的Task(任务),而Task本身分为Subscribe(同步串行任务)、SubscribeAsync(异步任务)、SubscribeParallel(异步并行任务)三类。
基于同样的发明构思,本发明实施例还提供一种计算机设备,包括处理器和存储器;
存储器用于存储第一应用程序、第二应用程序和第三应用程序;
处理器被配置为执行存储器中存储的第一应用程序,用于执行内容发表对应的第一业务逻辑,内容发表对应的第一业务逻辑包括前置流程和写数据请求流程,前置流程用于对待发表内容的数据进行写数据操作前的处理,写数据请求流程用于请求第三应用程序对经过处理的待发表内容的数据执行写数据操作;
处理器被配置为执行存储器中存储的第二应用程序,用于执行内容浏览对应的业务逻辑,内容浏览对应的业务逻辑包括加载流程和打包流程,加载流程用于请求第三应用程序对待浏览内容的数据执行读数据操作,打包流程用于对待浏览内容的数据进行打包操作;
处理器被配置为执行存储器中存储的第三应用程序,用于根据第一应用程序的请求执行写数据操作,根据第二应用程序的请求执行读数据操作。
本发明实施例提供的计算机设备,将发表和浏览内容的业务逻辑与数据读写操作隔离,统一由第三应用程序进行数据的读写操作。那么,发表和浏览内容的业务逻辑(读写服务)即使频繁更新,由于不直接进行读写操作,也不会引起存储设备的抖动,因此不会由此造成服务端运行故障,提高了服务端运行的稳定性和可靠性。
在此基础上,第三应用程序包括写入数据子模块,读取数据子模块和离线拉取数据子模块;其中,写入数据子模块用于根据第一应用程序的请求执行写数据操作;读取数据子模块和离线拉取数据子模块均用于根据第二应用程序的请求执行读数据操作。
本发明实施例提供的计算机设备,通过将第三应用程序拆分为写入数据子模块、读取数据子模块和离线拉取数据子模块,分别承担数据写入、在线数据读取、离线拉取的职能,从而可以实现数据隔离的业务场景需求,且有助于提高缓存命中率。
在上述任意计算机设备实施例的基础上,为实现根据第二应用程序的请求执行读数据操作,处理器执行第三应用程序:在本地缓存中查找第二应用程序的请求对应的待浏览内容的数据;若在本地缓存中查找到待浏览内容的数据,从本地缓存中读取待浏览内容的数据,并返回给第二应用程序;若在本地缓存中未查找到待浏览内容的数据,在缓存服务器中查找待浏览内容的数据;若在缓存服务器中查找到待浏览内容的数据,从缓存服务器中读取待浏览内容的数据,并返回给第二应用程序;若在缓存服务器中未查找到待浏览内容的数据,从关系型数据库中查找待浏览内容的数据的元数据,利用该元数据从键值对数据库中查找待浏览内容的数据,并将查找到的待浏览内容的数据返回给第二应用程序。
本发明实施例,采用三级数据存储架构,首先在本地缓存上查找待浏览内容的数据,未找到的情况下继续在缓存服务器中查找,最终在数据库中查找,一方面可以提高数据读取的效率,另一方面也避免对数据库的频繁访问。另外,本发明实施例,将关系型数据库与键值对数据库结合,在关系型数据库中仅保存元数据字段作为拉链索引,在键值对数据库中进行数据查找。这种数据库组合方式可以减少数据存储空间,提高数据查找效率。
在此基础上,本发明实施例提供的计算机设备还可以包括第四应用程序,处理器执行第四应用程序:分别从键值对数据库和验证数据库中读取待验证的数据,对分别从键值对数据库和验证数据库中读取的待验证的数据进行比对验证;键值对数据库和验证数据库的存储结构不同。
本发明实施例中,全量数据不仅在键值对数据库中保存,还在验证数据库中保存,这两个数据库的存储结构不同,那么,利用第四应用程序分别从这两个数据库中读取待验证的数据,通过数据比对可以实现对键值对数据库的数据验证。
在上述任意计算机设备实施例的基础上,上述第一应用程序采用工作流技术串联执行多个第一业务逻辑。
发明人在实现本发明的过程中发现,可以将发表业务划分为发表、点赞、更新等,这些发表业务的第一业务逻辑基本相同,因此,可以采用工作流技术串联多个第一业务逻辑,从而减少对数据库的读写次数。
在上述任意计算机设备实施例的基础上,上述前置流程至少包括参数校验节点和文本检验节点,在文本检验节点,第一应用程序通过Trie树结构实现文本中的表情字符检测。
通过Trie树结构实现文本中的表情字符检测可以降低检测时延,提高检测速度。
在上述任意计算机设备实施例的基础上,上述前置流程包括至少一个审核节点,至少一个审核节点为异步处理节点。
发明人在实现本发明的过程中发现,由于现有的前置流程为同步处理流程,即每个节点均需要在前一节点执行完毕后开始执行,导致发表业务耗时较高。更具体的,是其中的审核节点的耗时导致了整体流程的耗时,而审核节点的处理结果只影响业务发表的最终结果,并不影响下一个节点的执行,因此,本发明实施例提供的计算机设备,审核节点为异步处理节点,即审核节点的下一个节点不需要等待审核节点的审核结果即可执行,从而降低整体流程的耗时。
在上述任意计算机设备实施例的基础上,处理器执行第一应用程序,执行所述第一业务逻辑后,通过单向发送的方式调用内容发表对应的第二业务逻辑,所述第二业务逻辑用于实现写数据操作成功后的内容发表操作。
本发明实施例提供的计算机设备,将发表业务服务进一步拆分为第一业务逻辑和第二业务逻辑,其中,第二业务逻辑实现第一业务逻辑对应的写数据操作成功后的内容发表操作。通过这种拆分,可以降低发表业务的时延,优化发表业务服务。
本发明实施例提供的计算机设备为上述服务端设备,既可以是单台计算机或服务器,也可以是多台计算机和/或服务器。
图3示出的是与本发明实施例提供的方法实施例相关的计算机设备的部分结构的框图。参考图3,计算机设备包括:
电源,通过电源管理系统与中央处理器逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能;主板,提供部件之间的电连接通路,各个部件通过主板进行电信号传输,各个部件通过插接、焊接等方式安装在主板上;中央处理器,主要包括算术逻辑运算单元(ALU,Arithmetic Logic Unit)、程序计数器(PC,Program Counter)、寄存器组、高速缓冲存储器(Cache)以及用于传输数据、控制及状态的总线(Bus)接口;内存储器、磁盘(即上述保存有执行各个方法实施例所述方法的程序的存储器)、输入单元(包括鼠标、键盘、触控面板等)、显示单元(包括显示器和显卡)和网卡通过总线与中央处理器进行数据交换。
执行各个方法实施例所述方法的程序及相关的数据首先从磁盘中被读取到内存储器中,中央处理器从内存储器中读取并加载程序。
本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
基于与方法同样的发明构思,本发明实施例提供一种计算机可读存储介质,存储有第一应用程序、第二应用程序和第三应用程序。其具体实现方式可参照前述实施例,此处不再赘述。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。