CN114138419B - 一种基于Openresty的跨类型服务间数据共享方法及系统 - Google Patents

一种基于Openresty的跨类型服务间数据共享方法及系统 Download PDF

Info

Publication number
CN114138419B
CN114138419B CN202111483657.4A CN202111483657A CN114138419B CN 114138419 B CN114138419 B CN 114138419B CN 202111483657 A CN202111483657 A CN 202111483657A CN 114138419 B CN114138419 B CN 114138419B
Authority
CN
China
Prior art keywords
module
shared dictionary
global shared
management module
dictionary management
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111483657.4A
Other languages
English (en)
Other versions
CN114138419A (zh
Inventor
刘德贵
罗鑫
朱亚涛
马丽娜
王达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongke Flux Technology Co ltd
Original Assignee
Beijing Ruixin High Throughput Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Ruixin High Throughput Technology Co ltd filed Critical Beijing Ruixin High Throughput Technology Co ltd
Priority to CN202111483657.4A priority Critical patent/CN114138419B/zh
Publication of CN114138419A publication Critical patent/CN114138419A/zh
Application granted granted Critical
Publication of CN114138419B publication Critical patent/CN114138419B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请是一种基于Openresty的跨类型服务间数据共享方法及系统,该方法包括如下步骤:步骤S1:增加新的全局共享字典管理模块,进入全局共享字典管理入口,开启全局自己管理流程;步骤S2:系统配置文件nginx.conf是否配置全局共享字典?如果“是”,进入步骤S3,如果“否”进行步骤S5;步骤S3:是否已初始化全局共享字典?如果“是”,进入步骤S5,如果“否”进入步骤S4;步骤S4:创建全局共享字典;步骤S5:离开全局共享字典管理模块。本发明的方法可以使已开发完成的Web服务和Socket服务功能不会受影响;无需再开发或者部署任何第三方服务。

Description

一种基于Openresty的跨类型服务间数据共享方法及系统
技术领域
本发明涉及数据共享技术领域,特别涉及一种基于Openresty的跨类型服务间数据共享方法及系统。
背景技术
Nginx同Apache、Tomcat一样,是一种开源的高性能服务器软件。
OpenResty是一个基于Nginx与Lua的高性能平台,其内部集成了大量精良的Lua库、第三方模块,从而将Nginx有效地变成一个强大的通用应用平台。这样,Web开发人员可以使用Lua脚本语言调动Nginx支持的各种C以Lua模块,快速构造出高性能应用系统。
现有的Openresty的http模块和Stream模块分别是为系统提供Web服务(包含http和WebSocket服务)和Socket服务(包含tcp和udp服务),它们分别工作在网络层的应用层和传输层。
现有的Openresty的ngx.shared.dict模块提供了同类型Nginx进程间数据共享的方法,同类型指的是所有Web服务进程间可共享数据,而不能与Socket服务进程间共享数据。
发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息;Redis是高性能的非关系型数据库,支持发布订阅模式;Openresty存在与Redis数据库通信的开源模块。
因业务衍变的需要,有时出现Web服务和Socket服务共享数据的需求,此时,现有的Openresty系统已不能满足该需求。
目前有如下两种迂回的方法:
如图1所示,为方法一的实施方式,使用C++/Java/C#等语高级言实现支持数据共享的Web服务和Socket客户端,分别与基于Openresty实现的Web服务和Socket服务通信。
但是现有方法一存在如下缺点:需要使用其它语言额外开发Web服务和Socket服务,增加开发、调试和运营成本;为实现数据在共享内存中共享,需要使用C++/Java/C#等高级语言;图1中的(1)和(2)中任何一个链路出现问题,都可能会导致整个系统发出错误,增加不稳定性;增加CPU消耗、增加系统响应时间。
如图2所示,为现有基于Redis数据库的发布订阅模式特性设计的方法二。基于Openresty的Http模块实现的Web服务和基于Openresty的Stream模块实现的Socket服务分别发布数据给Redis数据库,并订阅所需类型数据。Redis作为两种类型服务的中介传递数据给相应服务。
现有方法二存在如下缺点:增加CPU消耗、增加系统响应时间;如果Re dis数据库服务宕机,会导致整个系统发出错误,增加不稳定性;由于Redis数据库有特定的数据存取格式,两种类型服务必须转换数据格式,增加转换开销。
发明内容
本发明的主要目的是在现有Openresty系统的基础上,发明为基于Openr esty的Http模块实现的Web服务和基于Openresty的Stream模块实现的Socket服务提供的数据共享方法及系统,该方法不依赖于任何Openresty系统以外的服务或模块。
为了达到上述目的,本发明提供一种基于Openresty的跨类型服务间数据共享方法,包括如下步骤:
步骤S1:增加新的全局共享字典管理模块,进入全局共享字典管理入口,开启全局自己管理流程;
步骤S2:系统配置文件nginx.conf是否配置全局共享字典?如果“是,”进入步骤S3,如果“否”进行步骤S5;
步骤S3:是否已初始化全局共享字典?如果“是,”进入步骤S5,如果“否”进入步骤S4;
步骤S4:创建全局共享字典;
步骤S5:离开全局共享字典管理模块。
优选地,还包括:将所述全局共享字典管理模块注册成Nginx core模块。
优选地,还包括:删除现有Http模块和Stream模块中的共享字典管理模块代码。
优选地,所述全局共享字典管理模块将包括:全局共享字典管理模块、复制模块以及替换模块。
优选地,基于现有Http模块来设计全局共享字典管理模块。
优选地,现有Http模块的共享字典访问API将被所述全局共享字典管理模块所继承。
优选地,在所述全局共享字典管理模块中设计入口处理。
为了达到上述目的,本发明还提供一种基于Openresty的跨类型服务间数据共享系统,包括:
增加单元,其增加新的全局共享字典管理模块;
配置单元,其将系统配置文件nginx.conf配置全局共享字典;
初始化单元,其初始化全局共享字典;
创建单元,其创建全局共享字典;以及
离开单元,其离开所述全局共享字典管理模块。
为了达到上述目的,本发明还提供一种电子设备,所述电子设备存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。
为了达到上述目的,本发明还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
发明的效果
与现有技术相比,本发明的有益效果在于:
本发明的基于Openresty的跨类型服务间数据共享方法使得用户:
1、使用现有Openresty系统支持的API存取共享字典中的数据,而数据无需在网络中传输;
2、已开发完成的Web服务和Socket服务功能不会受影响;
3、无需再开发或者部署任何第三方服务;
4、可只使用Openresty系统支持的Lua脚本开发功能。
附图说明
图1是现有方法一的实现数据共享方法的示意图。
图2是现有方法二的实现数据共享方法的示意图。
图3是现有Openresty系统已经支持的,基于Http模块实现的Web服务进程间共享字典和基于Stream模块实现的Socket服务进程间共享字典的示意图。
图4是现有Openresty系统初始化主要阶段示意图。
图5是现有Openresty系统初始化Web服务进程间共享字典和Socket服务进程间共享字典的流程图。
图6是本发明基于现有Openresty系统实现的全局共享字典模块的初始化流程图,支持Web服务进程和Socket服务进程数据共享。
图7是基于本发明Web服务进程和Socket服务进程数据共享的示意图。
图8是本发明的一种基于Openresty的跨类型服务间数据共享方法。
图9是本发明一种基于Openresty的跨类型服务间数据共享系统。
图10是本申请实施例提供的一种电子设备的结构示意图。
图11是本申请实施例提供的一种用于实现容量增量升级方法的程序产品的结构示意图。
具体实施方式
下面将结合本发明实施例中的图,对本发明实施例中的技术方法进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。并且,在此处需要进一步强调的是,以下的具体实施例提供的优选的技术方法,各方法(实施例)之间是可以相互配合或结合使用的。
首先,对现有共享字典使用进行概述:
现有Openresty系统提供了共享字典,用于同类型进程间数据共享,它是基于内置在Openresty系统中的Lua虚拟机实现的,即共享数据存储在Lua虚拟机中;同时现有Openresty系统也提供了共享字典的操作API(ngx.shared.DIC T)。如图3所示的同一类型进程间可共享数据,使用需在nginx.conf做如下配置:
Figure BDA0003396533240000051
如上配置指的是分别在Openresty的Http模块和Stream模块创建10m大小的共享字典A和B;如图3所示,A、B互相独立,A只服务于所有基于Http模块实现的Web服务进程,B只服务于所有基于Stream模块实现的Socket服务进程。
其次,进行现有Openresty初始化流程;
现有Openresty系统的Nginx进程初始化可分为如图4的几个阶段,即包括有:
(1)初始化阶段,根据进程类型不同,分别执行不同的初始化流程;
(2)转发/重定向逻辑阶段;
(3)内容处理阶段;
(4)日志处理阶段;
其中,(1)初始化阶段是本发明关注重点,包括:
1、根据进程类型不同,加载系统配置文件nginx.conf中的对应配置,加载Lua虚拟机环境;基于Http模块实现的Web服务进程进入ngx_http_lua_init_by_lua入口,基于Stream模块实现的Socket服务进程进入ngx_stream_lua_init_by_lua入口;
2、若在nginx.conf中配置了共享字典lua_shared_dict,则分别创建并初始化Web服务进程的共享字典和Socket服务进程的共享字典。
然后,如图5所示,进行现有Openresty系统初始化流程,该初始化流程包括以下步骤:
解析并加载Openresty系统配置文件nginx.conf;
根据nginx.conf中配置初始化不同类型Nginx进程;
根据类型,进入不同模块的入口。如果是Web服务进程进入Http初始化流程,如果是Socket服务进程进入Stream初始化流程;
当进入Http初始化流程时,判断是否已初始化共享字典,如果“是,”继续执行其它初始化操作,直至初始化完成,如果“否,”创建Web服务进程共享字典,然后继续执行其它初始化操作,直至初始化完成。
当进入Stream初始化流程时,判断是否已初始化共享字典,如果“是,”继续执行其它初始化操作,直至初始化完成,如果“否,”创建Socket服务进程共享字典,然后继续执行其它初始化操作,直至初始化完成。
对图5的流程进行解析如下:
1、当创建基于Http模块实现的Web服务进程时,如果nginx.conf中配置l ua_shared_dict,则:
1)检查共享字典是否已判断;
2)如果未创建,则创建共享字典;
3)如果已创建,则跳过创建流程,此时该Web服务进程已可以访问共享字典;
2、基于Stream模块实现创建Socket服务进程流程类似;
3、从图5可以看出,Web服务进程和Socket服务进程有不同的的共享字典,所有的Web服务进程数据和所有的Socket服务进程数据不可互通;因而,需要设计一个全局的共享字典模块,使得两种类型进程皆可访问。
如图6为基于现有Openresty系统实现的全局共享字典模块的初始化流程图。
本发明基于现有Openresty系统创建一个全局共享字典管理模块,支持W eb服务进程和Socket服务进程数据共享;基于该模块,Web服务进程Socket服务进程和初始化流程将变为:
解析并加载Openresty系统配置文件nginx.conf;
根据nginx.conf中配置初始化不同类型Nginx进程;
根据类型,进入不同模块的入口;该不同模块的入口分别是Http模块入口和Stream模块入口,在Http模块入口和Stream模块入口中,分别指向全局共享字典管理模块入口,进入全局共享字典管理模块入口,开始全局字典管理模块流程;
在全局字典管理模块中,判断nginx.conf是否配置lua_shared_dict共享字典,如果“否,”则离开全局共享字典管理模块,根据进程类型,回到Http模块入口或Stream模块入口,继续完成对应的模块初始化流程;
如果“是,”全局共享字典管理模块判断全局共享字典是否已初始化,如果未创建,则创建全局共享字典;
如果已创建,则跳过创建流程,返回Http模块入口或Stream模块入口,继续模块初始化流程。此时新创建的服务进程已可访问全局共享字典数据,且数据与所有Web服务进程和Socket进程共享(如图7所示)。
在现有Openresty系统中,现有Http模块和Stream模块中的共享字典管理模块分别为ngx_http_lua_shdict和ngx_stream_lua_shdict,因此,基于现有Op enresty系统,发明的跨类型服务间数据共享方法具体包括:
增加新的全局共享字典管理模块,进入全局共享字典管理入口,开启全局自己管理流程;
基于现有Openresty系统的Http模块的ngx_http_lua_shdict设计全局共享字典管理模块。复制ngx_http_lua_shdict模块为ngx_lua_shdict,批量替换ngx_lua_shdict模块代码中关键字“http_lua”为“lua;”
经过这样修改,修改后的Openresty系统nginx.conf配置将在全局支持lua_shared_dict关键字,而不是只在http{}区域和stream{}区域下才支持lua_shar ed_dict关键字。
现有Openresty系统的Http模块的共享字典访问API将被新的全局共享字典管理模块所继承,包括数据的增删改查,支持过期数据自动删除,如:lp ush、rpush、lpop、rpop、get_keys、llen、flush_expired等;由于API使用名称和方法完全一样,这样,不会影响原有的Web服务或者Socket服务功能。
现有Openresty系统的Http模块和Stream模块初始化入口函数分别为ngx_http_lua_init_by_lua和ngx_stream_lua_init_by_lua。因此,在新的全局共享字典管理模块中设计入口处理init_handler,修改现有Http模块和Stream模块的代码,使入口调用init_handler均指向新的全局共享字典管理模块入口init_ha ndler。在该init_handler中,
判断系统配置文件nginx.conf是否配置全局共享字典,如果“否,”则根据类型分别返回对应的Http模块和Stream模块的初始化流程。如果“是,”进入根据标志位判断全局共享字典是否已初始化,如果未初始化,执行全局共享字典初始化流程,即创建全局共享字典,离开全局共享字典管理模块;完成后,根据类型分别返回Http模块和Stream模块,继续完成剩下的初始化流程。
还包括:按照Nginx自定义配置(config)规范,将全局共享字典管理模块注册成Nginx core模块,这样全局共享字典管理模块加载nginx.conf配置文件,同时,入口函数可被Http模块和Stream模块调用;
还包括:删除现有Http模块和Stream模块中的共享字典管理模块代码,删除后,原来在http{}区域和stream{}区域下支持的lua_shared_dict关键字也随之失效。
如图8所示,说明本发明的一种基于Openresty的跨类型服务间数据共享方法具体包括如下步骤:
步骤S1:增加新的全局共享字典管理模块,进入全局共享字典管理入口,开启全局自己管理流程;
在该步骤S1中:在Http模块入口和Stream模块入口中,分别指向全局共享字典管理模块入口,进入全局共享字典管理模块入口,开始全局字典管理模块流程;
步骤S2:系统配置文件nginx.conf是否配置全局共享字典?如果“是,”进入步骤S3,如果“否”进行步骤S5;
步骤S3:是否已初始化全局共享字典?如果“是,”进入步骤S5,如果“否”进行步骤S4;
步骤S4:创建全局共享字典;
步骤S5:离开全局共享字典管理模块。
如图9所示,为本发明一种基于Openresty的跨类型服务间数据共享系统,该系统1包括:
增加单元11,其增加新的全局共享字典管理模块;
配置单元12,其将系统配置文件nginx.conf配置全局共享字典;
初始化单元13,其初始化全局共享字典;
创建单元14,其创建全局共享字典;以及
离开单元15,其离开所述全局共享字典管理模块。
参见图10,本申请实施例还提供了一种电子设备200,电子设备200包括至少一个存储器210、至少一个处理器220以及连接不同平台系统的总线230。
存储器210可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)211和/或高速缓存存储器212,还可以进一步包括只读存储器(ROM)213。
其中,存储器210还存储有计算机程序,计算机程序可以被处理器220执行,使得处理器220执行本申请实施例中实时视频处理方法的步骤,其具体实现方式与上述实时视频处理方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。
存储器210还可以包括具有至少一个程序模块215的实用工具214,这样的程序模块215包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
相应的,处理器220可以执行上述计算机程序,以及可以执行实用工具214。
总线230可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备240例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入输出接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现本申请实施例中实时视频处理方法的步骤,其具体实现方式与上述实时视频处理方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。
图11示出了本实施例提供的用于实现上述实时视频处理方法的程序产品300,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品300不限于此,在本申请中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品300可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、R F等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
与现有技术相比,本发明基于现有Openresty框架,设计一种基于Http模块的Web服务进程和基于Stream模块的Socket服务进程数据共享方法。设计全局共享字典管理模块方法;增加所有类型进程均支持的Nginx配置关键字和操作API方法;设计Http模块和Stream模块的初始化流程与新的全局内存管理模块相结合的方法。因此,本发明的基于Openresty的跨类型服务间数据共享方法可以达到如下技术效果,使得用户:
1、对于基于Http模块的Web服务和基于Stream模块的Socket服务,使用现有Openresty系统支持的API存取共享字典中的数据,而数据无需在网络中传输;
2、使用本发明的数据共享方法,已开发完成的Web服务和Socket服务功能不会受影响;
3、无需开发或者部署任何Openresty系统以外的第三方服务;
4、可只使用Openresty系统支持的Lua脚本开发功能。
最后应说明的是:以上实施例仅用以说明本发明的技术方法,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方法进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方法的本质脱离本发明实施例技术方法的精神和范围。

Claims (6)

1.一种基于Openresty的跨类型服务间数据共享方法,其特征在于,包括如下步骤:
删除现有Openresty系统Http模块和Stream模块中的共享字典管理模块代码,增加一个全局共享字典管理模块,将所述全局共享字典管理模块注册成Nginx core模块,基于现有的Http模块来设计所述全局共享字典管理模块,所述全局共享字典管理模块支持Web服务进程和Socket服务进程数据共享,基于上述全局共享字典管理模块的初始化流程为:
步骤S1:解析并加载Openresty系统配置文件nginx.conf,根据nginx.conf中配置初始化不同类型Nginx进程,根据进程类型,分别进入Http模块入口和Stream模块入口,在Http模块入口和Stream模块入口中,分别指向全局共享字典管理模块入口,进入全局共享字典管理模块入口,开始全局共享字典管理模块流程;
步骤S2:全局共享字典管理模块判断系统配置文件nginx.conf是否配置全局共享字典,如果是,则进入步骤S3,如果否,则进行步骤S5;
步骤S3:全局共享字典管理模块判断全局共享字典是否已初始化,如果是,则进入步骤S5,如果否,则进入步骤S4;
步骤S4:创建全局共享字典;
步骤S5:离开全局共享字典管理模块;
步骤S6:根据进程的类型返回Http模块入口或Stream模块入口,继续完成对应的模块初始化流程;
步骤S7:初始化完成。
2.根据权利要求1所述的一种基于Openresty的跨类型服务间数据共享方法,其特征在于,
所述全局共享字典管理模块将包括:全局共享字典管理模块、复制模块以及替换模块。
3.根据权利要求1所述的一种基于Openresty的跨类型服务间数据共享方法,其特征在于,
现有Http模块的共享字典访问API将被所述全局共享字典管理模块所继承。
4.一种基于Openresty的跨类型服务间数据共享系统,该数据共享系统用于执行权利要求1-3任一项所述的数据共享方法,其特征在于,包括:
增加单元,其删除现有Openresty系统Http模块和Stream模块中的共享字典管理模块代码,增加一个全局共享字典管理模块,将所述全局共享字典管理模块注册成Nginx core模块,基于现有的Http模块来设计所述全局共享字典管理模块,所述全局共享字典管理模块支持Web服务进程和Socket服务进程数据共享;
入口分流单元,其解析并加载Openresty系统配置文件nginx.conf,根据nginx.conf中配置初始化不同类型Nginx进程,根据进程类型,分别进入Http模块入口和Stream模块入口,在Http模块入口和Stream模块入口中,分别指向全局共享字典管理模块入口,进入全局共享字典管理模块入口,开始全局共享字典管理模块流程;
配置单元,其将系统配置文件nginx.conf配置全局共享字典;
初始化单元,其初始化全局共享字典;
创建单元,其创建全局共享字典;
离开单元,其离开所述全局共享字典管理模块;
返回单元,其根据进程的类型返回Http模块入口或Stream模块入口,继续完成对应的模块初始化流程。
5.一种电子设备,其特征在于,所述电子设备存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1-3任一项所述方法的步骤。
6.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-3任一项所述方法的步骤。
CN202111483657.4A 2021-12-07 2021-12-07 一种基于Openresty的跨类型服务间数据共享方法及系统 Active CN114138419B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111483657.4A CN114138419B (zh) 2021-12-07 2021-12-07 一种基于Openresty的跨类型服务间数据共享方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111483657.4A CN114138419B (zh) 2021-12-07 2021-12-07 一种基于Openresty的跨类型服务间数据共享方法及系统

Publications (2)

Publication Number Publication Date
CN114138419A CN114138419A (zh) 2022-03-04
CN114138419B true CN114138419B (zh) 2022-09-23

Family

ID=80384548

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111483657.4A Active CN114138419B (zh) 2021-12-07 2021-12-07 一种基于Openresty的跨类型服务间数据共享方法及系统

Country Status (1)

Country Link
CN (1) CN114138419B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101430655A (zh) * 2008-11-19 2009-05-13 北京飞天诚信科技有限公司 模拟全局共享内存的方法和装置
CN109460389A (zh) * 2018-11-29 2019-03-12 四川长虹电器股份有限公司 一种基于openresty的日志记录方法
CN111367687A (zh) * 2020-02-28 2020-07-03 罗普特科技集团股份有限公司 进程间数据通信方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102271156A (zh) * 2011-07-20 2011-12-07 武汉爱迪智能工程有限公司 基于物联网的数据共享服务系统
CN104391949B (zh) * 2014-11-26 2018-01-19 国家电网公司 一种基于数据字典的广域数据资源管理方法
CN110968704B (zh) * 2019-12-24 2023-04-07 浪潮云信息技术股份公司 一种RADOS Gateway的多媒体处理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101430655A (zh) * 2008-11-19 2009-05-13 北京飞天诚信科技有限公司 模拟全局共享内存的方法和装置
CN109460389A (zh) * 2018-11-29 2019-03-12 四川长虹电器股份有限公司 一种基于openresty的日志记录方法
CN111367687A (zh) * 2020-02-28 2020-07-03 罗普特科技集团股份有限公司 进程间数据通信方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"《缓存利器》一、worker进程的共享内存";https://blog.csdn.net/weixin_34279061/article/details/91568807?s;《CSDN》;20181219;正文1-9页 *

Also Published As

Publication number Publication date
CN114138419A (zh) 2022-03-04

Similar Documents

Publication Publication Date Title
US9852015B2 (en) Automatic discovery of a JavaScript API
CN108786112B (zh) 一种应用场景配置方法、装置和存储介质
US8402319B2 (en) Method and system to extract a navigation model for analysis of a web application
US7523461B2 (en) Modification of logic in an application
US20160246582A1 (en) Generic Semantic Configuration Service
US20070074156A1 (en) Componentization of software computer programs
US20100146492A1 (en) Translation of programming code
US11068243B2 (en) Application stack builder based on node features
US20180329692A1 (en) Information processing apparatus and method
US11327727B2 (en) Systems and methods for integrating modules into a software application
CN111324833A (zh) 页面展示方法、装置、电子设计及计算机可读介质
US8875089B2 (en) Workspace model for interrelated projects
US20240078171A1 (en) Techniques for model artifact validation
US8347320B2 (en) Generating a driver for analysis of an event-driven application
CN114138419B (zh) 一种基于Openresty的跨类型服务间数据共享方法及系统
CN116227625A (zh) 智能模型开发方法、介质及设备
CN114911541A (zh) 配置信息的处理方法、装置、电子设备及存储介质
CN109597611B (zh) 前端数据流控制组件开发系统、方法、设备及存储介质
CN112379885A (zh) 小程序编译方法、装置、设备及可读存储介质
CN114253615B (zh) 一种引导程序设置方法、装置、电子设备及存储介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
WO2024000917A1 (zh) 一种无侵入可插拔的前端构建转移提速方法及装置
WO2022127263A1 (zh) 一种代码处理方法以及相关设备
Costa et al. Using runtime models to unify and structure the handling of meta-information in reflective middleware
CN115269049A (zh) 远程插件的加载方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 711c, 7 / F, block a, building 1, yard 19, Ronghua Middle Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing 102600

Patentee after: Beijing Zhongke Flux Technology Co.,Ltd.

Address before: Room 711c, 7 / F, block a, building 1, yard 19, Ronghua Middle Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing 102600

Patentee before: Beijing Ruixin high throughput technology Co.,Ltd.