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

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

【技术实现步骤摘要】
一种基于Openresty的跨类型服务间数据共享方法及系统


[0001]本专利技术涉及数据共享
,特别涉及一种基于Openresty的跨类型服务间数据共享方法及系统。

技术介绍

[0002]Nginx同Apache、Tomcat一样,是一种开源的高性能服务器软件。
[0003]OpenResty是一个基于Nginx与Lua的高性能平台,其内部集成了大量精良的Lua库、第三方模块,从而将Nginx有效地变成一个强大的通用应用平台。这样,Web开发人员可以使用Lua脚本语言调动Nginx支持的各种C以Lua模块,快速构造出高性能应用系统。
[0004]现有的Openresty的http模块和Stream模块分别是为系统提供Web服务(包含http和WebSocket服务)和Socket服务(包含tcp和udp服务),它们分别工作在网络层的应用层和传输层。
[0005]现有的Openresty的ngx.shared.dict模块提供了同类型Nginx进程间数据共享的方法,同类型指的是所有Web服务进程间可共享数据,而不能与Socket服务进程间共享数据。
[0006]发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息;Redis是高性能的非关系型数据库,支持发布订阅模式;Openresty存在与Redis数据库通信的开源模块。
[0007]因业务衍变的需要,有时出现Web服务和Socket服务共享数据的需求,此时,现有的Openresty系统已不能满足该需求。
[0008]目前有如下两种迂回的方法:
[0009]如图1所示,为方法一的实施方式,使用C++/Java/C#等语高级言实现支持数据共享的Web服务和Socket客户端,分别与基于Openresty实现的Web服务和Socket服务通信。
[0010]但是现有方法一存在如下缺点:需要使用其它语言额外开发Web服务和Socket服务,增加开发、调试和运营成本;为实现数据在共享内存中共享,需要使用C++/Java/C#等高级语言;图1中的(1)和(2)中任何一个链路出现问题,都可能会导致整个系统发出错误,增加不稳定性;增加CPU消耗、增加系统响应时间。
[0011]如图2所示,为现有基于Redis数据库的发布订阅模式特性设计的方法二。基于Openresty的Http模块实现的Web服务和基于Openresty的Stream模块实现的Socket服务分别发布数据给Redis数据库,并订阅所需类型数据。Redis作为两种类型服务的中介传递数据给相应服务。
[0012]现有方法二存在如下缺点:增加CPU消耗、增加系统响应时间;如果Re dis数据库服务宕机,会导致整个系统发出错误,增加不稳定性;由于Redis数据库有特定的数据存取格式,两种类型服务必须转换数据格式,增加转换开销。

技术实现思路

[0013]本专利技术的主要目的是在现有Openresty系统的基础上,专利技术为基于Openr esty的Http模块实现的Web服务和基于Openresty的Stream模块实现的Socket服务提供的数据共享方法及系统,该方法不依赖于任何Openresty系统以外的服务或模块。
[0014]为了达到上述目的,本专利技术提供一种基于Openresty的跨类型服务间数据共享方法,包括如下步骤:
[0015]步骤S1:增加新的全局共享字典管理模块,进入全局共享字典管理入口,开启全局自己管理流程;
[0016]步骤S2:系统配置文件nginx.conf是否配置全局共享字典?如果“是,”进入步骤S3,如果“否”进行步骤S5;
[0017]步骤S3:是否已初始化全局共享字典?如果“是,”进入步骤S5,如果“否”进入步骤S4;
[0018]步骤S4:创建全局共享字典;
[0019]步骤S5:离开全局共享字典管理模块。
[0020]优选地,还包括:将所述全局共享字典管理模块注册成Nginx core模块。
[0021]优选地,还包括:删除现有Http模块和Stream模块中的共享字典管理模块代码。
[0022]优选地,所述全局共享字典管理模块将包括:全局共享字典管理模块、复制模块以及替换模块。
[0023]优选地,基于现有Http模块来设计全局共享字典管理模块。
[0024]优选地,现有Http模块的共享字典访问API将被所述全局共享字典管理模块所继承。
[0025]优选地,在所述全局共享字典管理模块中设计入口处理。
[0026]为了达到上述目的,本专利技术还提供一种基于Openresty的跨类型服务间数据共享系统,包括:
[0027]增加单元,其增加新的全局共享字典管理模块;
[0028]配置单元,其将系统配置文件nginx.conf配置全局共享字典;
[0029]初始化单元,其初始化全局共享字典;
[0030]创建单元,其创建全局共享字典;以及
[0031]离开单元,其离开所述全局共享字典管理模块。
[0032]为了达到上述目的,本专利技术还提供一种电子设备,所述电子设备存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。
[0033]为了达到上述目的,本专利技术还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
[0034]专利技术的效果
[0035]与现有技术相比,本专利技术的有益效果在于:
[0036]本专利技术的基于Openresty的跨类型服务间数据共享方法使得用户:
[0037]1、使用现有Openresty系统支持的API存取共享字典中的数据,而数据无需在网络中传输;
[0038]2、已开发完成的Web服务和Socket服务功能不会受影响;
[0039]3、无需再开发或者部署任何第三方服务;
[0040]4、可只使用Openresty系统支持的Lua脚本开发功能。
附图说明
[0041]图1是现有方法一的实现数据共享方法的示意图。
[0042]图2是现有方法二的实现数据共享方法的示意图。
[0043]图3是现有Openresty系统已经支持的,基于Http模块实现的Web服务进程间共享字典和基于Stream模块实现的Socket服务进程间共享字典的示意图。
[0044]图4是现有Openresty系统初始化主要阶段示意图。
[0045]图5是现有Openresty系统初始化Web服务进程间共享字典和Socket服务进程间共享字典的流程图。
[0046]图6是本专利技术基于现有Openresty系统实现的全局共享字典模块的初始化流程图,支持Web服务进程和Socket服务进程数据共享。
[0047]图7是基于本专利技术Web服务进程和Soc本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Openresty的跨类型服务间数据共享方法,其特征在于,包括如下步骤:步骤S1:增加新的全局共享字典管理模块,进入全局共享字典管理入口,开启全局自己管理流程;步骤S2:系统配置文件nginx.conf是否配置全局共享字典?如果“是,”进入步骤S3,如果“否”进行步骤S5;步骤S3:是否已初始化全局共享字典?如果“是,”进入步骤S5,如果“否”进入步骤S4;步骤S4:创建全局共享字典;步骤S5:离开全局共享字典管理模块。2.根据权利要求1所述的一种基于Openresty的跨类型服务间数据共享方法,其特征在于,还包括:将所述全局共享字典管理模块注册成Nginx core模块。3.根据权利要求1所述的一种基于Openresty的跨类型服务间数据共享方法,其特征在于,还包括:删除现有Http模块和Stream模块中的共享字典管理模块代码。4.根据权利要求1所述的一种基于Openresty的跨类型服务间数据共享方法,其特征在于,所述全局共享字典管理模块将包括:全局共享字典管理模块、复制模块以及替换模块。5.根据权利要求1所述的一种基于Openresty的跨类型服务间数据共享方法,...

【专利技术属性】
技术研发人员:刘德贵罗鑫朱亚涛马丽娜王达
申请(专利权)人:北京睿芯高通量科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1