用于生成和服务推荐的可扩展系统和方法与流程

文档序号:15307712发布日期:2018-08-31 21:16阅读:178来源:国知局

本申请总地涉及用于生成和服务推荐的计算机系统和方法,该推荐针对与用户的在线和/或离线活动有关的内容、产品和/或服务。



背景技术:

商业网站和应用程序常常给他们的用户提供推荐。这种推荐可包括与用户所访问的当前网页或应用程序相关的内容(如,相关的新闻报道),与用户的购物车内的产品相关的产品(如,如果用户正在购买鞋子则对袜子的推荐),或者与由用户访问的当前网页和/或用户购物车中的产品相关的促销/广告。还可以将产品和报价推荐注入到发送给用户的电子邮件通信中。个性化的、相关的和适当的推荐可以帮助增加用户流量、销售额和/或收入,因此它们是商业网站和应用程序的重要组成部分。

为了生成相关的推荐,推荐引擎考虑关于用户的一个或更多个因素或数据和/或由用户访问的当前网页的内容。一般地,推荐引擎使用实时信息以及长时间段积累的历史信息来生成推荐。这种推荐引擎需要存储器和处理能力,其可以根据用户流量、商家目录中的产品数量或报价以及可用的历史数据的数量而变化。推荐引擎还需要网络带宽来为推荐服务,而没有不期望的延迟。

图1是根据现有技术的一种用于向客户端100提供推荐的系统10的框图。当用户在从主机110下载的客户端100上查看网页时,主机110将对推荐的请求传输至推荐后台120。推荐后台120包括路由服务器130和多个推荐服务器140a、140b、140c、140n。每个推荐服务器140a、140b、140c、140n分别包括逻辑处理器150a、150b、150c、150n和存储器160a、160b、160c、160n。尽管推荐服务器之间的处理器可能有所不同,但是每个存储器是其他存储器的镜像。每个存储器包括各自的服务器响应推荐请求所需的所有信息。

路由服务器130接收推荐请求并且确定将推荐请求发送到哪个推荐服务器140a、140b、140c、140n。路由服务器130可以考虑各种因素(诸如每个推荐服务器的可用能力和地理位置),以确定合适的推荐服务器140a、140b、140c、140n来处理推荐请求。然后路由服务器130将推荐请求传输至合适的推荐服务器140a,以处理该请求。一旦接收到推荐请求,则处理器150a查询存储器160a,以获取与该请求相关的数据。这种数据可以包括与用户相关的个人信息,与由用户访问的网页或网站相关的信息,和/或与用户购物车中的产品相关的产品列表。然后处理器150a将逻辑(如,推荐算法)应用于所述数据并且将推荐返回到路由服务器130,然后路由服务器130经由主机110向客户端100发送推荐。

响应于推荐请求的量(如,由于网站流量的增加或减少),路由服务器130可以向上或向下调整推荐服务器140a、140b、140c、140n的数量。如果响应于增加的推荐请求量,路由服务器130需要部署新的推荐服务器140n,则路由服务器130必须首先使现有的推荐服务器140c将其存储器160c复制到新的服务器140n的存储器160n。由于存储器160c非常大,将存储器160c复制到存储器160n可能需要花费数个小时或更多的时间。因而,部署新的推荐服务器140n可能花费数个小时或更多的时间。而且,服务器140c的一些带宽被转移为使新的服务器140n上线。由于后台120能力过剩(或接近能力过剩),直到新的服务器140n上线以后,推荐请求将花费更长的时间去处理,这将导致不希望的延迟。由于这个原因,新的推荐服务器通常在真正需要其能力之前进行部署,以便有充足的时间将数据复制到新的服务器。结果,推荐后台120通常在过载的情况下操作,这导致不期望的成本和效率低。



技术实现要素:

下面的描述和附图详细阐述了本公开的某些示例性实现方式,其指示可以执行本公开的各种原理的若干示例性方式。然而,所述的示例并未穷尽本公开的许多可能的实施例。本公开的其他对象、优点和新颖特征将在下面的对本公开的详细描述中参考附图进行阐述。

本发明的方面涉及无状态服务器或处理器的使用,这些无状态服务器或处理器通常不保留(存储)关于一些或任意交易或条件的状态的信息,如来自与客户端计算机交互的会话数据。可扩展推荐引擎包括与存储上下文数据的至少一个存储器服务器进行通信的无状态处理器。路由器被配置成将推荐请求导向第一无状态处理器,所述第一无状态处理器被配置成采用来自存储器服务器的上下文数据生成推荐。控制器监控无状态处理器的可用处理带宽,以及如果所述可用处理带宽小于最小可用处理带宽阈值,则部署额外的无状态处理器。如果所述可用处理带宽大于预设的可用处理带宽阈值,则控制器可以从部署中移除无状态处理器。预设的可用处理带宽阈值在这里可以指代最大的、预设最大的或者预定最大的带宽。

一方面,本发明包括一种为操作客户端的用户生成推荐的方法。所述方法包括在具有无状态处理器阵列与存储器通信的推荐生成引擎中,从主机接收推荐请求。所述方法还包括在所述推荐生成引擎中,将所述推荐请求导向所述无状态处理器阵列中的第一无状态处理器。所述方法还包括在所述第一无状态处理器中,响应于对所述存储器的上下文数据查询,接收上下文数据,所述上下文数据包括由所述客户端当前访问的网页。所述方法还包括在所述第一无状态处理器中,采用所述上下文数据生成所述推荐,所述推荐用于所述网页的相关内容。

另一方面,本发明包括一种控制推荐引擎的处理能力的方法,所述推荐引擎包括多个无状态处理器和多个存储器服务器。所述方法包括监控所述推荐引擎的可用处理带宽。所述方法还包括确定所述可用处理带宽是否小于最小可用处理带宽阈值。所述方法还包括如果所述可用处理带宽小于所述最小可用处理带宽阈值,则激活额外的无状态处理器。

另一方面,本发明包括一种可扩展推荐引擎。所述推荐引擎包括多个无状态处理器;至少一个存储器服务器,与所述多个无状态处理器通信,所述存储器服务器存储上下文数据;路由器,与所述多个无状态处理器通信以将推荐请求导向第一无状态处理器,其中所述第一无状态处理器被配置成采用所述上下文数据生成推荐;以及控制器,与所述多个处理器通信,所述控制器被配置成监控所述多个处理器的可用处理带宽,以及如果所述可用处理带宽小于最小可用处理带宽阈值,则部署额外的无状态处理器。

附图说明

为了更全面理解本发明的本质和优点,参考以下优选实施例的详细描述并结合附图,附图中:

图1是根据现有技术的用于向客户端提供推荐的系统的框图;

图2是根据实施例的用于向客户端提供推荐的系统的框图;

图3是根据实施例的用于生成推荐请求的方法的流程图;

图4是根据实施例的用于控制推荐引擎的能力的方法的流程图;

图5时根据实施例的用于向客户端提供推荐的系统的框图;以及

图6是向用户推荐产品的流程图60。

具体实施方式

图2是根据实施例的用于向客户端200提供推荐的系统20的框图。所述系统20包括客户端200、主机210和推荐引擎220。推荐引擎220包括路由器服务器230,控制器235,无状态逻辑处理器240a、240b、240c、240n(通称240)和存储器存储250a、250b、250c(通称250)。无状态逻辑处理器240为向推荐引擎220提供计算能力的服务器或虚拟服务器。在一些实施例中,每个逻辑处理器240是完全相同的。逻辑处理器240是无状态的,在无状态的情况下它们不会永久存储生成推荐所需的数据。相反,该数据存储在存储器存储250中,存储器存储250可以由无状态处理器240通过查询访问。

由于所述无状态逻辑处理器240和存储器存储250是去耦合的,因为不需要将数据复制到与新的无状态逻辑处理器240n相关联的新的存储器存储250中,从而可以将新的无状态逻辑处理器240n快速且独立地联机(online)。同样,由于逻辑处理器240可以彼此完全相同或基本上完全相同,需要很少的配置或者引导时间将新的无状态逻辑处理器240联机。例如,新的无状态逻辑处理器240只需要加载所加载的推荐服务并在联机之前检索配置参数(如,推荐的逻辑或规则)。因而,推荐引擎220可以随着推荐引擎220的能力需求的波动,近乎实时地激活和停用所述无状态逻辑处理器240,从而提供高度可扩展推荐引擎220。例如,如果推荐引擎220接收到(或期望接收到)推荐请求的激增,则可以快速激活新的无状态逻辑处理器240n。同样,如果推荐请求量下降到阈值以下或逻辑处理器240在大于预设的最大能力下操作(如,大于50%的过剩能力),则可以停用现有的无状态处理器(如240c)。由于逻辑处理器(如240c)可以立刻重新激活,所以在停用逻辑处理器方面有极小的风险。

存储器存储250可以包括宿主在一个或更多个服务器和/或虚拟服务器的集群中的一个或更多个数据库(或其他数据存储的方法/结构)。在一些实施例中,存储器存储是redis数据服务器或数据服务器实例。在一些实施例中,存储器存储250可以彼此通信。此外,在给定集群中的服务器和/或虚拟服务器可以彼此通信,例如跨集群共享数据。当需要额外的存储能力(如,用于推荐数据)和/或用于存储器存储250的地理分布(如在欧洲添加存储器存储250以服务于欧洲市场)时,可以将新的存储器存储250联机。例如,额外的推荐数据可以由新客户、新产品等等驱动。可以使这样的新存储器存储250联机,而不必须使新的无状态处理器240联机。

在操作中,用户访问客户端200以查看网页或电子邮件促销广告。网页的内容通过第一网络(如,第一广域网)从主机210传输至客户端200。并行地(或者在任何时候),主机210和/或客户端200可以向推荐引擎220发送对推荐的请求。推荐请求可以包括与用户的浏览活动、用户的账户信息、用户的购物车中的产品、由用户操作的设备类型、和/或生成推荐请求的时间和/或日期相关的信息。用户的浏览活动可以包括用户访问的广告、促销电子邮件或url链接(如,用于广告的链接,用于产品或服务的链接,等等),以生成所述推荐请求。所述请求可以通过api发送。

推荐请求通过第二网络(如,第二广域网)发送,第二网络可以与第一网络相同或者不同。路由器服务器230接收所述推荐请求并选择无状态逻辑处理器240(如,无状态逻辑处理器240a)以处理所述推荐请求。路由服务器230可以基于无状态逻辑处理器240运行时预设的最大能力的百分比、无状态逻辑处理器240的地理位置、和/或无状态逻辑处理器240的网络带宽来选择无状态逻辑处理器240。然后路由器服务器230向适当的无状态逻辑处理器240(如,无状态处理器240a)转发推荐请求。在一些实施例中,所述路由器服务器230与负载平衡器通信,以平衡可用的无状态处理器240上的处理工作负荷。

控制器235通过网络(如,局域网或者广域网)与路由器服务器230通信。在一些实施例中,控制器235和路由器服务器230位于相同的服务器或虚拟服务器上。控制器235被配置成例如通过经由路由器服务器230通过向每个逻辑处理器240发送查询来确定无状态处理器240的可用带宽。可选地,直接测量无状态处理器240的可用带宽和/或将其推送至控制器235。如果可用处理带宽比最小预定阈值(如5%、10%或20%)小,则控制器235可以部署额外的无状态处理器240以增加可用处理带宽。此外或者可选地,即使可用处理带宽大于上述最小阈值,控制器235也可以在推荐请求的预期增加之前而部署额外的无状态逻辑处理器240。例如,控制器235可以在电子邮件促销活动之前或由于推荐请求业务(如,在黑色星期五)的其他预期的增加而部署额外的无状态逻辑处理器240。同样地,如果可用处理带宽大于最大预定阈值(如25%,30%或35%),则控制器235可以减少无状态处理器240的数量。例如,控制器235可以首先在电子邮件活动之前增加无状态逻辑处理器240的数量,然后在推荐请求的相关激增结束之后减少无状态逻辑处理器240的数量。在另一个示例中,控制器235在白天增加处理器240的数量,而在夜晚减少处理器240的数量。额外的处理器240的部署可以包括分配额外的处理器240(如,来自诸如亚马逊网络服务的服务提供商)以及采用包括用于提供推荐和相关商业逻辑的算法(如本文所述)的推荐服务配置处理器240。在一些实施例中,处理器240周期性地获取来自广告商/零售商/服务提供者的算法和商业逻辑以确定它们是最新的。

无状态逻辑处理器240评估与推荐请求相关联的信息(如果存在的话)并且确定从存储器存储250中请求什么上下文数据。处理器240然后向可用存储器存储250(如,存储器存储250b)发送查询,以获取合适的上下文数据。在一些实施例中,无状态逻辑处理器240将查询发送至多个存储器存储250。逻辑处理器240可以使用来自第一存储器存储250的数据来响应查询,或者逻辑处理器240可以使用所有响应。上下文数据可以包括用户的账号、用户的地理位置、用户的性别、用户的年龄、用户的网址访问历史、用户的订单历史、用户的社交媒体帖子(或其他社交媒体交互数据)、用户正在访问的网页的内容、产品评论、产品存货清单、产品定价和销售、产品目录、每个产品的数量、产品订购趋势、天气预报,以及类似的信息。

在逻辑处理器240从存储器存储250接收到上下文数据并将上下文数据存储在本地存储器或高速缓存之后,逻辑处理器240使用至少一些上下文数据和随着推荐请求接收的信息,应用算法或其他逻辑以生成相关推荐。在这一阶段,逻辑处理器240可以应用任何商家定义的商业规则以过滤/影响向用户显示的推荐。例如,商家可能决定不向用户清楚展示任何产品。另一个示例可以是,商家可以根据用户正在浏览的当前产品的品牌决定哪些品牌是符合向用户示出的条件的。另一示例可以是,相比其他产品,商家优选具有某些属性(如,颜色、合身、风格等)的产品作为推荐示出。算法和商业规则由逻辑处理器240处理和应用以生成推荐。然后处理器240将推荐传输至路由器服务器230,路由器服务器230将所述推荐转发给主机210,以提供给客户端200。在一些实施例中,例如可以对相似的用户应用不同的算法,以测试算法的相对性能。

所述推荐可以用于仅仅为该特定用户选定的相关内容(如,相关新闻报道),仅仅为该特定用户选定的相关产品或服务(如,如果用户正在买网球拍,则可以是网球),仅仅为该特定用户选定的促销(如,如果用户为男性,则可以是用于男人穿着的销售),或者本领域技术人员所理解的相似推荐。

在一些实施例中,路由器服务器230可以向多个无状态处理器240发送推荐请求,以便基于不同的算法获得多个推荐,并且可以将推荐请求的结果合并或组合在一起。例如,逻辑处理器240a可以基于用户的性别应用算法,而逻辑处理器240b可以基于用户的购物车中的产品应用算法。路由器服务器230或第三逻辑处理器240c可以将两个推荐合并成单个推荐给用户。可选地,路由器服务器230或第三逻辑处理器240c可以向用户提供两个推荐。在一些实施例中,从商家检索的配置参数可以决定是否将推荐请求发送至多个处理器250。

尽管已经关于网页或电子邮件描述了推荐引擎220的操作,但是推荐引擎220并不限于这些技术。推荐引擎220可以应用于任何想要推荐的技术中。例如,推荐引擎220可以应用于应用程序、视频游戏、线上约会、智能手机、店内广告、优惠券(线上的或店内结账时打印的)、自动贩卖机、电子书阅读器或餐厅(如,菜单推荐)。

在一些实施例中,可以将推荐引擎220描述为具有无状态逻辑处理器240的外层245和存储器存储250的内层255。基于推荐引擎220的能力需求、推荐引擎220接收到的推荐请求量和/或网络业务,可以将外层245中的无状态逻辑处理器240的数量向上或向下调节。外层245中的无状态逻辑处理器240与内层255中的存储器存储250通信,以访问上下文数据用于生成推荐。

图3是根据实施例的用于生成推荐请求的方法30的流程图。方法30包括300,从主机接收推荐请求。正如上面所讨论的,推荐请求可以包括与用户的浏览活动、用户的账户信息、用户的购物车中的产品、用户操作的设备的类型、和/或生成推荐请求的时间和/或日期相关的信息。该方法还包括310,将推荐请求导向第一无状态逻辑处理器。可以通过上面讨论的路由器或路由器服务器将推荐请求导向第一无状态逻辑处理器。该方法还包括320,响应于对存储器存储的查询(如,在无状态逻辑处理器处)接收上下文数据。该方法还包括330,使用至少一些上下文数据(如,在无状态逻辑处理器处)生成推荐请求。

图4是用于动态控制推荐引擎的能力的方法40的流程图。方法40包括400,确定无状态逻辑处理器(如,无状态逻辑处理器240)的可用处理带宽。在410,可用处理带宽与最小可用处理带宽阈值进行比较。最小可用处理带宽阈值可以由操作者(如,通过管理员用户界面)手动设置或者可以基于历史数据或者最佳实践自动设置。最小可用处理带宽阈值可以是5%、10%、15%、20%或者其间的任何值。如果可用处理带宽小于最小可用处理带宽阈值,则在420,部署一个或更多个额外的无状态逻辑处理器以增加推荐引擎的可用处理带宽。在一些实施例中,迭代地部署额外的无状态逻辑处理器。例如,可以部署第一额外无状态处理器,然后确定可用处理带宽。如果可用处理带宽仍小于最小处理带宽阈值,则可以部署第二额外逻辑无状态处理器,然后再次确定可用处理带宽。这一迭代过程可以一直持续,直到可用处理带宽大于最小可用处理带宽阈值。

如果可用处理带宽不小于最小可用处理带宽阈值,则该方法前进至430。在430,可用处理带宽与预设最大可用处理带宽阈值进行比较。预设最大可用处理带宽阈值可以由操作者(如,通过管理员用户界面)手动设置,或者基于历史数据或最佳实践自动设置。预设最大可用处理带宽阈值可以是40%、45%、50%或其间的任何值。如果可用处理带宽大于预设最大可用处理带宽阈值,则从部署释放一个或更多个过多的无状态处理器,以减少推荐引擎的过多处理带宽。在一些实施例中,过多的无状态逻辑处理器可以从部署迭代地释放。例如,可以从部署释放第一过多无状态逻辑处理器,然后确定可用处理带宽。如果可用处理带宽仍然大于预设最大可用处理带宽阈值,可以从部署释放第二过多无状态逻辑处理器,然后再次确定可用处理带宽。这个迭代的过程可以一直持续,直到可用处理带宽小于预设最大可用处理带宽阈值。在这些部分中,处理带宽可能指cpu使用率、内存使用率、网络使用率或者这些因素的组合。

图5是根据另一个实施例的用于向客户端500提供推荐的系统50的框图。系统50包括主机510、路由器520和区域推荐引擎525。区域推荐引擎525包括负载均衡器530,无状态逻辑处理器540a、540b、540c(通称540),产品服务器550,高速缓存服务器550,记录服务器555,预计算推荐服务器560,实时模型评分服务器565,和分析服务器570。区域推荐引擎525代表可以在地理位置上分布以提供快速响应时间的多个推荐引擎中的一个。

与上面所讨论的实施例类似的,客户端500例如通过访问由主机510宿主的网站或电子邮件服务器与主机510通信。客户端500或主机510发送对推荐的请求,推荐请求被传输至路由器520。路由器520将推荐请求导向区域推荐引擎525。可以基于客户端500和推荐引擎525的相对位置和/或推荐引擎525的可用处理带宽对区域推荐引擎525进行选择。路由器520可以是dns延时路由器。

推荐请求被发送给负载均衡器530,其将请求导向无状态逻辑处理器集群或层545。负载均衡器530确定无状态逻辑处理器集群/层545中的每个无状态逻辑处理器540的可用处理带宽,并将推荐请求导向具有最大可用处理带宽的无状态逻辑处理器540,以跨越无状态处理器540分配处理载荷。

无状态处理器540与产品服务器550、高速缓存服务器555、记录服务器560、预计算推荐服务器565、实时模型评分服务器570以及分析服务器575进行通信。无状态处理器540可以查询或呼叫预计算推荐服务器565,以获得一个或更多个预计算推荐。预计算推荐可以包括总体上最流行的产品、对来自相同城市或区域的顾客来说最流行的产品、通常一起购买的产品(如,衬衫和领带)、当季流行的产品、减价的产品,等等。预计算推荐还可以包括基于顾客的历史线上活动和/或历史购买的推荐。此外,无状态处理器540可以基于用户的线上活动查询或呼叫实时模型评分服务器570,以获得一个或更多个实时推荐。实时推荐的示例一般包括基于用户的购物车中的项目的推荐、基于用户在零售商网站内的浏览历史的推荐,和基于用户的线上活动的推荐(如,社交媒体帖子,网络搜索等)。

在无状态处理器540接收到来自预计算推荐服务器565和/或实时模型评分服务器570的推荐之后,无状态处理器540可以与产品服务器550进行通信。例如,产品服务器550具有由零售商提供的产品目录的数据库。因而,无状态处理器540可以查询产品服务器550,以获得与推荐产品相匹配的当前产品供应,诸如响应于领带推荐的当前可用的真实领带。产品服务器550还包括关于每个产品的各种元数据,诸如它的价格、它是否在减价、它是否是新品或接近其生命周期末端的产品、产品的库存、产品打算用于的季节(如,用于冬季的厚大衣)等。无状态处理器540可以基于来自预计算推荐服务器565和/或来自实时模型评分服务器570的推荐使用产品元数据来选择额外推荐的产品。无状态处理器540可以在处理推荐请求的同时将数据临时存储在高速缓存服务器555中。例如,高速缓存服务器555可以存储来自无状态处理器540的中间和/或最终计算结果,以对随后的响应进行加速。

记录服务器560可以记录推荐请求和由无状态处理器540处理的推荐,以供后续的分析。分析服务器575可以追踪零售商网站上的用户活动和计算某些度量以用于后续使用。例如,可使用分析服务器575来追踪推荐产品和用于生成推荐的方法之间的转化率(销售额)。

图6是用于向用户推荐产品的流程图60。在步骤610中,无状态处理器确定用户是否为商家所知。例如,无状态处理器可以基于用户的电子邮件地址、用户的ip地址,用户设备上的cookie中的数据等查询用户数据库。如果用户不为商家所知,则在步骤620中推荐引擎基于总计销售数据生成初步推荐。例如,推荐引擎可以基于销售给用户的最畅销产品生成初步推荐,该用户与推荐打算用于的用户使用相同的设备或居住在相同的位置。如果用户为商家所知,则在步骤630中,推荐引擎确定其是否具有关于用户的近期活动(如,浏览活动,购物车中的产品等)的任何数据。如果存在近期活动的数据,则推荐引擎应用近期活动机器学习模型640来生成初步推荐。近期机器学习模型640仅仅使用非常近期的活动来生成初步推荐。如果没有近期活动的数据,推荐引擎应用历史活动机器学习模型650来生成初步推荐。历史活动机器学习模型650使用所有对用户可用的历史数据来生成初步推荐。在一些实施例中,两个推荐引擎均应用近期活动机器学习模型640和历史活动机器学习模型650两者。

近期活动机器学习模型640和/或历史活动机器学习模型650的输出在步骤660合并(尽管如果仅应用模型640和650之一时,合并不是必要的)。在步骤670,步骤660的输出与步骤620的输出组合,以提供组合的初步推荐输出。换言之,在步骤620中生成的初步推荐(未知用户模型)与来自步骤640和/或650的初步推荐(已知用户模型)合并,以提供初步推荐的超级设置。在步骤680中,商业规则被应用于组合的初步推荐输出,从而生成最终推荐,所述最终推荐在步骤690中返回给主机/用户。如上面所讨论的,在步骤680中应用的商业规则可以包括哪些产品在减价、商家想要促销哪些产品、哪些产品应季等。

如现在将认识到的,上述系统和方法允许推荐引擎的处理带宽的动态增加或减少。这样的系统和方法可以减少在额外的处理能力被联机时在过度能力下操作的推荐引擎的不期望的处理延迟。所述系统和方法还可以提供开支节省,因为推荐引擎不需要在过度能力下操作,因为额外的处理能力可以被动态部署。如此,可以释放过多处理能力,以在企业中更高效使用,或者过多处理能力可以被释放返还给云端供应商(如,亚马逊)。

本发明不应认为限于上面描述的特定实施例,而是应当理解为覆盖如本权利要求中清楚阐述的本发明的所有方面。本发明所针对的本领域技术人员在仔细研究本公开内容后将容易明白本发明可适用的各种修改、等同处理以及多种结构。该权利要求旨在涵盖这些修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1