一种流量分发方法、系统、计算机设备及存储介质与流程

文档序号:29796748发布日期:2022-04-23 19:01阅读:98来源:国知局
一种流量分发方法、系统、计算机设备及存储介质与流程

1.本发明涉及计算机网络通信领域,特别涉及一种流量分发方法、系统、计算机设备及存储介质。


背景技术:

2.相关技术中,对于一个多租户saas系统应用,随着互联网的发展,用户迅速增长和业务的快速发展,系统访问量的直线增长,使系统负载压力越来越大,对软件服务供应商带来严峻的考验。当前常用的是使用nginx进行负载均衡,将请求分发给内部服务器集群。nginx默认使用负载均衡策略是加权轮询。加权轮询算法是在轮询算法的基础上,根据服务器的不同处理能力,给每个服务器分配不同的权重值,使其能够接受相应权重数的服务请求。目前的分发方法虽实现了均衡负载,但存在租户数据安全性的问题。


技术实现要素:

3.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种流量分发方法、系统、计算机设备及存储介质,能够提高用户数据安全性。
4.根据本发明的第一方面实施例的流量分发方法,应用于saas系统,所述saas系统中包括nginx网关、至少一个组织和至少一个指定分区,每个指定分区下分配有至少一个组织,所述组织包括至少一个用户,所述方法包括:
5.接收用户发送的请求,确定用户请求对应的用户所属的组织;
6.将所述用户请求发送到所述组织所属的指定分区中处理。
7.根据本发明实施例的流量分发方法,至少具有如下有益效果:根据用户请求确定所属组织,根据组织不同将流量分配到不同的指定分区,实现对不同用户的应用逻辑隔离,提高用户的数据安全性。
8.根据本发明的一些实施例,所述将所述用户请求发送到所述组织所属的指定分区中处理,包括:
9.根据所述组织确定用户组织编码;根据所述用户组织编码确定与所述用户组织编码对应的指定分区地址;
10.基于所述指定分区地址将所述用户请求发送至所述指定分区中处理。
11.根据本发明的一些实施例,所述根据所述用户组织编码确定与所述用户组织编码对应的指定分区地址,包括:
12.根据所述用户组织编码确定与所述用户组织编码对应的分区编码;
13.根据所述分区编码确定与所述分区编码对应的指定分区地址。
14.根据本发明的一些实施例,所述根据所述用户组织编码确定与所述用户组织编码对应的指定分区地址,包括:
15.根据所述用户组织编码从第一预设地址映射表中获取对应的指定分区地址。
16.根据本发明的一些实施例,所述用户组织编码通过以下步骤得到,包括:
17.获取用户注册名称,根据所述用户注册名称确定所述用户组织编码。
18.根据本发明的一些实施例,所述根据所述分区编码确定与所述分区编码对应的指定分区地址,包括:
19.根据所述分区编码从第二预设地址映射表中获取对应的指定分区地址。
20.根据本发明的一些实施例,所述用户组织编码还通过以下步骤得到,包括:
21.获取用户网络地址,根据所述用户网络地址确定所述用户组织编码。
22.根据本发明的第二方面实施例的一种saas系统,包括nginx网关、至少一个组织和至少一个指定分区,每个指定分区下分配有至少一个组织,所述组织包括至少一个用户;
23.所述nginx网关接收用户发送的请求,确定用户请求对应的用户所属的组织;
24.所述nginx网关将所述用户请求发送到所述组织所属的指定分区中处理。
25.根据本发明的第三方面实施例的一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明的第一方面实施例中任一项所述的方法。
26.根据本发明的第四方面实施例的一种存储介质,所述存储介质为计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如本发明的第一方面实施例中任一项所述的方法。
27.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
28.下面结合附图和实施例对本发明做进一步的说明,其中:
29.图1为本发明一个实施例提供的用于执行流量分发方法的系统架构的示意图;
30.图2为本发明一个实施例提供的流量分发方法的流程图;
31.图3为本发明另一个实施例提供的流量分发方法的流程图;
32.图4为本发明另一个实施例提供的流量分发方法的流程图;
33.图5为本发明示例一提供的流量分发方法的流程图;
34.图6为本发明示例二提供的流量分发方法的流程图。
具体实施方式
35.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
36.在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
37.在本发明的描述中,若干的含义是一个以上,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的
技术特征的数量或者隐含指明所指示的技术特征的先后关系。
38.本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
39.本发明的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
40.首先,对本发明中涉及的若干名词进行解析:
41.saas系统(software-as-a-service):意思为软件即服务,即通过网络提供软件服务。saas平台供应商将应用软件统一部署在自己的服务器上,用户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得saas平台供应商提供的服务。
42.nginx:一种高性能的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。
43.lua:是一个简洁、轻量、可扩展的脚本语言,也是号称性能最高的脚本语言。
44.当前,nginx通用的负载均衡需要先在nginx配置文件中设定好服务器信息,轮询的服务器列表写在http中的upstream对象里,集群服务器的增加与减少都需要手动更新nginx的配置文件,既麻烦且容易出错。同时对于将一组相同特征的流量请求调度到指定服务器还没有解决方案。且用户之间未进行隔离,导致用户数据不经意或被他人恶意地获取和篡改。
45.基于此,本发明实施例提供一种流量分发方法、系统、计算机设备及存储介质,根据请求特征将流量分配到不同的服务器,实现对不同用户的应用逻辑隔离,提高用户的数据安全性。
46.本发明实施例提供的技术方案与已有的大多数的流量调度系统不同,大多数系统基于流量黑白名单、百分比等负载均衡策略调度。本方案通过分区策略负载均衡,把相同组织的流量调度到同一组服务器上,实现对不同组织的应用逻辑隔离,缓解了现有技术中的流量负载均衡方法均衡策略单一的技术问题。本方案基于nginx和lua脚本实现,原理简单,没有侵入业务代码,与业务开发人员无关,用户无感知。负载均衡调度策略通过lua处理,集群服务器上线、下线过程全自动化,无须修改nginx配置,减少人为操作出错事故。
47.下面结合附图,对本发明实施例作进一步阐述。
48.如图1所示,图1是本发明一个实施例提供的用于执行流量分发方法的系统架构的示意图。在图1的示例中,该系统架构包括至少一个组织110、nginx网关120和至少一个指定分区130。需要说明的是,每个指定分区下分配有至少一个组织,组织包括至少一个用户。
49.本领域技术人员可以理解,图1中示出的装置结构并不构成对系统架构的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
50.基于上述系统架构的硬件结构,提出本发明的各个实施例。
51.如图2所示,图2是本发明一个实施例提供的流量分发方法的流程图。本发明实施例的流量分发方法,包括但不限于有步骤s110、步骤s120。
52.步骤s110,接收用户发送的请求,确定用户请求对应的用户所属的组织;
53.步骤s120,将用户请求发送到组织所属的指定分区中处理。
54.具体地,把用户映射为一个组织,同一用户的数据、资源都从属于一个组织,nginx网关将用户请求发送到组织所属的指定分区中处理。通过将所有访问中同一组织的请求转发到其专属的分区系统上去,实现不同组织之间的数据、资源完全隔离、互不影响,有效提升用户数据的安全性。
55.参照图3,步骤s120具体可以通过以下步骤实现:
56.步骤s210,根据组织确定用户组织编码;
57.步骤s220,根据用户组织编码确定与用户组织编码对应的指定分区地址;
58.步骤s230,基于指定分区地址将用户请求发送至指定分区中处理。
59.具体地,每个组织在注册之初就为其生成一个指定的组织编码,并分配一个指定分区。nginx网关可以根据用户组织编码确定对应的指定分区地址,基于指定分区地址将用户请求发送至指定分区中处理。
60.需要说明的是,组织是指一个企业、团体等。
61.可以理解的是,在用户注册后,可以根据用户注册名称确定用户组织编码。还可以根据用户网络地址确定用户组织编码。
62.参照图4,步骤s220具体可以通过以下步骤实现:
63.步骤s310,根据用户组织编码确定与用户组织编码对应的分区编码;
64.步骤s320,根据分区编码确定与分区编码对应的指定分区地址。
65.具体地,nginx网关访问用户组织编码与分区编码的对应关系,可通过用户组织编码查找到分区编码,进而根据分区编码找到指定分区。
66.需要说明的是,该对应关系可存储在nginx本地中,也可以存储在任意可被访问的地方,如数据库。
67.具体地,nginx网关根据分区编码从第二预设地址映射表中获取对应的指定分区地址。
68.可以理解的是,nginx网关根据用户组织编码从第一预设地址映射表中获取对应的指定分区地址。
69.第一预设地址映射表、第二预设地址映射表可以存储在任意可被访问的地方,如数据库。
70.下面通过二个实际示例来说明本发明的流量分发方法。
71.示例一,参照图5,该方法包括:
72.1.nginx接收所有用户请求:
73.(1)监听域名:
74.server_name h3yun.com;
75.(2)关联后端应用:
76.set$backend www.h3yun.com;
77.rewrite_by_lua_file loadbalance.lua;
78.proxy_pass http://$backend;
79.2.请求身份识别:
80.lua脚本从用户请求中解析出当前请求用户的组织编码enginecode;
81.3.查找指定分区ip:
82.根据组织编码enginecode,查找组织的指定分区ip。
83.4.请求转发:
84.nginx把请求转发到用户组织所属指定分区上。
85.示例二,参照图6,该方法包括:
86.nginx接收用户请求;
87.lua脚本解析用户请求得到当前用户组织编码:
88.enginecode=ngx.var.cookie_enginecode or ngx.var.get_uri_args()[“enginecode”];
[0089]
根据eginecode得到组织所在分区编码:
[0090]
shardkey=ngx.shared._ups_zone:get(enginecode);
[0091]
最终,lua脚本通过http请求访问地址映射表获取指定分区ip:
[0092]
webip=http:request_uri(“/getwebipbyshardkey”,{method=“get”});
[0093]
然后lua设置nginx变量:ngx.var.backend=webip;
[0094]
nginx把用户请求转发到该组织所属的指定分区上。
[0095]
本发明的一个实施例提供了一种saas系统,该系统包括nginx网关、至少一个组织和至少一个指定分区,每个指定分区下分配有至少一个组织,组织包括至少一个用户;
[0096]
nginx网关接收用户发送的请求,确定用户请求对应的用户所属的组织;
[0097]
nginx网关将用户请求发送到组织所属的指定分区中处理。
[0098]
本发明实施例提供的saas系统,根据用户请求所属的组织将流量分配到不同的指定分区,实现对不同用户的应用逻辑隔离,提高用户的数据安全性。
[0099]
其中,一种saas系统的具体执行步骤参照上述一种流量分发方法,此处不再赘述。
[0100]
本发明实施例还提供了一种计算机设备,包括:至少一个处理器,以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述任一项方法实施例中的方法。
[0101]
此外,本发明的一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个控制处理器执行,一个或多个控制处理器执行上述方法实施例中的方法,例如,执行以上描述的图2中的方法步骤s110至s120、图3中的方法步骤s210至s230、图4中的方法步骤s310至s320。
[0102]
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络节点上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0103]
本发明的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖
不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0104]
应当理解,在本发明中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0105]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0106]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0107]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0108]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序的介质。
[0109]
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。此外,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1