一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据管理方法、装置、系统、存储介质及电子设备与流程

2022-06-05 05:23:51 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体涉及数据管理方法、数据管理装置、数据管理系统、存储介质及电子设备。


背景技术:

2.nginx(engine x)是近年来常用的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。
3.在使用nginx作为反向代理服务时,当被代理的服务节点发生伸缩或者请求路由发生变化,需要运维人员修改配置文件进行变更,然后再执行热重启使变更生效,在管控过程中通常需要借助专业运维人员、自动化运维工具以及复杂的配置管理辅助系统,同时全量配置文件变更和配置文件推送,以及热重启使配置生效对于一个高性能的流量转发服务来说都是笨重和高风险的。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开的目的在于提供一种数据管理方法、数据管理装置、数据管理系统、存储介质及电子设备,旨在解决反向代理服务的可视化、轻量化控制问题。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开实施例的一方面,提供了一种数据管理方法,包括:响应于控制元件的触发事件,提取所述控制元件对应的事件信息;基于所述事件信息生成控制指令,以及查询反向代理服务器的目标存储地址;将所述控制指令推送至所述反向代理服务器的目标存储地址,以使所述反向代理服务器将所述控制指令写入反向代理服务器缓存中。
8.根据本公开的一些实施例,基于前述方案,所述基于所述事件信息生成控制指令,包括:基于所述事件信息计算指令信息以生成所述控制指令;其中,所述指令信息包括指令系统版本、指令业务键、指令版本偏移量、指令动作以及指令体中的一种或多种。
9.根据本公开的一些实施例,基于前述方案,所述反向代理服务器是以分组的方式注册在反向代理服务中控中的,所述基于所述事件信息查询反向代理服务器的目标存储地址,包括:基于所述事件信息提取反向代理服务器分组标识;获取所述反向代理服务器分组标识对应的所有反向代理服务器的地址得到所述目标存储地址。
10.根据本公开的一些实施例,基于前述方案,在所述反向代理服务器分组标识对应多个反向代理服务器时,所述方法还包括:将所述控制指令并行推送至各所述目标存储地址,以获取各所述反向代理服务器的推送结果;在各所述反向代理服务器的推送结果中存在至少一个推送失败时,重试所述并行推送过程。
11.根据本公开的一些实施例,基于前述方案,所述方法还包括:配置事件信息;其中,所述事件信息包括资源路由变更事件和/或服务节点变更事件;为每一所述事件信息创建一对应的所述控制元件,以提取所述控制元件对应的事件信息。
12.根据本公开的一些实施例,基于前述方案,在配置事件信息之后,所述方法还包括:为每一所述事件信息分配一对应的事件编号,并为每一所述事件编号创建一对应的所述控制元件,以提取所述控制元件对应的事件编号,并获取所述事件编号对应的事件信息。
13.根据本公开实施例的第二方面,提供了一种数据管理方法,包括:接收反向代理服务中控发送的基于控制元件对应的事件信息生成的控制指令;将所述控制指令写入反向代理服务器缓存中。
14.根据本公开的一些实施例,基于前述方案,在将所述控制指令写入反向代理服务器缓存中之前,所述方法还包括:对所述控制指令进行校验;所述校验包括指令结构完整性、指令系统版本和指令版本偏移量合法性以及指令体必填中的一项或多项校验。
15.根据本公开的一些实施例,基于前述方案,服务节点是以分组的方式注册在所述反向代理服务器中的,所述方法还包括:在监听到数据请求时,确定所述数据请求对应的请求标识;从所述反向代理服务器缓存中查找与所述请求标识对应的所述控制指令;解析所述控制指令以获取服务节点分组标识,并获取所述服务节点分组标识对应的负载算法以及服务节点的地址列表;利用所述负载算法从所述地址列表中选择服务节点的目标转发地址,并将所述数据请求转发至所述服务节点的目标转发地址。
16.根据本公开的一些实施例,基于前述方案,在所述地址列表包括多个地址时,在利用所述负载算法从所述地址列表中选择目标转发地址之前,所述方法还包括:对所述地址列表中各地址对应的服务节点进行健康检测。
17.根据本公开实施例的第三方面,提供了一种数据管理装置,包括:响应模块,用于响应于控制元件的触发事件,提取所述控制元件对应的事件信息;准备模块,用于基于所述事件信息生成控制指令,以及查询反向代理服务器的目标存储地址;推送模块,用于将所述控制指令推送至所述反向代理服务器的目标存储地址,以使所述反向代理服务器将所述控制指令写入反向代理服务器缓存中。
18.根据本公开实施例的第四方面,提供了一种数据管理装置,包括:接收模块,用于接收反向代理服务中控发送的基于控制元件对应的事件信息生成的控制指令;缓存模块,用于将所述控制指令写入反向代理服务器缓存中。
19.根据本公开实施例的第五方面,提供了一种数据管理系统,包括:反向代理服务中控,用于响应于控制元件的触发事件,提取所述控制元件对应的事件信息,基于所述事件信息生成控制指令,以及查询反向代理服务器的目标存储地址,并将所述控制指令推送至所述反向代理服务器的目标存储地址;反向代理服务器,用于接收反向代理服务中控发送的控制指令,并将所述控制指令写入反向代理服务器缓存中。
20.根据本公开实施例的第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中的数据管理方法。
21.根据本公开实施例的第七方面,提供了一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中的数据管理方法。
22.本公开示例性实施例可以具有以下部分或全部有益效果:
23.在本公开的一些实施例所提供的技术方案中,通过触发控制元件来提取对应的事件信息,然后基于事件信息生成控制指令,同时查询反向代理服务器的目标存储地址,最后将控制指令推送至目标存储地址使得反向代理服务器将所述控制指令写入反向代理服务器缓存中。基于本公开提供的方法,一方面将可视化的控制元件绑定相应的事件信息,能够在控制元件触发时进行事件处理,能够实现事件信息的可视化管理控制,降低运维的复杂度和运维风险,提升使用体验;另一方面,基于事件信息生成控制指令,再通过控制指令进行数据传输,能够将事件信息指令化管理控制,便于写入反向代理服务器的数据缓存中,同时不需要借助配置管理辅助系统,减化管控交互,方便管控集成;再一方面,将事件信息对应的控制指令写入反向代理服务器的数据缓存中来更新数据,使得事件信息的传递不再依赖静态配置文件进行数据传递,而是通过共享缓存的方式提供实时数据,实现反向代理服务轻量化的数据管理。
24.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
25.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
26.图1示意性示出本公开示例性实施例中一种数据管理方法的流程示意图;
27.图2示意性示出本公开示例性实施例中一种数据管理系统的结构示意图;
28.图3示意性示出本公开示例性实施例中一种控制指令生成及推送方法的流程示意图;
29.图4示意性示出本公开示例性实施例中一种数据管理方法的流程示意图;
30.图5示意性示出本公开示例性实施例中一种数据请求转发方法的流程示意图;
31.图6示意性示出本公开示例性实施例中另一种数据请求转发方法的流程示意图;
32.图7示意性示出本公开示例性实施例中一种数据管理装置的组成示意图;
33.图8示意性示出本公开示例性实施例中另一种数据管理装置的组成示意图;
34.图9示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图;
35.图10示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
具体实施方式
36.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
37.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,
本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
38.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
39.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
40.现有技术中,传统的管控反向代理服务不能做到自动化和可视化,需要借助于专业运维人员进行配置修改和热重启;并且借助于自动化运维工具进行配置变更推送的方式,需要集成复杂的配置管理辅助系统,也引入了对配置辅助系统的运维工作;同时全量配置文件变更和配置文件推送,以及热重启使配置生效对于一个高性能的流量转发服务来说都是笨重和高风险的。
41.因此,针对现有技术的缺点,本技术提供一种数据管理方法,将变更的事件绑定在可视化的控制元件并进行指令化控制,还提供一个存储控制指令的反向代理服务器缓存作为反向代理服务器计算依赖的数据源,进而实现对反向代理服务进行可视化、轻量的管控。
42.以下对本公开实施例的技术方案的实现细节进行详细阐述。
43.图1示意性示出本公开示例性实施例中一种数据管理方法的流程示意图。如图1所示,该数据管理方法包括步骤s101至步骤s103:
44.步骤s101,响应于控制元件的触发事件,提取所述控制元件对应的事件信息;
45.步骤s102,基于所述事件信息生成控制指令,以及查询反向代理服务器的目标存储地址;
46.步骤s103,将所述控制指令推送至所述反向代理服务器的目标存储地址,以使所述反向代理服务器将所述控制指令写入反向代理服务器缓存中。
47.在本公开的一些实施例所提供的技术方案中,通过触发控制元件来提取对应的事件信息,然后基于事件信息生成控制指令,同时查询反向代理服务器的目标存储地址,最后将控制指令推送至目标存储地址使得反向代理服务器将所述控制指令写入反向代理服务器缓存中。基于本公开提供的方法,一方面将可视化的控制元件绑定相应的事件信息,能够在控制元件触发时进行事件处理,能够实现事件信息的可视化管理控制,降低运维的复杂度和运维风险,提升使用体验;另一方面,基于事件信息生成控制指令,再通过控制指令进行数据传输,能够将事件信息指令化管理控制,便于写入反向代理服务器的数据缓存中,同时不需要借助配置管理辅助系统,减化管控交互,方便管控集成;再一方面,将事件信息对应的控制指令写入反向代理服务器的数据缓存中来更新数据,使得事件信息的传递不再依赖静态配置文件进行数据传递,而是通过共享缓存的方式提供实时数据,实现反向代理服务轻量化的数据管理。
48.下面,将结合附图及实施例对本示例实施方式中的数据管理方法的各个步骤进行更详细的说明。
49.图2示意性示出本公开示例性实施例中一种数据管理系统的结构示意图。如图2所
示,本公开提供的数据管理方法可以由一个数据管理系统来实现,该数据管理系统集成了各个功能模块,包括反向代理服务中控21、反向代理服务器22以及服务节点23。反向代理服务中控21管理着多个反向代理服务器22,每一反向代理服务器22又管理着多个服务节点23。
50.其中,反向代理服务中控21中包括了可视化界面211以及指令管理器212;反向代理服务器22中包括了分组管理模块221、反向代理服务器数据缓存222以及指令处理器223,各功能模块的功能会在后续进行详细介绍。
51.反向代理服务中控用于在面数据变更时,通过对可视化界面211中控制元件的触发,经由指令管理器212将变更事件生成控制指令,并发送至对应的反向代理服务器22以存入反向代理服务数据缓存222中。
52.同时,反向代理服务器22也可以处理客户端发送的连接数据请求,并基于反向代理服务数据缓存222中的数据实现将数据请求转发至对应的服务节点23中。
53.需要说明的是,步骤s101至步骤s103可以在如图2所示的反向代理服务中控21中实现,反向代理服务中控21集成了可视化界面211和指令管理器212。
54.在步骤s101中,响应于控制元件的触发事件,提取所述控制元件对应的事件信息。
55.在本公开的一个实施例中,可视化界面可以用来提供控制元件,并且每一控制元件都绑定了一个对应的事件信息。
56.进一步地,所述方法还包括:配置事件信息;其中,所述事件信息包括资源路由变更事件和/或服务节点变更事件;为每一所述事件信息创建一对应的所述控制元件,以提取所述控制元件对应的事件信息。
57.其中,事件信息是指需要进行面数据变更的事件信息。当资源服务提供方提供的请求路由发生变化(资源路由变更事件)、服务部署环境发生ip或端口变化(服务节点变更事件)等情况下,都会伴随着更新控制面数据以保证变更能实时生效。当然根据实际情况,还可能存在反向代理服务控制面数据发生版本不同步等情况,也会进行面数据的更新,本公开在此不做具体限定。
58.创建的控制元件可以是可视化界面的按钮,例如服务节点变更事件可以对应创建节点增加按钮、节点删除按钮等。
59.在本公开的一个实施例中,所述方法还包括:为每一所述事件信息分配一对应的事件编号,并为每一所述事件编号创建一对应的所述控制元件,以提取所述控制元件对应的事件编号,并获取所述事件编号对应的事件信息。
60.具体地,为了减少信息传送的数据量,可以预先为所有的事件信息分配事件编号,当控制元件触发后,可视化界面只需要将带着少量的事件编号信息传递给指令管理器,指令管理器接收到事件编号后,根据事件编号与事件信息的映射关系同样也能获取到事件信息。
61.基于上述方法,通过在可视化的控制元件上绑定事件信息,在触发控制元件时就可以将事件信息传递给指令管理器进行可视化的管理控制,能够降低运维的复杂度和运维风险,提升使用体验。
62.在步骤s102中,基于所述事件信息生成控制指令,以及查询反向代理服务器的目标存储地址。
63.在本公开的一个实施例中,指令管理器一方面将接收的事件信息转换为控制指令以确定推送的内容,另一方面根据事件信息进行反向代理服务地址检索以确定推送的地址。
64.进一步地,所述所述基于所述事件信息生成控制指令,包括:基于所述事件信息计算指令信息以生成所述控制指令;其中,所述指令信息包括指令系统版本、指令业务键、指令版本偏移量、指令动作以及指令体中的一种或多种。
65.具体地,控制指令管理器根据事件信息能够自动地生成控制指令,控制指令结构包括指令系统版本、指令业务键、指令版本偏移量、指令动作以及指令体等内容。
66.其中,不同的事件信息对应的指令信息中的指令体也有所不同。举例来说,如果是资源路由变更事件,那么将生成路由控制指令,指令体中的元数据可以包括upstream分组标识(服务节点分组标识)、负载算法、代理服务ip、代理服务端口、ip权重等数据;如果是服务节点变更事件,将生成负载控制指令,那么指令体中的元数据可以包括uri资源标识以及upstream分组标识等。
67.需要说明的是,一次事件产生的可能是一条控制指令,也有可能是一批控制指令。这一过程可以由指令管理器中的指令构建器完成。
68.进一步地,所述反向代理服务器是以分组的方式注册在反向代理服务中控中的,所述基于所述事件信息查询反向代理服务器的目标存储地址,包括:基于所述事件信息提取反向代理服务器分组标识;获取所述反向代理服务器分组标识对应的所有反向代理服务器的地址得到所述目标存储地址。
69.具体地,反向代理服务器是以分组的方式注册到服务中控的指令管理器上的,即指令管理器管理着多组反向代理服务器,每一组反向代理服务器中包括一个或多个反向代理服务器。
70.事件信息中包含了反向代理服务器分组标识,因此指令管理器在接收到事件信息后,会根据事件信息中反向代理服务器分组标识来进行寻址,查询该反向代理服务器分组标识对应的分组内所有的反向代理服务器,得到一组有效的反向代理服务器的目标地址。
71.基于上述方法,将资源uri路由和节点负载变化事件转换成控制指令,控制指令传递的数据直接通过指令处理器写入反向代理服务数据缓存,能够对请求转发进行实时精准控制。
72.在步骤s103中,将所述控制指令推送至所述反向代理服务器的目标存储地址,以使所述反向代理服务器将所述控制指令写入反向代理服务器缓存中。
73.在本公开的一个实施例中,如果只确定了一个目标存储地址,那么指令管理器把生成的控制指令推送至该目标存储地址,同时反向代理服务器会返回一个推送结果,如果推送失败,会进行重试。
74.而在反向代理服务器分组标识对应多个反向代理服务器时,所述方法还包括:将所述控制指令并行推送至各所述目标存储地址,以获取各所述反向代理服务器的推送结果;在各所述反向代理服务器的推送结果中存在至少一个推送失败时,重试所述并行推送过程。
75.也就是说,向一组目标地址推送指令时是并行推送模式,任意一条指令向任意一个地址推送失败时,都会进行重试。
76.同时,还可以设定重试次数,例如3次,5次等,如果超过了预设的重试次数还未将所有控制指令推送至所有目标存储地址,就视为整体推送事件失败。
77.需要说明的是,反向代理服务器中配置有指令处理器,在指令推送时,指令管理器通过http协议和指令处理器进行同步交互。这一过程可以由指令管理器中的指令发射器完成。
78.基于上述方法,使得资源uri路由和节点负载不再依赖静态配置文件进行数据传递,而是通过共享缓存的方式为路由和负载控制逻辑提供实时数据。当共享缓存里的控制指令发生变化,会立即把变化传递给路由或负载的控制逻辑,实现动态化控制。
79.在本公开的一个实施例中,当接收到控制指令为负载指令时,还可以根据负载指令更新upstream分组中的地址列表,也就是更新该反向代理服务对应的负载服务节点。同时可以对新加入的节点进行主动健康检测管理,同时也会剔除缩减的节点并关闭对其的主动健康检测。
80.图3示意性示出本公开示例性实施例中一种控制指令生成及推送方法的流程示意图。如图3所示,该控制指令生成及推送方法包括以下步骤:
81.步骤s301,接收节点变更事件信息,然后执行步骤s302,根据节点变更事件信息生成负载指令;或者是步骤s303,接收路由变更事件信息,然后执行步骤s304,根据路由变更事件信息生成路由指令。
82.在生成负载指令或路由指令的控制指令之后,执行步骤s305,查找nginx集群节点,也就是确定反向代理服务器的目标存储地址。
83.步骤s306,判断nginx指令是否推送成功,如果是,则为步骤s307推送成功;如果否,则需要指令推送重试,假设重试次数预设为3次,执行步骤s308,判断重试次数是否超过3次,如果超过,则为步骤s309推送失败;如果未超过,则继续执行步骤s306进行重试。
84.在本公开的一个实施例中,控制指令管理器还可以包括反向代理服务节点发现模块,该模块可以用于实时检测反向代理服务中节点的内容,能够在节点增加、删除或变更时及时发现以更新面数据。
85.图4示意性示出本公开示例性实施例中一种数据管理方法的流程示意图。如图4所示,该数据管理方法包括步骤s401至步骤s402:
86.步骤s401,接收反向代理服务中控发送的基于控制元件对应的事件信息生成的控制指令;
87.步骤s402,将所述控制指令写入反向代理服务器缓存中。
88.需要说明的是,步骤s401至步骤s402可以在如图2所示的反向代理服务器22中实现。
89.具体地,反向代理服务中控中的指令管理器会将根据事件信息生成的控制指令发送至反向代理服务器。反向代理服务器中配置有指令处理器(例如cache_manager.lua、cache_init.lua),用于对控制指令对应的面数据进行读写管理,即利用指令处理器将控制指令写入反向代理服务器缓存中。
90.其中,指令处理器可以是基于nginx底座构建的具备独立端口的web服务,nginx底座安装了lua(是一种轻量小巧的脚本语言,用标准c语言编写并以源代码形式开放)模块的nginx,或者是openresty(用于给常见linux发布提供官方预编译安装包)的稳定版本。
91.需要说明的是,反向代理服务器可以采用多级缓存(mlcache.lua)的方式进行缓存。多级缓存整体分成三部分缓存:应用nginx本地缓存、分布式缓存、tomcat堆缓存,每层都用来解决相关问题,第一层解决热点缓存的问题,第二层减少访问回源率,第三层防止相关缓存失效/崩溃之后的冲击。
92.反向代理服务器以压缩包的方式存在,解压后执行安装脚本(./bin/start.sh)即可完成安装并自动启动服务。反向代理服务的启动,会挂载控制服务节点的配置,端口监听和反向代理服务中控同时也会启动并提供服务。
93.反向代理控制服务卸载停机时可以通过修改nginx.cnf文件,解除控制服务配置(nginx.cfg)挂载,然后执行热重启就可以完全停止控制服务。
94.将控制指令写入反向代理服务器缓存之后,就实现了控制面数据更新的过程。在控制面数据初始化阶段,可以选择从备份文件恢复,或者由反向代理服务中控进行全量推送。从备份文件恢复是指可以依赖本地备份文件(全量指令集)进行初始化。本地恢复的条件是指定目录下的备份文件存在,并且是没有被破坏的;而由反向代理服务中控进行全量推送是指当本地备份文件被破坏或者版本过时,可以借助指令中控对nginx集群进行指令全量推送,保证控制面数据的完整性。
95.在本公开的一个实施例中,在将所述控制指令写入反向代理服务器缓存中之前,所述方法还包括:对所述控制指令进行校验;所述校验包括指令结构完整性、指令系统版本和指令版本偏移量合法性以及指令体必填中的一项或多项校验。
96.具体地,当指令处理器在接收到控制指令后,可以对控制指令进行校验以确保控制指令能写入成功,在校验通过后,再将控制指令写入缓存中。校验的内容可以是校验指令结构是否完整性,指令系统版本和指令版本偏移量是否合法,指令体是否填写等项目。
97.图5示意性示出本公开示例性实施例中一种数据请求转发方法的流程示意图。参考图5所示,该数据请求转发方法包括以下步骤:
98.步骤s501,在监听到数据请求时,确定所述数据请求对应的请求标识;
99.步骤s502,从所述反向代理服务器缓存中查找与所述请求标识对应的所述控制指令;
100.步骤s503,解析所述控制指令以获取服务节点分组标识,并获取所述服务节点分组标识对应的负载算法以及服务节点的地址列表;
101.步骤s504,利用所述负载算法从所述地址列表中选择服务节点的目标转发地址,并将所述数据请求转发至所述服务节点的目标转发地址。
102.具体而言,反向代理服务器能够实现反向代理(reverse proxy)功能,也就是接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。而步骤s501至步骤s504介绍的是反向代理服务器进行请求转发的过程。
103.在步骤s501中,反向代理服务器可以利用进程事件监听器(event.lua)对数据请求进行监听,然后计算该数据请求对应的请求标识。比如数据请求是http请求,会根据获取到请求的方式和请求路径计算出唯一的请求标识,也就是uri资源识别(api_identify_handler.lua)。
104.在步骤s502中,由于反向代理服务器缓存中的控制面数据已经实时更新过,所以
可以根据这个唯一的请求标识从缓存汇总匹配查找对应的控制指令。
105.在步骤s503中,对查找的控制指令进行解析得到指令体,指令体中包含有upstream分组标识,然后根据upstream分组标识获得该分组下所采用的负载算法以及服务节点的地址列表。
106.其中,纳入反向代理管理的服务节点,在物理部署架构上会以集群的形式保证高可用,一个集群的所有主机地址就是一个upstream分组。负载均衡器就是通过负载均衡算法,从这样的一个分组中选中一个主机地址,把请求转发到这个目标地址上。
107.需要说明的时,如果数据请求是tcp协议的请求,则不会有请求识别的过程,直接在指定的监听端口绑定upstream分组标识,所有通过该端口进入的tcp请求,都直接找到对应的upstream分组后进行负载处理。
108.在步骤s504中,利用动态负载管理器(dynamic_balancer.lua)采用负载算法从upstream分组中对应的所有服务节点中选择最合适的可用服务节点,获得目标转发地址,然后将数据请求向负载均衡选中的目标转发地址进行请求转发。
109.在本公开的一个实施例中,在所述地址列表包括多个地址时,在利用所述负载算法从所述地址列表中选择目标转发地址之前,所述方法还包括:对所述地址列表中各地址对应的服务节点进行健康检测。
110.具体地,可以对地址列表中所有地址对应的服务节点进行心跳检测(healthcheck.lua),例如检测结果为健康或者亚健康等状态,在进行负载选择之前,可以根据健康检查的结果进行分析和筛选,例如将亚健康的服务节点剔除。
111.在本公开的一个实施例中,反向代理控制服务器的底座是安装了lua模块的nginx,或者是openresty的稳定版本。反向代理控制服务器所依赖的核心扩展库可以包括:多级缓存(mlcache.lua)、心跳检测(healthcheck.lua)、进程事件监听器(event.lua)。核心应用组件可以包括:动态负载管理器(dynamic_balancer.lua)、控制指令处理器(cache_manager.lua、cache_init.lua)、uri资源识别(api_identify_handler.lua)、反向代理扩展配置文件(nginx.cfg)等。
112.图6示意性示出本公开示例性实施例中另一种数据请求转发方法的流程示意图。如图6所示,该数据请求转发方法包括以下步骤:
113.步骤s601,数据请求到达;在本实施例中到达的数据请求是http请求;
114.步骤s602,uri识别;即识别数据请求的uri请求标识;
115.步骤s603,是否查找到uri路由表;即从反向代理服务缓存中根据uri唯一标识查找upstream分组的过程,如果未查到upstream分组,那么执行步骤s604,即返回转发失败的结果,而如果查到了upstream分组,呢么可以执行s605;
116.步骤s605,根据upstream分组获取负载节点列表和负载算法;其中负载节点也就是该反向代理服务对应的服务节点;
117.步骤s606,基于负载算法进行计算并选出被代理的节点,也就是根据负载均衡选择一个最优的服务节点,获取该服务节点的地址;
118.步骤s607,将数据请求转发至该服务节点的地址完成请求转发。
119.图7示意性示出本公开示例性实施例中一种数据管理装置的组成示意图,如图7所示,该数据管理装置700可以包括响应模块701、准备模块702以及推送模块703。其中:
120.响应模块701,用于响应于控制元件的触发事件,提取所述控制元件对应的事件信息;
121.准备模块702,用于基于所述事件信息生成控制指令,以及查询反向代理服务器的目标存储地址;
122.推送模块703,用于将所述控制指令推送至所述反向代理服务器的目标存储地址,以使所述反向代理服务器将所述控制指令写入反向代理服务器缓存中。
123.根据本公开的示例性实施例,所述准备模块702用于基于所述事件信息计算指令信息以生成所述控制指令;其中,所述指令信息包括指令系统版本、指令业务键、指令版本偏移量、指令动作以及指令体中的一种或多种。
124.根据本公开的示例性实施例,所述反向代理服务器是以分组的方式注册在反向代理服务中控中的,所述准备模块702用于基于所述事件信息提取反向代理服务器分组标识;获取所述反向代理服务器分组标识对应的所有反向代理服务器的地址得到所述目标存储地址。
125.根据本公开的示例性实施例,所述推送模块703还用于在所述反向代理服务器分组标识对应多个反向代理服务器时,将所述控制指令并行推送至各所述目标存储地址,以获取各所述反向代理服务器的推送结果;在各所述反向代理服务器的推送结果中存在至少一个推送失败时,重试所述并行推送过程。
126.根据本公开的示例性实施例,所述数据管理装置700还包括配置模块,所述配置模块用于配置事件信息;其中,所述事件信息包括资源路由变更事件和/或服务节点变更事件;为每一所述事件信息创建一对应的所述控制元件,以提取所述控制元件对应的事件信息。
127.根据本公开的示例性实施例,所述配置模块还用于为每一所述事件信息分配一对应的事件编号,并为每一所述事件编号创建一对应的所述控制元件,以提取所述控制元件对应的事件编号,并获取所述事件编号对应的事件信息。
128.上述的数据管理装置700中各模块的具体细节已经在对应的数据管理方法中进行了详细的描述,因此此处不再赘述。
129.图8示意性示出本公开示例性实施例中另一种数据管理装置的组成示意图,如图8所示,该数据管理装置800可以包括接收模块801以及缓存模块802。其中:
130.接收模块801,用于接收反向代理服务中控发送的基于控制元件对应的事件信息生成的控制指令;
131.缓存模块802,用于将所述控制指令写入反向代理服务器缓存中。
132.根据本公开的示例性实施例,所述数据管理装置800还包括校验模块,所述校验模块用于在将所述控制指令写入反向代理服务器缓存中之前,所述控制指令进行校验;所述校验包括指令结构完整性、指令系统版本和指令版本偏移量合法性以及指令体必填中的一项或多项校验。
133.根据本公开的示例性实施例,服务节点是以分组的方式注册在所述反向代理服务器中的,所述数据管理装置800还包括请求转发模块,所述请求转发模块用于在监听到数据请求时,确定所述数据请求对应的请求标识;从所述反向代理服务器缓存中查找与所述请求标识对应的所述控制指令;解析所述控制指令以获取服务节点分组标识,并获取所述服
务节点分组标识对应的负载算法以及服务节点的地址列表;利用所述负载算法从所述地址列表中选择服务节点的目标转发地址,并将所述数据请求转发至所述服务节点的目标转发地址。
134.根据本公开的示例性实施例,所述请求转发模块还用于在所述地址列表包括多个地址时,对所述地址列表中各地址对应的服务节点进行健康检测。
135.上述的数据管理装置800中各模块的具体细节已经在对应的数据管理方法中进行了详细的描述,因此此处不再赘述。
136.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
137.参考图2所示,本公开还提供了一种数据管理系统,包括:反向代理服务中控,用于响应于控制元件的触发事件,提取所述控制元件对应的事件信息,基于所述事件信息生成控制指令,以及查询反向代理服务器的目标存储地址,并将所述控制指令推送至所述反向代理服务器的目标存储地址;反向代理服务器,用于接收反向代理服务中控发送的控制指令,并将所述控制指令写入反向代理服务器缓存中。
138.在本公开的示例性实施例中,还提供了一种能够实现上述方法的存储介质。图9示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图,如图9所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品900,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如手机上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
139.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。图10示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
140.需要说明的是,图10示出的电子设备的计算机系统1000仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
141.如图10所示,计算机系统1000包括中央处理单元(central processing unit,cpu)1001,其可以根据存储在只读存储器(read-only memory,rom)1002中的程序或者从存储部分1008加载到随机访问存储器(random access memory,ram)1003中的程序而执行各种适当的动作和处理。在ram 1003中,还存储有系统操作所需的各种程序和数据。cpu 1001、rom 1002以及ram 1003通过总线1004彼此相连。输入/输出(input/output,i/o)接口1005也连接至总线1004。
142.以下部件连接至i/o接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
143.特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本公开的系统中限定的各种功能。
144.需要说明的是,本公开实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
145.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
146.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
147.作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
148.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单
元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
149.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
150.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
151.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献