一种用户URL请求的匹配方法转让专利

申请号 : CN201910615374.7

文献号 : CN110308996B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 齐明肖鹏

申请人 : 北京首汽智行科技有限公司

摘要 :

本发明公开的用户URL请求的匹配方法,涉及网络技术领域,基于不同用户角色应用场景下的服务器动态分配,实现了不同用户级别的应用服务自动分配功能,基于不同客户端应用场景下的服务器动态分配,实现不同客户端用户群的不同负载能力主机的自动动态分配功能,降低了代码复杂度并提高了系统性能,基于百万日活用户及百万以下日订单的应用支撑级别下完成流量管控,具备一定的扩展能力,能够满足分时租赁业务日益增长的业务要求,符合足大生态系统的发展趋势。

权利要求 :

1.一种用户URL请求的匹配方法,其特征在于,包括:利用lua脚本语言,编写用于列举可用服务器的配置列表,其中,所述配置列表包括各个应用服务器的内网IP地址、名称及初始权重;

基于lua‑redis插件开启pipeline模式,分别从redis数据库中获取各个服务器的性能权重、各个用户的角色权重、各个客户端权重并生成主机性能权重列表、角色权重列表及客户端权重列表;

接收用户URL请求,将主机性能权重列表与配置列表匹配,确定与所述用户URL请求匹配的应用服务器的性能权重,包括:利用lua‑nginx‑module插件,从用户URL请求中获取用户角色标识并根据角色权重列表,确定与所述用户角色标识匹配的权重值;

利用lua‑nginx‑module插件,从用户URL请求中获取客户端标识并根据客户端权重列表,确定与所述客户端标识匹配的权重值;

利用加权平均算法,确定与所述用户URL请求匹配的应用服务器的性能权重;

根据所述性能权重,从所述配置列表中获取与所述用户URL请求匹配的应用服务器并将所述用户URL请求分配到所述应用服务器上。

2.根据权利要求1所述的用户URL请求的匹配方法,其特征在于,所述性能权重列表包括:应用服务器的主机别名及应用服务器可参与计算的性能比重。

3.根据权利要求1所述的用户URL请求的匹配方法,其特征在于,所述角色权重列表包括:用户角色的标识及用户角色的权重值。

4.根据权利要求1所述的用户URL请求的匹配方法,其特征在于,所述客户端权重列表包括:客户端的标识及客户端的权重值。

5.根据权利要求1所述的用户URL请求的匹配方法,其特征在于,所述性能权重、所述角色权重及所述客户端权重的值均在0.1‑1之间。

说明书 :

一种用户URL请求的匹配方法

技术领域

[0001] 本发明属于网络技术领域,具体涉及一种用户URL请求的匹配方法。

背景技术

[0002] 汽车分时租赁目前在分时租赁行业占据重要市场份额,日活用户及日订单量不断增长,基于分时租赁业务,租赁公司不断扩大分时租赁的用户应用场景,深入挖掘用户需求并构建分时租赁的软件生态环境,用户在系统可能存在多个角色并在各系统内相互切换,各系统的用户群及负载能力同样是不断变化,如何在众多复杂系统中管理不同终端用户角色的访问优先级别并分配到适合的后端业务服务器,成为是否能提升用户体验的重要问题。
[0003] 目前行业内流量及权限管理方式主要包括以下两种:
[0004] 采用基于nginx的openresty应用框架并配备nginx扩展模块及lua脚本插件的网关应用系统、基于oauth2.0的接口授权管理方式。
[0005] 基于nginx的openresty应用框架作为流量控制的解决方案,继承了nginx基于epoll、kqueue事件驱动的异步网络IO机制,其并发数可达到万级。但其扩展模块主要功能局限于存储扩展、转发负载算法方面;另外开源lua脚本语言插件能完成数据包校验功能,但完成指定业务的流量控制和多应用场景的角色流量管理需要定制化研发支持。
[0006] 基于oauth2.0的接口授权管理方式是行业内主要的开放接口授权管理方案,基于userKey和用户分组标记可以支持可配置授权角色内接口访问控制,配合分布式redis流量计数可完成角色访问及流量控制,但此方案存在如下问题:
[0007] 基于redis的计数对于多步骤保存操作有较多问题,多步骤频繁操作redis会由于网络等原因导致读写性能下降影响并发处理能力;存在竞态条件的代码会引发数据计数错误情况,影响统计准确性;采用pipeline功能可保留一定并发能力但不能解决数据一致性问题;通过redis的multi、exec、discard、watch命令完成一致性支持同时会提升代码复杂度并降低系统性能。
[0008] oauth作为应用服务层解决方案,其并发量和流量管理性能不能满足分时租赁业务日益增长的业务要求,不符合足大生态系统的发展趋势。

发明内容

[0009] 针对现有技术存在的缺陷,本发明实施例提供了一种用户URL请求的匹配方法,该方法包括以下步骤:
[0010] 利用lua脚本语言,编写用于列举可用服务器的配置列表,其中,所述配置列表包括各个应用服务器的内网IP地址、名称及初始权重;
[0011] 基于lua‑redis插件开启pipeline模式,分别从redis数据库中获取各个服务器的性能权重、各个用户的角色权重、各个客户端权重并生成主机性能权重列表、角色权重列表及客户端权重列表;
[0012] 接收用户URL请求,将主机性能权重列表与配置列表匹配,确定与所述用户URL请求匹配的应用服务器的性能权重,包括:
[0013] 利用lua‑nginx‑module插件,从用户URL请求中获取用户角色标识并根据角色权重列表,确定与所述用户角色标识匹配的权重值;
[0014] 利用lua‑nginx‑module插件,从用户URL请求中获取客户端标识并根据客户端权重列表,确定与所述客户端标识匹配的权重值;
[0015] 利用加权平均算法,确定与所述用户URL请求匹配的应用服务器的性能权重;
[0016] 根据所述性能权重,从所述配置列表中获取与所述用户URL请求匹配的应用服务器并将所述用户URL请求分配到所述应用服务器上。
[0017] 优选地,所述性能权重列表包括:应用服务器的主机别名及应用服务器可参与计算的性能比重。
[0018] 优选地,所述角色权重列表包括:用户角色的标识及用户角色的权重值。
[0019] 优选地,所述客户端权重列表包括:客户端的标识及客户端的权重值。
[0020] 优选地,所述性能权重、所述角色权重及所述客户端权重的值均在0.1‑1之间。
[0021] 本发明实施例提供的用户URL请求的匹配方法具有以下有益效果:
[0022] (1)基于百万日活用户及百万以下日订单的应用支撑级别下完成流量管控,具备一定的扩展能力,能够满足分时租赁业务日益增长的业务要求,符合足大生态系统的发展趋势;
[0023] (2)基于不同用户角色应用场景下的服务器动态分配,实现了不同用户级别的应用服务自动分配功能,基于不同客户端应用场景下的服务器动态分配,实现不同客户端用户群的不同负载能力主机的自动动态分配功能,降低了代码复杂度并提高了系统性能。

附图说明

[0024] 图1为本发明实施例提供的一种用户URL请求的匹配方法流程示意图。

具体实施方式

[0025] 以下结合附图和具体实施例对本发明作具体的介绍。
[0026] 如图1所示,本发明实施例提供的用户URL请求的匹配方法包括以下步骤:
[0027] S101,利用lua脚本语言,编写用于列举可用服务器的配置列表,其中,配置列表包括各个应用服务器的内网IP地址、名称及初始权重。
[0028] 作为一个具体的实施例,该配置列表为基于openresty的主机负载列表,具体内容可包括:主机1、10.10.8.1、0.6;主机2、10.10.8.2、0.7;主机3、10.10.8.3、0.8;主机4、10.10.8.4、0.9。
[0029] S102,基于lua‑redis插件开启pipeline模式,分别从redis数据库中获取各个服务器的性能权重、各个用户的角色权重、各个客户端权重并生成主机性能权重列表、角色权重列表及客户端权重列表。
[0030] 作为一个具体的实施例,服务器的性能权重为主机可参与计算的性能比重,以主机群中最高性能配置权重值最大,其他主机比重值参照等值或递减。
[0031] S103,接收用户URL请求,将主机性能权重列表与配置列表匹配,确定与用户URL请求匹配的应用服务器的性能权重,包括:
[0032] S1031,利用lua‑nginx‑module插件,从用户URL请求中获取用户角色标识并根据角色权重列表,确定与所述用户角色标识匹配的权重值。
[0033] 作为一个具体的实施例,用户角色包括普通用户、VIP用户、企业用户,用于标识用户等级;角色权重值是作为限制用户使用API接口资源量的参数,可在某些会员活动日、企业用户活动日等场景下调整该比重,用于提升指定范围用户的体验。
[0034] S1032,利用lua‑nginx‑module插件,从用户URL请求中获取客户端标识并根据客户端权重列表,确定与客户端标识匹配的权重值。
[0035] 其中,客户端标识主要用于标识不同类型的客户端,例如安装了主营用车APP的客户端的标识为1、权重为1;安装了与该主营用车APP合作的用车APP的客户端的标识为2、权重为0.5。
[0036] S1033,利用加权平均算法,确定与用户URL请求匹配的应用服务器的性能权重。
[0037] 作为一个具体的实施例,如某个较核心业务的用户URL请求的初始权重是1,基于该用户URL请求的角色权重为0.8、客户端权重为0.9,则确定该用户URL请求的权重结果为:(1×0.8+1×0.9)/2=0.85,当配置列表包括:主机1、10.10.8.1、0.6;主机2、10.10.8.2、
0.7;主机3、10.10.8.3、0.8;主机4、10.10.8.4、0.9时,将该用户URL请求分配到主机4上来完成本次运算。
[0038] S1034,根据性能权重,从配置列表中获取与用户URL请求匹配的应用服务器并将该用户URL请求分配到该应用服务器上。
[0039] 可选地,性能权重列表包括:应用服务器的主机别名及应用服务器可参与计算的性能比重。
[0040] 可选地,角色权重列表包括:用户角色的标识及用户角色的权重值。
[0041] 可选地,客户端权重列表包括:客户端的标识及客户端的权重值。
[0042] 可选地,性能权重、角色权重及客户端权重的值均在0.1‑1之间。
[0043] 本发明实施例提供的用户URL请求的匹配方法,基于不同用户角色应用场景下的服务器动态分配,实现了不同用户级别的应用服务自动分配功能,基于不同客户端应用场景下的服务器动态分配,实现不同客户端用户群的不同负载能力主机的自动动态分配功能,降低了代码复杂度并提高了系统性能,基于百万日活用户及百万以下日订单的应用支撑级别下完成流量管控,具备一定的扩展能力,能够满足分时租赁业务日益增长的业务要求,符合足大生态系统的发展趋势。
[0044] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0045] 可以理解的是,上述方法及装置中的相关特征可以相互参考。
[0046] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0047] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0048] 此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
[0049] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0050] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0051] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0052] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0053] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0054] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
[0055] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0056] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0057] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0058] 以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
[0059] 需要说明的是,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。