一种基于数据库数据同步来实现HTTP代理的方法和系统与流程

文档序号:24045415发布日期:2021-02-23 18:29阅读:169来源:国知局
一种基于数据库数据同步来实现HTTP代理的方法和系统与流程
一种基于数据库数据同步来实现http代理的方法和系统
技术领域
[0001]
本发明涉及的是数据库领域,特别涉及一种基于数据库数据同步来实现http代理的方法和系统。


背景技术:

[0002]
随着目前数字信息联网技术的快速发展,各行业专用通信网络的建立,形成包括铁路专网、教育专网、石化专网等信息网络分层的多元化广域网络。各个行业对信息联网应用建设日趋成熟。而某些特殊的网络应用,需要在不同的网络之间交互数据。比如铁路系统一线部门需要实时与铁路数据中心交换信息,传统模式是采用开放端口的方式,实现数据的交换。但在某些特殊的网络环境下或者对安全方面的需要,是无法开放http端口的。这种情况下就无法部署基于http协议的网络应用。


技术实现要素:

[0003]
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于大数据统计城市外来人员和常驻人口的方法及系统。
[0004]
为了解决上述技术问题,本申请实施例公开了如下技术方案:
[0005]
一种基于数据库数据同步来实现http代理的方法,包括:
[0006]
s100.第一网络中的httpproxy服务器接收到终端http请求,并将http请求进行拆分,封装成json格式,写入数据库;
[0007]
s200.利用网闸将第一网络中数据库写入的请求数据同步至第二网络数据库中;
[0008]
s300.第二网络中的kafka-connect服务器检测到数据库数据变更后,将请求数据取出发布到第二网络中的kafka服务器;
[0009]
s400.第二网络中的httpproxy服务器订阅到kafka服务器的请求数据,将json格式的数据重新组装成http请求,并将请求数据转发给目标服务器;
[0010]
s500.目标服务器接收http请求,根据http请求,向第二网络中的httpproxy服务器输出应答数据;
[0011]
s600.第二网络中的httpproxy服务器将应答数据拆分,并封装成json格式,并写入第二网络中的数据库;
[0012]
s700.利用网闸将第二网络中数据库写入的应答数据同步至第一网络数据库中;
[0013]
s800.第一网络中的kafka-connect服务器检测到数据变更,将应答数据提取,发布到第一网络中的kafka服务器中;
[0014]
s900.第一网络中的中的httpproxy服务器订阅到kafka服务器的应答数据,将json格式的数据重新组装成http应答消息,并将请求回复给终端。
[0015]
进一步地,s100中,将http请求进行拆分,封装成json格式,至少包括:请求uri,消息类型、消息体以及唯一id字段。
[0016]
进一步地,s100中,写入数据库的具体方法为:封装后json写入数据库表msg字段,
同时写入msgtpye为0,代表消息类型为请求。
[0017]
进一步地,网闸为第一网络和第二网络的边界程序,能提供第一网络和第二网络的数据库表的同步功能。
[0018]
进一步地,s400-s500中,当第二网络中的httpproxy服务器将请求数据转发给目标服务器后,会在预设时间内判断是否收到目标服务器应答数据,若预设时间内收到目标服务器应答数据,则执行s600;若预设时间内未收到目标服务器应答数据,则流程结束。
[0019]
进一步地,s600中,第二网络中的httpproxy服务器将应答数据拆分,并封装成json格式,至少包括:状态及错误码,消息体以及请求时携带的唯一id。
[0020]
进一步地,s600中,写入数据库的具体方法为:写入数据库表msg字段,同时msgtype写入1,代表应答消息。
[0021]
进一步地,s900中,在预设时间内判断第一网络中的中的httpproxy服务器是否订阅到kafka服务器的应答数据,若在预设时间内,第一网络中的中的httpproxy服务器未订阅到kafka服务器的应答数据,将超时错误回复给客户端,流程结束。
[0022]
本发明还公开了一种基于数据库数据同步来实现http代理的系统,包括:httpproxy服务器、kafka和kafka-connect服务器、数据库;其中:httpproxy服务器、kafka和kafka-connect服务器、数据库都至少包含2个,分别设置于第一网络和第二网络;
[0023]
httpproxy服务器,用于接收第一网络的终端http请求,并将http请求进行拆分,封装成json格式,写入第一网络的数据库;用于订阅第二网络的kafka服务器的请求数据,将json格式的数据重新组装成http请求,并将请求数据转发给第二网路的目标服务器;还用于接收第二网络的目标服务器应答数据,httpproxy服务器将应答数据拆分,并封装成json格式,并写入第二网络中的数据库;
[0024]
kafka-connect服务器,用于检测第二网络中的数据库数据是否变更,当数据库数据变更后,将请求数据取出发布到第二网络中的kafka服务器;还用于检测第一网络中的数据库数据是否变更,当数据库数据变更后,将应答数据取出发布到第一网络中的kafka服务器;
[0025]
kafka服务器,用于和httpproxy服务器进行信息交互,将终端的请求数据发送给第二网络的httpproxy服务器;还用于将目标服务器的应答数据发送给第一网络的httpproxy服务器;
[0026]
数据库,通过网闸将第一网络和第二网络的数据进行同步,用于将请求数据和应答数据在第一网络和第二网络之间进行同步。
[0027]
进一步地,httpproxy服务器包括consumer模块、session模块和datebase适配层;其中:
[0028]
consume模块,用于订阅kafka的消息,通过标记类型区分消息是请求还是应答,并转发到session模块处理;
[0029]
session模块,用于会话的管理,包括处理http请求及应答;
[0030]
datebase适配层,用于针对各个数据库api进行封装。
[0031]
本发明实施例提供的上述技术方案的有益效果至少包括:
[0032]
本发明公开的一种基于数据库数据同步来实现http代理的方法和系统,在程序和架构方面提供了综合的解决方案,当用户发起http请求时,httpproxy会对该请求进行拆分
和标记,将请求uri和消息体封装json格式,并设置消息类型tyep,type=0表示该条数据为请求数据,并为该条消息添加唯一标识,将拆分好的数据写入数据库,通过网闸同步数据库表数据。另一端网络获取该请求数据后,会重新组装并转发给目标服务器,目标服务器获取到应答数据后再将数据拆分,将应答状态和消息体封装json格式,并设置消息类型type,type=1表示该条数据为应答数据,请求端获取数据后组装并返回给客户端。上述消息交换模式,以数据库为桥梁,两端都通过httpproxy消息转换和会话管理,无需开通http端口,即可实现http跨网请求,且各个模块支持集群部署,当用户量过大时候支持横向拓展系统的并发额能力。
[0033]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0034]
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0035]
图1为本发明实施例1中,一种基于数据库数据同步来实现http代理的方法的流程图;
[0036]
图2为本发明实施例1中,一种基于数据库数据同步来实现http代理的方法示意图;
[0037]
图3为本发明实施例2中,一种基于数据库数据同步来实现http代理的系统结构图。
具体实施方式
[0038]
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0039]
为了解决现有技术中存在的某种特殊情况下无法部署基于http协议的网络应用问题,本发明实施例提供一种基于数据库数据同步来实现http代理的方法和系统。
[0040]
实施例1
[0041]
本实施例公开了一种基于数据库数据同步来实现http代理的方法,如图1和2,包括:
[0042]
s100.第一网络中的httpproxy服务器接收到终端http请求,并将http请求进行拆分,封装成json格式,写入数据库。
[0043]
在本实施例中,,s100中,将http请求进行拆分,封装成json格式,至少包括:请求uri,消息类型、消息体以及唯一id字段。
[0044]
在本实施例中,s100中,写入数据库的具体方法为:封装后json写入数据库表msg字段,同时写入msgtpye为0,代表消息类型为请求。
[0045]
s200.利用网闸将第一网络中数据库写入的请求数据同步至第二网络数据库中;在本实施例中,网闸为第一网络和第二网络的边界程序,能提供第一网络和第二网络的数据库表的同步功能。
[0046]
s300.第二网络中的kafka-connect服务器检测到数据库数据变更后,将请求数据取出发布到第二网络中的kafka服务器;
[0047]
s400.第二网络中的httpproxy服务器订阅到kafka服务器的请求数据,将json格式的数据重新组装成http请求,并将请求数据转发给目标服务器,等待目标服务器的应答数据。
[0048]
s500.目标服务器接收http请求,根据http请求,向第二网络中的httpproxy服务器输出应答数据。
[0049]
在本实施例中,s400-s500中,当第二网络中的httpproxy服务器将请求数据转发给目标服务器后,会在预设时间内判断是否收到目标服务器应答数据,若预设时间内收到目标服务器应答数据,则执行s500;若预设时间内未收到目标服务器应答数据,则流程结束。在本实施例中,预设时间优选60秒。如果60秒内收到目标服务器应答数据,进入s600;否则流程结束。
[0050]
s600.第二网络中的httpproxy服务器将应答数据拆分,并封装成json格式,并写入第二网络中的数据库.
[0051]
在本实施例中,s600中,第二网络中的httpproxy服务器将应答数据拆分,并封装成json格式,至少包括:状态及错误码,消息体以及请求时携带的唯一id。
[0052]
在本实施例中,s600中,写入数据库的具体方法为:写入数据库表msg字段,同时msgtype写入1,代表应答消息。
[0053]
s700.利用网闸将第二网络中数据库写入的应答数据同步至第一网络数据库中。
[0054]
s800.第一网络中的kafka-connect服务器检测到数据变更,将应答数据提取,发布到第一网络中的kafka服务器中;
[0055]
s900.第一网络中的中的httpproxy服务器订阅到kafka服务器的应答数据,将json格式的数据重新组装成http应答消息,并将请求回复给终端。
[0056]
在本实施例中,s900中,在预设时间内判断第一网络中的中的httpproxy服务器是否订阅到kafka服务器的应答数据,若在预设时间内,第一网络中的中的httpproxy服务器未订阅到kafka服务器的应答数据,将超时错误回复给客户端,流程结束。优选的,预设时间为60秒。
[0057]
本发明公开的一种基于数据库数据同步来实现http代理的方法,在程序和架构方面提供了综合的解决方案,当用户发起http请求时,httpproxy会对该请求进行拆分和标记,将请求uri和消息体封装json格式,并设置消息类型tyep,type=0表示该条数据为请求数据,并为该条消息添加唯一标识,将拆分好的数据写入数据库,通过网闸同步数据库表数据。另一端网络获取该请求数据后,会重新组装并转发给目标服务器,目标服务器获取到应答数据后再将数据拆分,将应答状态和消息体封装json格式,并设置消息类型type,type=1表示该条数据为应答数据,请求端获取数据后组装并返回给客户端。上述消息交换模式,以数据库为桥梁,两端都通过httpproxy消息转换和会话管理,无需开通http端口,即可实现http跨网请求,且各个模块支持集群部署,当用户量过大时候支持横向拓展系统的并发额能力。
[0058]
实施例2
[0059]
本实施例公开了一种基于数据库数据同步来实现http代理的系统,如图3,包括:
httpproxy服务器、kafka和kafka-connect服务器、数据库;其中:httpproxy服务器、kafka和kafka-connect服务器、数据库都至少包含2个,分别设置于第一网络和第二网络。在本实施例中,kafka服务器和kafka-connect服务器可以包含多台服务器,例如图2中是以单台服务器,单次http请求为例进行说明,所述系统是通过http/json-rpc消息和终端用户通信的。
[0060]
httpproxy服务器,用于消息解析和会话管理,以及包含底层的database适配层的实现。在本实施例中,用于接收第一网络的终端http请求,并将http请求进行拆分,封装成json格式,写入第一网络的数据库;用于订阅第二网络的kafka服务器的请求数据,将json格式的数据重新组装成http请求,并将请求数据转发给第二网路的目标服务器;还用于接收第二网络的目标服务器应答数据,httpproxy服务器将应答数据拆分,并封装成json格式,并写入第二网络中的数据库;
[0061]
kafka-connect服务器,用于在kafka和其他系统之间进行扩展。在本实施例中,用于检测第二网络中的数据库数据是否变更,当数据库数据变更后,将请求数据取出发布到第二网络中的kafka服务器;还用于检测第一网络中的数据库数据是否变更,当数据库数据变更后,将应答数据取出发布到第一网络中的kafka服务器;
[0062]
kafka服务器,是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据,在本实施例中,用于和httpproxy服务器进行信息交互,将终端的请求数据发送给第二网络的httpproxy服务器;还用于将目标服务器的应答数据发送给第一网络的httpproxy服务器;
[0063]
数据库,通过网闸将第一网络和第二网络的数据进行同步,用于将请求数据和应答数据在第一网络和第二网络之间进行同步。在本实施例中,数据库可以为mysql、oracle等数据库。
[0064]
在一些优选实施例中,httpproxy服务器包括consumer模块、session模块和datebase适配层;其中:
[0065]
consume模块,用于订阅kafka的消息,通过标记类型区分消息是请求还是应答,并转发到session模块处理;
[0066]
session模块,用于会话的管理,包括处理http请求及应答;
[0067]
datebase适配层,用于针对各个数据库api进行封装。
[0068]
本发明公开的一种基于数据库数据同步来实现http代理的系统,在程序和架构方面提供了综合的解决方案,当用户发起http请求时,httpproxy会对该请求进行拆分和标记,将请求uri和消息体封装json格式,并设置消息类型tyep,type=0表示该条数据为请求数据,并为该条消息添加唯一标识,将拆分好的数据写入数据库,通过网闸同步数据库表数据。另一端网络获取该请求数据后,会重新组装并转发给目标服务器,目标服务器获取到应答数据后再将数据拆分,将应答状态和消息体封装json格式,并设置消息类型type,type=1表示该条数据为应答数据,请求端获取数据后组装并返回给客户端。上述消息交换模式,以数据库为桥梁,两端都通过httpproxy消息转换和会话管理,无需开通http端口,即可实现http跨网请求,且各个模块支持集群部署,当用户量过大时候支持横向拓展系统的并发额能力。
[0069]
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设
计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
[0070]
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
[0071]
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
[0072]
结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动磁盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。该asic可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。
[0073]
对于软件实现,本申请中描述的技术可用执行本申请所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。
[0074]
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1