本公开涉及云计算技术领域,具体涉及一种内容处理方法、系统、装置、计算设备和存储介质。
背景技术:
内容处理可以包括文字处理、视频处理、图像处理、话题处理等。随着计算量的增加,在单个模块中实现全部内容处理功能逐渐变得冗长且无效率。由此,需要一种适当解耦的内容处理方法和系统架构。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
技术实现要素:
根据本公开的一个方面,公开了一种内容处理方法。所述方法包括由接入层获取第一请求,所述第一请求包括内容数据和针对所述内容数据的处理命令。所述方法还包括由接入层响应于所述第一请求的来源满足安全性指标,向服务层发送第二请求。所述第二请求包括所述内容数据和所述处理命令,并且所述第二请求不包括所述第一请求的所述来源。所述方法还包括由服务层根据所述处理命令对所述内容数据进行处理。
根据本公开的另一个方面,公开了一种内容处理系统。所述内容处理系统包括接入层。接入层用于获取第一请求,所述第一请求包括内容数据和针对所述内容数据的处理命令,并且响应于所述第一请求的来源满足安全性指标,向服务层发送第二请求。第二请求包括所述内容数据和所述处理命令,并且第二请求不包括第一请求的来源。所述内容处理系统还包括服务层。所述服务层用于根据所述处理命令对所述内容数据进行处理。
根据本公开的又一方面,公开了一种计算设备,可以包括处理器;以及存储程序的存储器,所述程序包括指令,程序包括由处理器执行时使处理器执行上述内容处理方法的指令。
根据本公开的又一方面,公开了一种存储程序的计算机可读存储介质,程序可以包括在由服务器的处理器执行时使得服务器执行上述内容处理方法的指令。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是根据本公开的实施例的可以在其中实施本文描述的各种方法的示例性系统的示意图;
图2是根据本公开的实施例的内容处理方法的流程图;
图3是根据本公开的实施例的内容处理系统的示例架构图;
图4(a)是根据本公开的实施例的服务层的并发处理的示意图;
图4(b)是根据本公开的实施例的服务层的示例功能示意图;
图5(a)是根据本公开的另一个实施例的内容处理方法的流程图;
图5(b)是根据本公开的另一个实施例的内容处理系统的示例架构图;
图6示出了根据本公开的实施例的内容处理装置的结构框图;
图7示出了能够用于实现本公开的实施例的示例性服务器和客户端的结构框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
下面将结合附图详细描述本公开的实施例。
图1示出了根据本公开的实施例可以将本文描述的各种方法和装置在其中实施的示例性系统100的示意图。参考图1,该系统100包括一个或多个客户端设备101、102、103、104、105和106、服务器120以及将一个或多个客户端设备耦接到服务器120的一个或多个通信网络110。客户端设备101、102、103、104、105和106可以被配置为执行一个或多个应用程序。
在本公开的实施例中,服务器120可以运行使得能够进行内容处理的方法的一个或多个服务或软件应用。
在某些实施例中,服务器120还可以提供可以包括非虚拟环境和虚拟环境的其他服务或软件应用。在某些实施例中,这些服务可以作为基于web的服务或云服务提供,例如在软件即服务(saas)模型下提供给客户端设备101、102、103、104、105和/或106的用户。
在图1所示的配置中,服务器120可以包括实现由服务器120执行的功能的一个或多个组件。这些组件可以包括可由一个或多个处理器执行的软件组件、硬件组件或其组合。操作客户端设备101、102、103、104、105和/或106的用户可以依次利用一个或多个客户端应用程序来与服务器120进行交互以利用这些组件提供的服务。应当理解,各种不同的系统配置是可能的,其可以与系统100不同。因此,图1是用于实施本文所描述的各种方法的系统的一个示例,并且不旨在进行限制。
用户可以使用客户端设备101、102、103、104、105和/或106来对内容进行处理。客户端设备可以提供使客户端设备的用户能够与客户端设备进行交互的接口。客户端设备还可以经由该接口向用户输出信息。尽管图1仅描绘了六种客户端设备,但是本领域技术人员将能够理解,本公开可以支持任何数量的客户端设备。
客户端设备101、102、103、104、105和/或106可以包括各种类型的计算系统,例如便携式手持设备、通用计算机(诸如个人计算机和膝上型计算机)、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息收发设备、传感器或其他感测设备等。这些计算设备可以运行各种类型和版本的软件应用程序和操作系统,例如microsoftwindows、appleios、类unix操作系统、linux或类linux操作系统(例如googlechromeos);或包括各种移动操作系统,例如microsoftwindowsmobileos、ios、windowsphone、android。便携式手持设备可以包括蜂窝电话、智能电话、平板电脑、个人数字助理(pda)等。可穿戴设备可以包括头戴式显示器和其他设备。游戏系统可以包括各种手持式游戏设备、支持互联网的游戏设备等。客户端设备能够执行各种不同的应用程序,例如各种与internet相关的应用程序、通信应用程序(例如电子邮件应用程序)、短消息服务(sms)应用程序,并且可以使用各种通信协议。
网络110可以是本领域技术人员熟知的任何类型的网络,其可以使用多种可用协议中的任何一种(包括但不限于tcp/ip、sna、ipx等)来支持数据通信。仅作为示例,一个或多个网络110可以是局域网(lan)、基于以太网的网络、令牌环、广域网(wan)、因特网、虚拟网络、虚拟专用网络(vpn)、内部网、外部网、公共交换电话网(pstn)、红外网络、无线网络(例如蓝牙、wifi)和/或这些和/或其他网络的任意组合。
服务器120可以包括一个或多个通用计算机、专用服务器计算机(例如pc(个人计算机)服务器、unix服务器、中端服务器)、刀片式服务器、大型计算机、服务器群集或任何其他适当的布置和/或组合。服务器120可以包括运行虚拟操作系统的一个或多个虚拟机,或者涉及虚拟化的其他计算架构(例如可以被虚拟化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活池)。在各种实施例中,服务器120可以运行提供下文所描述的功能的一个或多个服务或软件应用。
服务器120中的计算系统可以运行包括上述任何操作系统以及任何商业上可用的服务器操作系统的一个或多个操作系统。服务器120还可以运行各种附加服务器应用程序和/或中间层应用程序中的任何一个,包括http服务器、ftp服务器、cgi服务器、java服务器、数据库服务器等。
在一些实施方式中,服务器120可以包括一个或多个应用程序,以分析和合并从客户端设备101、102、103、104、105和106的用户接收的数据馈送和/或事件更新。服务器120还可以包括一个或多个应用程序,以经由客户端设备101、102、103、104、105和106的一个或多个显示设备来显示数据馈送和/或实时事件。
系统100还可以包括一个或多个数据库130。在某些实施例中,这些数据库可以用于存储数据和其他信息。例如,数据库130中的一个或多个可用于存储诸如音频文件和视频文件的信息。数据存储库130可以驻留在各种位置。例如,由服务器120使用的数据存储库可以在服务器120本地,或者可以远离服务器120且可以经由基于网络或专用的连接与服务器120通信。数据存储库130可以是不同的类型。在某些实施例中,由服务器120使用的数据存储库可以是数据库,例如关系数据库。这些数据库中的一个或多个可以响应于命令而存储、更新和检索到数据库以及来自数据库的数据。
在某些实施例中,数据库130中的一个或多个还可以由应用程序使用来存储应用程序数据。由应用程序使用的数据库可以是不同类型的数据库,例如键值存储库,对象存储库或由文件系统支持的常规存储库。
图1的系统100可以以各种方式配置和操作,以使得能够应用根据本公开所描述的各种方法和装置。
下面结合图2描述根据本公开的实施例的示例内容处理方法200的流程。
在步骤s201处,接入层获取第一请求,第一请求包括内容数据和针对内容数据的处理命令。
在步骤s202处,接入层响应于第一请求的来源满足安全性指标,向服务层发送第二请求。第二请求包括内容数据和处理命令,并且第二请求不包括第一请求的来源。
在步骤s203处,服务层根据处理命令对内容数据进行处理。
根据上述方法,能够使接入层接收经过初步处理的数据,对其进行安全校验,然后传递给服务层以供计算。接入层不需要将数据来源传递给服务层,服务层不必知道数据的来源。由此,能够实现模块之间的功能解耦,简化更新迭代所需的工作量。安全性指标可以是基于服务所需的安全性要求等,判断第一请求的来源(例如在内部请求的情况下是前续模块例如前端或表示层,或者在外部请求的情况下,可以是网关等)是否能够访问服务层。通过拆分安全校验功能,只需要对所需的少量接口进行安全校验,减少了计算所需的资源。
上述方法可以应用于内容处理场景。内容数据可以包括文本内容、图片内容、音频内容、视频内容,并且可以包括话题、新闻、主题、事件等。对内容数据的处理可以包括对各种类型内容的编辑、剪裁、版本替换、修饰、润色、扩充等,并且本公开不限于此,内容数据可以包括任何能够承载内容并且能够被处理的数据,并且处理命令可以指代任何期望的对以一定格式呈现的内容数据的对应处理方式。可以对内容数据进行处理以获得需要的数据。
例如,内容处理可以包括对事件内容进行处理以展示热点事件,利用全网抓取的能力标识事件的时效性、稀缺性、相关内容的丰富性。内容处理可以包括根据正文和标题提取关键词,可以包括根据关键词生成标题,还可以包括根据正文、标题、关键词等文字内容生成或搜索对应的版权图、动态话题、百度百科、背景资料等。内容处理可以包括检测图片是否包含低清晰、纯色、广告、马赛克等不期望的特征,检测文本是否有错别字、段落是否格式得当并可选地对其进行修改,检测视频是否模糊并可选地对其进行加工或者搜寻或生成类似视频等。
进一步,上述方法可以与人工智能相结合,进一步应用于智能写作助手或者辅助写作产品中,以自动地或遵循用户偏好地对内容数据进行处理,而不需要用户手动选择处理命令等。例如,内容处理功能可以围绕作者创作的不同阶段,并且利用人工智能计算能力,辅助作者完成更好的文章。可以利用智能化的内容处理来实现以下功能:通过展示热点事件和对事件的内容处理,能够在创作前引导作者的选题方向,并且引导作者创作非同质化的文章,提升文章的阅读量;能够在创作中提供丰富的写作素材:根据作者输入的正文、标题、关键词等内容自动地在编辑器的相应区域展示生成的相关内容,减少作者在写作途中跳出页面自行查询素材的次数,保证作者创作的高效率;能够在创作后检测文章的创作质量,提醒作者在编辑阶段就提前去修改和完善,提高文章最终的发布质量。
根据一些实施例,内容数据可以表示图片。对应的处理命令可以是以下各项中的至少一项:获取与所述图片相关的关键词、对所述图片进行裁剪、对所述图片进行旋转加工、对所述图片进行色彩处理、获取所述图片的关联图片、获取所述图片的更高清晰度的版本、获取与所述图片相似的有版权图片。上述处理命令是针对图片内容数据的获得更期望的内容数据的典型处理命令,能够显著提高用户体验。处理命令可以不限于上述命令,其他满足用户期望或者人工智能计算指标的处理命令也是可能的。例如,处理命令可以包括对图片中的人物进行替换、对图片的氛围进行调整等。
根据一些实施例,内容数据可以表示文本。对应的处理命令可以是以下各项中的至少一项:对所述文本进行纠错处理、获取与所述文本内容相关的关键词、获取与所述文本内容相关的话题。文本处理是内容处理中的重要组成部分。上述处理命令是针对文本内容数据的获得更期望的内容数据的典型处理命令,能够显著提高用户体验。处理命令可以不限于上述命令,其他满足用户期望或者人工智能计算指标的处理命令也是可能的。例如,处理命令可以包括对文本进行扩充、仿写、改写等。
根据一些实施例,内容数据可以表示视频。对应的处理命令可以是以下各项中的至少一项:获取与所述视频相关的关键词、对所述视频进行裁剪、对所述视频进行旋转加工、对所述视频进行色彩处理、获取所述视频的关联视频、以及获取所述视频的更高清晰度的版本。视频往往携带较大的内容量,并且需要较大的处理资源。上述处理命令针对视频内容数据,能够显著提高用户体验。
根据一些实施例,内容数据可以表示事件。对应的处理命令可以是以下各项中的至少一项:获取与所述事件相关的关键词、获取所述事件的稀缺度、获取所述事件的话题度、获取与所述事件相关的图片、获取与所述事件相关的视频、获取与所述事件相关的文章。事件作为非典型的内容数据,对其的上述处理能够以智能的方式提取出事件的关键点、流行度、价值等,有利于用户的体验,并且尤其是在用户需要基于时间进行创作的背景下非常有用。例如,关键词可以表征事件的核心特征,获取稀缺度可以表征事件在网络中是否有相关文章以及文章的点击量等、话题度可以表征相关创作是否会带来较高的价值,相关的图片或视频等则有利于在基于该事件进行创作时减少用户的手动搜索,从而节省资源和提高效率。
如果将内容处理功能的代码耦合在同一模块,尤其是在同一个模块中完成流量来源过滤、业务逻辑与校验、数据库连接、网络调用等全部的功能,前端请求直接到达该模块,无法很好地区分功能。将代码耦合在同一模块也会导致开发迭代效率慢,改动小部分也可能影响到其他模块的功能,所以每次上线的测试回归成本大。此外,对于长耗时的接口如果采用简单的重试轮询策略,会导致策略服务耗时长,浪费后端的机器资源,并且需要减少全流程的耗时以保证用户体验。基于此,本公开针对结合产品功能与服务依赖,提供一种服务架构的设计方案,提升代码的开发效率,优化用户的耗时体验,并且提供适当的安全校验。
图3是根据本公开的实施例的内容处理系统300的示例架构。
内容处理系统300可以包括接入层301和服务层302:
接入层301被配置成获取第一请求。第一请求包括内容数据和针对内容数据的处理命令。接入层301还被配置成响应于第一请求的来源满足安全性指标,向服务层302发送第二请求。第二请求包括内容数据和处理命令,并且第二请求不包括第一请求的来源。
服务层302被配置成根据处理命令对内容数据进行处理。
再次参考图3,接入层301可以从表示层311也可以从网关321获取第一请求。来自表示层的请求可以表征来自本地、内部网络或者本产品线的请求。来自网关321的请求可以表征来自外部来源例如外部网络或者其他产品的请求。在一些实施例中,内容处理系统300可以包括表示层311。表示层被配置成解析前端请求以获得内容数据和处理命令;并且向接入层发送第一请求。由此,接入层能够获取经过预先处理的请求命令,进一步实现模块的解耦和轻量级实现。在其他的示例中,可以不存在表示层,或者这里描述的表示层的功能可以并入前端等,并且由接入层获取内容数据和处理命令的任何其他方法在这里都是适用的。
对于长耗时的特征计算,接入层与服务层之间的连接可能已经因为超时而关闭。此时,可以采用生产者-消费者模型,由服务层将对应图片的计算结果发布到异步的消息队列中,由消息队列通知表示层,表示层接收到消息后将图片特征的计算结果放入表示层的缓存中。当前端下一次重试或轮询时,表示层能够检查缓存中的结果并直接响应。由此,不需要再额外请求服务层,减少了网络耗时和开销。
在一些实施例中,服务层302还被配置成在根据处理命令对内容数据进行处理以生成结果数据后,响应于第二请求超时,创建消息队列。服务层302还被配置成通过消息队列将结果数据发送到表示层。由此,在例如计算量大或者网络繁忙等情况下,如果请求超时则建立消息队列,直接将结果数据发送到表示层。由于服务层不必知道数据的来源,而只需要遵循如果超时则发布到消息队列、如果不超时则回传的简单逻辑即可。消息队列是在连接关闭后由服务层建立的。由于来自外部的流量有单次网络请求上限,所以不会存在超时的问题,因此也不会存在消息队列。由此,不再需要长耗时接口的轮询,节省计算资源,提高计算稳定性。
在一些实施例中,结合图2描述的方法可以在图3的接入层301侧实行。
下面将描述图2所述的内容处理方法的一些替选实施例。
根据一些实施例,第一请求还包括服务接口标识,并且接入层向服务层发送第二请求包括接入层将第二请求发送到服务层中的服务接口。服务接口标识能够指示所述服务层中的与内容数据和处理命令对应的服务接口,例如是调用图片处理模块的借口还是调用视频处理模块的接口等。从第一请求中获取服务接口并且直接将请求参数转发到对应的接口,由此免除了对请求的进一步计算,而只需要根据路由规则转发请求。由此,实现了功能的恰当分布,减轻了计算量,并且能够进一步实现模块之间的解耦。
上述服务接口标识的提取可以通过表示层来实现。根据本公开的一些实施例的架构,表示层是与前端直接交互的第一个模块。也就是说,除了对前端请求进行处理以解析获得请求的数据和处理命令之外,表示层还可以对来自前端的请求参数进行初步处理,以选择将调用的服务层能力,从而使得接入层不再需要对请求参数进行处理,只负责基于表示层已经选好的能力将由表示层传入的数据传递到对应的服务层。
根据一些实施例,内容数据满足以下各项中的至少一项:内容数据是适合于处理命令的格式,内容数据来自有处理权限的用户,或者内容数据来自登录用户。这意味着在由方法200进行处理之前,内容数据已经经过了初步的数据校验。由此,能够进一步实现模块的解耦和每个功能模块的轻量级实现。
上述过程可以通过如图3所述的表示层311来实现。例如,表示层可以对内容数据进行初步校验,判断内容数据是适合于处理命令的格式(例如,针对图片裁剪处理命令,内容数据是.jpg或.bmp格式等),判断内容数据来自登录用户(例如,对来自前端请求的用户登录态进行判断),或者内容数据来自有处理权限的用户等。表示层还可以可以用来完成请求参数的合法性校验、前端响应字段格式化、数据日志打点等处理。数据日志打点是指某接口中某功能的点击量,或某状态的统计量等。可以在表示层的指定位置增加数据日志文件。对于一些和业务强耦合的校验,比如用户登录态、用户权限等,可以在表示层获取对应用户的数据并完成检查。在表示层还可以完成请求参数是否为空、是否是需要的数组类型等过滤。当然,本公开不限于从表示层311接收数据的场景,也不要求系统300中一定包括表示层或类似功能的单独模块。例如,上述处理可以通过前端来实现等。或者,在例如从网关321接受第一请求的场景下,可以事先对接口进行限定,以使得外部来源的请求需要遵循一定的规则或者来自外部来源的数据需要先经过一定的预先处理才能访问接入层。
根据一些实施例,内容数据是内容的内网存储版本或指向内网中存储要处理的内容的位置的链接。这样的本地存储版本能够提高计算效率。例如,这样的处理也可以通过如图3所述的表示层311来实现,但是如上所述,本公开不限于此。
此外,在和前端的请求交互时,存在一些用于方便前端进行展示而单独拆分出来的个性化的字段处理,例如用于前端对模板进行区分的资源的类型、或者文案的拼接等。这些处理由于不涉及核心功能的字段输出,因此也可以由表示层或者表示层配合前端来完成。
根据一些实施例,在向所述服务层发送所述第二请求之前,由所述接入层检查所述服务层的对应端口是否可用。发送第二请求包括响应于服务层的对应端口的状态为可用,向服务层发送第二请求。在调用服务层的服务之前对可用状态进行检查。由此,能够避免对超时或者故障的服务层机器的调用,增加计算效率和稳定性。
上述过程可以由例如图3的接入层301来实现。接入层可以检查服务层的机器的可用状态。例如,如果出现超过一定次数连接失败,就视为该机器的服务不可用,下一个请求流量就分配到其他机器。
接入层还能够在服务层的不同端口和机器之间分配流量。例如,接入层可以根据随机的策略在不同的机器或端口间分配流量,以避免同一个机器上的流量过大。根据一些实施例,发送第二请求包括基于流量控制指标向服务层发送第二请求。流量控制指标可以是基于机器、计算量或者预定分配策略的每端口请求量或者每端口计算量。接入层能够实现流量控制和负载均衡。由此,一方面能够实现模块的解耦,另一方面可以提升系统的运行稳定性,避免流量超载以及由此引发的故障等问题。
接入层位于服务层之上,能够所有的请求流量做负载均衡和路由转发。接入层除了连接到表示层之外,还能够连接到网关。网关用于接入外部来源的调用。来自外部来源例如其他产品线或团队调用本功能时,这部分流量就从网关进行接入。可以在网关完成外部流量来源的权限检验、区分来源进行限流等处理。为防止外部流量包含各种网络安全问题,网关需要控制访问权限,还要避免预期外的流量过大冲垮服务,所以需要对来源进行检查和限流。接入层能够接收来自表示层和网关两者的请求。接收请求后,接入层可以将相同的接口按照相同的路由转发规则分配到服务层。
根据一些实施例,所述方法还包括在根据处理命令对内容数据进行处理以生成结果数据后,响应于第二请求未超时,由服务层向接入层发送结果数据作为对第二请求的响应;以及由接入层将结果数据回传到第一请求的来源。由此,可以直接从服务层接收结果数据,并且服务层仍然不需要知道请求来源,仅仅回传即可,节省了服务层的负担。基于保存在接入层中的数据来源信息,例如该请求原本是来自表示层还是网关,继而将生成的结果数据进行回传,实现了独立的模块和便捷的数据回传机制。
根据一些实施例,从表示层接收第一请求,并且所述方法还包括在根据处理命令对内容数据进行处理以生成结果数据后,响应于第二请求超时,在服务层与表示层之间创建消息队列。之后,由服务层将结果数据推送到消息队列。这样的设计采取了如果请求超时则建立消息队列的思路。因为来自外部来源的请求有单次访问上限,不会出现超时问题,因此超时的时候来源必定是表示层,此时不需要对来源进行判断,直接在服务层和表示层之间建立消息队列即可。因此,不再需要长耗时接口的轮询,节省每个模块的计算资源,并且增加计算效率。
服务层是内容计算功能实现的核心部分。服务层可以连接关系型数据库、全文检索引擎、缓存等,或者通过网络调用其他的第三方服务获取更多的数据。根据一些实施例,服务层通过调用以下中的至少一项来生成结果数据:关系型数据库、全文检索引擎、缓存、第三方服务。结果数据的生成方式。由此,能够准确地对所需内容进行处理。服务层会根据不同的内容类型,提供不同的响应。例如,对于图片内容,能够计算图片的清晰度、信息熵等特征,并根据阈值标记每张图片的结果;能够根据期望的图片尺寸进行裁剪,将图片压缩并转存生成新的链接;能够进行版权图检索,根据图片的标签在数据库中查询相似的图片,提供正版图片避免创作风险。对于文本内容,能够识别长短文本中的错别字并提示纠正,能够提取出文本的关键词作为话题或标题,能够使用文本的关键词在数据库中检索相关的内容。对于视频内容,能够计算视频特征,检查视频是否模糊,生成清晰度更高的视频链接。对于事件内容,能够检索对应事件在全网文章中的稀缺度,并且能够获取该事件的相关文章、动态、视频等。可以理解的是,服务层的功能不限于此,并且可以响应于任何内容数据和对应的处理命令。
根据一些实施例,服务层能够对多个内容数据和多个处理命令进行批量处理。服务层的并发处理能力能够实现数据的大批量处理,增加计算效率。服务层的并发处理方式将在下文结合图4(a)进行更详细的描述。例如,可以将服务层中并发处理的逻辑描述为先并行处理特征,再并行处理内容。通过两级并行处理,能够进一步增加计算效率。根据一些实施例,批量处理包括:针对分别对应于所述多个处理命令的多个处理特征,建立多个协程,所述多个协程中的每个协程对应于所述多个处理特征中的每个处理特征;并行处理所述多个协程;并且在所述多个协程中的每个协程内,针对对应的处理特征并行处理所述多个内容数据。
在这里,处理特征指的是与处理相关的属性。例如,针对图片处理,特征可以是图像清晰度/是否存在二维码/图片大小等。针对视频可以是清晰度、长度等。针对文本可以是内容属性、错别字、流畅度、相关话题等。先计算特征再处理内容可以以两次并发处理的方式来更高效地实现批处理。
下面以图片计算为例,结合图4(a)描述服务层的并发处理方式。容易理解的是,服务层的并发处理方式并不限于图片内容的计算,并且其他类型和格式的内容处理与计算都可以按照相似的思路与逻辑来处理。
服务层中的接口支持多特征、多内容的批量处理。在批量处理中,输入参数中指定一组特征,分别为特征1、特征2……特征n,并且指定一组内容,分别为内容1、内容2……内容m。例如,特征1至特征n可以分别是与剪裁处理、清晰度处理、获取有版权相似图片、提取关键词对应的特征等。例如,内容1至内容m可以是m个不同的图片,这m个不同个图片分别需要经历上述特征1至特征n方面的处理。当然,内容不限于图片,并且图4(b)示出了根据本公开的实施例的服务层的示例功能示意图。
在并发处理多个特征时,对于其中的每个特征开启的时间点不一样,依次激活多个处理单元的时间差构成一个循环,在这里称为“第一次循环c1”。循环结束开启并发之后,可以由多个处理单元同时处理多个特征。例如,由多个处理单元同时并分别处理剪裁处理、清晰度处理、获取有版权相似图片、提取关键词等特征。具体地,在第一次循环c1中,为每个特征开启一个协程用于处理,每个特征之间可以视为在同一个时间点开始并发的。接下来,并发处理多个内容,对于其中的每个内容开启的时间点的时间差构成一个循环,在这里称为“第二次循环c2”。第二次循环结束,由多个处理单元中的对应处理单元,针对每个特征,对多个内容进行并发处理。类似地,在第二次循环中,在每个特征内,为批量处理中的每个内容开启一个协程以用于计算。由此,每个特征内的内容间也可以视为是并发的。例如,由第一处理单元对多个图片1至图片m并行执行剪裁操作,由第二处理单元对多个图片1至图片m并行执行获取有版权相似图片的操作等等,并且这些处理单元也是可以并发执行的。
如果在某特征的某内容出现计算失败,则单独关闭对应的协程以抛弃结果,避免影响其他协程的处理。在等待所有特征的所有内容的结果计算完成之后,将结果存入到服务层对应的缓存中。可选地,可以在将结果存入到服务层对应的缓存中之前,先对结果按规范进行格式化处理。由此,在下次接收到对相同内容请求时,可以直接复用缓存中的计算结果。此后,如果接入层的请求还没有关闭连接,则直接在这次连接中响应计算结果。如果如果接入层的请求已经因为超时而关闭,则可以通过上文描述的消息队列的方式来响应计算结果。
下面结合图5(a),描述根据本公开的另一个实施例的示例内容处理方法500的流程。
在步骤s501处,由前端获取前端请求,并将其传送到表示层。例如,可以与前端请求一起发送待处理的内容,或者待处理的内容或其链接可以包括在前端请求内,并且本公开不限于此处的消息传递方式。
在步骤s502处,表示层解析来自前端的请求以获得内容数据和处理命令,并且向接入层发送第一请求。通过第一请求传递到接入层的数据可以包括内容数据(例如,保存内容数据文件的本地链接)和处理命令等(例如,是裁剪还是清晰度处理)。表示层对来自前端请求进行解析还可以包括对内容数据进行初步处理。例如,初步处理可以包括将待处理的内容(例如,图片文件等)保存到内网,并读取保存的文件的内网链接作为内容数据。表示层对内容数据进行处理可以包括进行细粒度请求参数的规范性(或称合法性)校验,包括校验传入的内容是否是合法格式(例如对于图片,jpg格式、gif格式等),校验请求参数,校验用户是否是合法用户(用户是否登录,用户权限等)。通过第一请求传递到接入层的数据可以包括数据来源。数据来源可以向接入层表示本请求来自于“表示层”而非外部来源或外部网关。通过第一请求传递到接入层的数据可选地还可以包括服务接口标识,其表征需要调用的服务层中的服务接口。也就是说,表示层还对来自前端的请求参数进行初步处理,以选择将调用的服务层能力,从而使得接入层不再需要对请求参数进行处理,只负责基于表示层已经选好的能力将由表示层传入的数据传递到对应的服务层。
在步骤s503处,接入层接收第一请求,基于满足转发指标,向服务层发送第二请求。第二请求可以包括内容数据和处理命令以供服务层进行处理。例如,接入层可以基于预定路由规则,或者可以基于表示层的请求中的服务接口标识,将请求中的内容数据和处理命令转发到服务层的对应接口。不需要将请求中的来源信息等转发到服务层。步骤s503中的转发指标可以包括安全性校验和流量控制指标。接入层可以基于数据来源即表示层或外部来源网关等,判断该来源是否能够访问服务层。接入层可以对来自不同来源和去往不同服务层端口的流量进行分配和均衡。接入层可以响应于满足安全性校验和流量控制指标后,将包括内容和处理参数的数据传递给服务层对应的接口。
在步骤s504处,服务层接收第二请求,基于处理命令对内容数据进行处理,生成结果数据。服务层可以通过调用各种数据库或者外部功能来对内容数据进行处理。服务层可以有多种不同的处理能力。例如,对于图片内容数据,可以生成裁剪的图片或更高清晰度的图片作为结果数据;对于文本内容数据,可以生成纠错后的文本、关键词、相关话题等作为结果数据。可以理解的是,本公开不限于此。
在步骤s505处,判断请求是否超时。
如果请求超时,步骤转入s506,在服务层与表示层之间建立消息队列。服务层将结果数据推送到消息队列。在步骤s507处,表示层从消息队列中读取结果,并且将其保存到缓存。接下来,在步骤s508处,表示层响应于再次接收到来自前端的轮询,将缓存中的结果发送回前端。
之后,转到步骤s509,由前端对数据进行处理和呈现,并且内容处理过程结束。
如果请求未超时,步骤转入s510,服务层将直接在本次请求中,例如作为对第二请求的响应,将结果数据传送回接入层。之后,接入层结合数据来源信息,回传结果数据。例如,接入层结合本身存储的数据来源信息表征该请求和对应数据内容来源于表示层还是网关,将数据传回对应的表示层或网关。在数据回传到表示层的情况下,表示层将数据传回前端。表示层在此不需要再对数据进行处理,或者表示层可以进行一些不涉及核心功能的拼接、展示、个性化等的处理。如果数据回传给网关,则由网关以本领域人员将容易理解的任何方式将结果数据转发到对应的网络设备,并且在此省略网关情况下的数据流通过程。之后,可以转到由前端对数据进行处理和呈现的步骤s509,内容处理过程结束。
通过解耦模块内不同功能区,划分表示层、服务层等,每个分层各自负责独立的功能点,避免在同一模块内互相牵连,同时每个分层可以独立进行升级。整体流程能够更规范地控制流量来源与转发,并能够对外提供服务层抽象后的接口与能力,作为服务化的中台。提升迭代效率,降低研发成本,优化接口耗时。图5(b)示出了根据本公开的另一个实施例的内容处理系统的示例架构图。
下面结合图6描述根据本公开的另一方面的内容处理装置600。内容处理装置600可以包括接入层601和服务层602。接入层601可以被配置成由接入层获取第一请求,所述第一请求包括内容数据和针对所述内容数据的处理命令。服务层602可以被配置成响应于所述第一请求的来源满足安全性指标,向服务层发送第二请求。服务层用于根据所述处理命令对所述内容数据进行处理。所述第二请求包括所述内容数据和所述处理命令,并且所述第二请求不包括所述第一请求的所述来源。
根据本公开的另一方面,还提供一种计算设备,可以包括:处理器;以及存储程序的存储器,程序包括由处理器执行时使处理器执行上述内容处理方法的指令。
根据本公开的又一方面,还提供一种存储程序的计算机可读存储介质,程序可以包括在由服务器的处理器执行时使得服务器执行上述内容处理方法的指令。
参考图7,现将描述可以作为本公开的服务器或客户端的计算设备700的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。
计算设备700可以包括(可能经由一个或多个接口)与总线702连接或与总线702通信的元件。例如,计算设备700可以包括总线702、一个或多个处理器704、一个或多个输入设备706以及一个或多个输出设备708。一个或多个处理器704可以是任何类型的处理器,并且可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。处理器704可以对在计算设备700内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器704为例。
输入设备706可以是能向计算设备700输入信息的任何类型的设备。输入设备706可以接收输入的数字或字符信息,以及产生与内容处理计算设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出设备708可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
计算设备700还可以包括非暂时性存储设备710或者与非暂时性存储设备710连接,非暂时性存储设备可以是非暂时性的并且可以实现数据存储的任何存储设备,并且可以包括但不限于磁盘驱动器、光学存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁介质,光盘或任何其他光学介质、rom(只读存储器)、ram(随机存取存储器)、高速缓冲存储器和/或任何其他存储器芯片或盒、和/或计算机可从其读取数据、指令和/或代码的任何其他介质。非暂时性存储设备710可以从接口拆卸。非暂时性存储设备710可以具有用于实现上述方法和步骤的数据/程序(包括指令)/代码/模块(例如,附图6所示的接入层601和服务层602)。
计算设备700还可以包括通信设备712。通信设备712可以是使得能够与外部设备和/或与网络通信的任何类型的设备或系统,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备和/或芯片组,例如蓝牙tm设备、1301.11设备、wifi设备、wimax设备、蜂窝通信设备和/或类似物。
计算设备700还可以包括工作存储器714,其可以是可以存储对处理器704的工作有用的程序(包括指令)和/或数据的任何类型的工作存储器,并且可以包括但不限于随机存取存储器和/或只读存储器设备。
软件要素(程序)可以位于工作存储器714中,包括但不限于操作系统716、一个或多个应用程序718、驱动程序和/或其他数据和代码。用于执行上述方法和步骤的指令可以包括在一个或多个应用程序718中,并且上述方法可以通过由处理器704读取和执行一个或多个应用程序718的指令来实现。软件要素(程序)的指令的可执行代码或源代码也可以从远程位置下载。
还应该理解,可以根据具体要求而进行各种变型。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现特定元件。例如,所公开的方法和设备中的一些或全部可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如verilog,vhdl,c )对硬件(例如,包括现场可编程门阵列(fpga)和/或可编程逻辑阵列(pla)的可编程逻辑电路)进行编程来实现。
还应该理解,前述方法可以通过服务器-客户端模式来实现。例如,客户端可以接收用户输入的数据并将所述数据发送到服务器。客户端也可以接收用户输入的数据,进行前述方法中的一部分处理,并将处理所得到的数据发送到服务器。服务器可以接收来自客户端的数据,并且执行前述方法或前述方法中的另一部分,并将执行结果返回给客户端。客户端可以从服务器接收到方法的执行结果,并例如可以通过输出设备呈现给用户。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算设备上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
还应该理解,计算设备700的组件可以分布在网络上。例如,可以使用一个处理器执行一些处理,而同时可以由远离该一个处理器的另一个处理器执行其他处理。计算设备700的其他组件也可以类似地分布。这样,计算设备700可以被解释为在多个位置执行处理的分布式计算系统。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本公开的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
1.一种内容处理方法,包括
由接入层获取第一请求,所述第一请求包括内容数据和针对所述内容数据的处理命令;
由所述接入层响应于所述第一请求的来源满足安全性指标,向服务层发送第二请求,其中,所述第二请求包括所述内容数据和所述处理命令,并且所述第二请求不包括所述第一请求的所述来源;以及
由所述服务层根据所述处理命令对所述内容数据进行处理。
2.根据权利要求1所述的方法,其中,所述第一请求还包括服务接口标识,所述服务接口标识指示所述服务层中的与所述内容数据和所述处理命令对应的服务接口,并且
其中,由所述接入层向所述服务层发送所述第二请求包括由所述接入层将所述第二请求发送到所述服务层中的所述服务接口。
3.根据权利要求1所述的方法,其中,在向所述服务层发送所述第二请求之前,由所述接入层检查所述服务层的对应端口是否可用,以及
响应于所述服务层的所述对应端口的状态为可用,向所述服务层发送所述第二请求。
4.根据权利要求1所述的方法,其中,发送所述第二请求包括基于流量控制指标向所述服务层发送所述第二请求。
5.根据权利要求1所述的方法,其中,所述内容数据满足以下各项中的至少一项:
所述内容数据是适合于所述处理命令的格式,
所述内容数据来自登录用户,或者
所述内容数据来自有处理权限的用户。
6.根据权利要求1所述的方法,还包括,
在根据所述处理命令对所述内容数据进行处理以生成结果数据后,响应于所述第二请求未超时,由所述服务层向所述接入层发送所述结果数据作为对所述第二请求的响应;以及
由所述接入层将所述结果数据回传到所述第一请求的所述来源。
7.根据权利要求1所述的方法,其中,所述第一请求是从表示层接收的,并且所述方法还包括,
在根据所述处理命令对所述内容数据进行处理以生成结果数据后,响应于所述第二请求超时,在所述服务层与表示层之间创建消息队列;以及
由所述服务层将所述结果数据推送到所述消息队列。
8.根据权利要求1所述的方法,其中,所述服务层通过调用以下中的至少一项来生成结果数据:关系型数据库、全文检索引擎、缓存、第三方服务。
9.根据权利要求1所述的方法,其中,所述服务层能够对多个内容数据和多个处理命令进行批量处理。
10.根据权利要求9所述的方法,其中,所述批量处理包括:
针对分别对应于所述多个处理命令的多个处理特征,建立多个协程,所述多个协程中的每个协程对应于所述多个处理特征中的每个处理特征;
并行处理所述多个协程;并且
在所述多个协程中的每个协程内,针对对应的处理特征并行处理所述多个内容数据。
11.根据权利要求1-10中任一项所述的方法,其中,所述内容数据是内容的内网存储版本或指向内网中存储所述要处理的内容的位置的链接。
12.根据权利要求1-10中任一项所述的方法,其中,所述内容数据表示图片,并且所述处理命令是以下各项中的至少一项:获取与所述图片相关的关键词、对所述图片进行裁剪、对所述图片进行旋转加工、对所述图片进行色彩处理、获取所述图片的关联图片、获取所述图片的更高清晰度的版本、以及获取与所述图片相似的有版权图片。
13.根据权利要求1-10中任一项所述的方法,其中,所述内容数据表示文本,并且所述处理命令是以下各项中的至少一项:对所述文本进行纠错处理、获取与所述文本内容相关的关键词、以及获取与所述文本内容相关的话题。
14.根据权利要求1-10中任一项所述的方法,其中,所述内容数据表示视频,并且所述处理命令是以下各项中的至少一项:获取与所述视频相关的关键词、对所述视频进行裁剪、对所述视频进行旋转加工、对所述视频进行色彩处理、获取所述视频的关联视频、以及获取所述视频的更高清晰度的版本。
15.根据权利要求1-10中任一项所述的方法,其中,所述内容数据表示事件,并且所述处理命令是以下各项中的至少一项:获取与所述事件相关的关键词、获取所述事件的稀缺度、获取所述事件的话题度、获取与所述事件相关的图片、获取与所述事件相关的视频、以及获取与所述事件相关的文章。
16.一种内容处理系统,包括:
接入层,用于
获取第一请求,所述第一请求包括内容数据和针对所述内容数据的处理命令;
响应于所述第一请求的来源满足安全性指标,向服务层发送第二请求,其中,所述第二请求包括所述内容数据和所述处理命令,并且所述第二请求不包括所述第一请求的所述来源;以及
所述服务层,所述服务层用于根据所述处理命令对所述内容数据进行处理。
17.根据权利要求16所述的内容处理系统,还包括表示层,所述表示层用于:
解析前端请求以获得所述内容数据和所述处理命令;以及
向所述接入层发送所述第一请求。
18.一种计算设备,包括:
处理器;以及
存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1至15中任一项所述的方法。
19.一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由服务器的处理器执行时使得所述服务器执行根据权利要求1至15中任一项所述的方法。
技术总结