CN111752965A - 一种基于微服务的实时数据库数据交互方法和系统 - Google Patents
一种基于微服务的实时数据库数据交互方法和系统 Download PDFInfo
- Publication number
- CN111752965A CN111752965A CN202010473519.7A CN202010473519A CN111752965A CN 111752965 A CN111752965 A CN 111752965A CN 202010473519 A CN202010473519 A CN 202010473519A CN 111752965 A CN111752965 A CN 111752965A
- Authority
- CN
- China
- Prior art keywords
- micro
- access
- access request
- service
- service instance
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种基于微服务的实时数据库数据交互方法和系统,通过将SQL操作请求嵌入REST请求报文体中,采用服务网关技术实现对REST访问请求的接收和http报文头解析,并将请求负载均衡到访问请求执行微服务实例中,访问请求执行微服务实例解析微服务RESTful请求报文,提取其中的SQL请求内容,调用实时库SQL接口执行并返回执行结果。本发明能够简化人机交互前端访问实时数据库的过程,保障数据访问效率,同时也能够降低编程难度,大幅提升前端开发效率,适应迅速变化的界面展示需求。
Description
技术领域
本发明涉及电力调度自动化系统实时数据库访问技术领域,特别是一种基于微服务的实时数据库数据交互方法和系统。
背景技术
在电力行业,由于电能量在电网中传输的速率是光速,因此对电网运行状态的监测需要快速的数据处理手段,常规的电力监控程序为高效快速的处理数据,需要将数据缓存在实时数据库中,对于数据采集、处理和计算类的程序采用SQL接口访问实时库,然而对于人机交互的前端程序目前主流的高效交互方式为RESTful接口,但目前的实时库无法提供RESTful接口,这就造成人机交互应用必须通过调用SQL接口将数据转换成前端界面展示所需要的格式后,再转给前端,中间经过环节多,开发效率低,调试部署过程复杂,无法满足前端界面需求经常变化的情况。
名词解释
RESTful,REST(Representational State Transfer)描述了一个架构样式的网络系统,比如web应用程序。REST并没有一个明确的标准,而更像是一种设计的风格,它指的是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是RESTful。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
发明内容
本发明的目的是提供一种基于微服务的实时数据库数据交互方法和系统,能够支持人机交互前端的RESTful接口交互方式,实现对实时数据库的SQL接口访问,简化前端界面访问实时数据库的过程,提高访问效率。
本发明采用的技术方案如下:
一方面,本发明提供一种基于微服务的实时数据库数据交互方法,包括:
接收外部REST接口请求,所述外部REST接口请求包括报文体中嵌入有SQL语句的实时数据库访问请求;
对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求;
响应于外部REST接口请求为具有访问权限的实时数据库访问请求,按照预设的分配策略,将实时数据库访问请求转发给一已启动的访问请求执行微服务实例;所述访问请求执行微服务实例的数量为至少一个;
通过访问请求执行微服务实例解析外部REST接口请求的报文体,获取待访问的实时数据库信息、SQL语句,进而对相应的实时数据库执行相应的SQL操作,得到访问结果信息;
将访问结果信息返回至请求方。
以上方案设计,通过将SQL操作请求嵌入REST请求报文体中,并由微服务实例解析得到SQL语句和目标实时数据库,进而实现对相应实时数据库的访问,简化了人机交互前端访问实时数据库的过程,微服务架构的应用能够支持根据访问流量的动态扩容和缩容,保障数据访问效率。
可选的,方法还包括:
在将实时数据库访问请求转发给访问请求执行微服务实例后,记录分配变化信息;
根据分配变化信息将分配对象对应访问请求执行微服务实例的任务队列长度加1;
在访问请求执行微服务实例执行完毕后,记录执行完成信息;
根据执行完成信息将执行主体对应访问请求执行微服务实例的任务队列长度减1;
计算各访问请求执行微服务实例的任务队列长度的均值;
响应于所述均值大于设定长度阈值,启动新的访问请求执行微服务实例;
响应于任一已启动的访问请求执行微服务实例的任务队列长度值降为0,则停止相应访问请求执行微服务实例的运行。
以上方案设计可实现微服务实例的整体调度,在访问负荷较小时减少微服务实例,在访问负荷较大时则增加启动新的微服务实例,实现根据访问流量的动态扩容和缩容,避免微服务实例的负荷超载,提高软硬件资源的利用效率。
可选的,所述执行完成信息包括访问成功信息或访问失败信息;
方法还包括:根据执行完成信息中的访问失败信息,将执行主体对应访问请求执行微服务实例的超时次数加1;
根据执行完成信息中的访问成功信息,将执行主体对应访问请求执行微服务实例的超时次数置为0;
响应于任一访问请求执行微服务实例的超时次数大于预设超时次数阈值,则停止相应访问请求执行微服务实例的运行。
以上方案设计,可筛除多次执行失败的微服务实例,避免微服务实例注册或启动过程错误导致的服务不可用,减少实时库访问失败的几率。
可选的,所述对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求,包括:
解析外部REST接口请求的http报文头获取请求方身份信息;
若请求方身份信息包括用户身份标识信息,则查找匹配当前已登录用户身份信息,若匹配成功,则外部REST接口请求为具有访问权限的实时数据库访问请求。
可选的,所述对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求,包括:
解析外部REST接口请求的http报文头获取请求方身份信息;
若请求方身份信息包括用户身份标识信息,则查找匹配当前已登录用户身份信息,若匹配成功,则记录相应请求方的访问次数和访问时间,根据当前已记录的全部访问次数及访问时间计算访问频率,若访问频率大于设定访问频率阈值,则拒绝当前请求方的访问请求,并向请求方返回拒绝访问信息报文,若访问频率小于或等于访问频率阈值,则外部REST接口请求为具有访问权限的实时数据库访问请求。
以上方案设计在身份认证的基础上结合了对请求方用户访问频次的考虑,能够避免由于用户方误操作带来的访问负荷增加。
可选的,所述外部REST接口请求还包括登录请求及其它请求;
方法还包括,根据请求方身份信息执行以下判断:
若请求方身份信息中无用户身份标识信息,且外部REST接口请求为登录请求,则解析报文体获取用户登录信息,查找匹配当前已注册用户身份信息,若匹配成功,则生成用户身份标识信息返回至请求方;
若请求方身份信息中无用户身份标识信息,且外部REST接口请求非登录请求,则外部REST接口请求为无访问权限的其它请求,拒绝当前请求方的访问请求,并向请求方返回拒绝访问信息报文。
可选的,所述预设的分配策略为采用轮询的负载均衡策略,为微服务架构中常规的请求执行负荷分配策略。即依次从第一个实例到最后一个实例分配访问请求,至一轮分配结束后,所有实例的分配状态清零,开始下一轮分配,从而让每个实例都有均等的机会处理外部访问者的RESTful访问请求。
可选的,所述访问结果信息包括访问超时错误信息和对应访问成功的操作结果信息;
响应于请求执行微服务实例在设定的超时时间阈值内未返回操作结果信息,则将访问超时错误信息返回至请求方。
第二方面,本发明还提供一种基于微服务的实时数据库数据交互系统,包括服务网关模块和访问请求执行微服务实例;所述访问请求执行微服务实例的数量为至少一个;
服务网关模块接收外部REST接口请求,对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求,若是则按照预设的分配策略,将实时数据库访问请求转发给一已启动的访问请求执行微服务实例;所述外部REST接口请求包括报文体中嵌入有SQL语句的实时数据库访问请求;
访问请求执行微服务实例接收并解析外部REST接口请求的报文体,获取待访问的实时数据库信息、SQL语句,进而对相应的实时数据库执行相应的SQL操作,得到访问结果信息;
所述访问结果信息通过服务网关模块返回至请求方。
可选的,本发明基于微服务的实时数据库数据交互系统还包括服务实例调度模块;服务实例调度模块中记录有各微服务实例的任务队列信息;
服务网关模块在每次将实时数据库访问请求转发给访问请求执行微服务实例后,记录分配变化信息传输给服务实例调度模块;服务实例调度模块根据分配变化信息将分配对象对应访问请求执行微服务实例的任务队列长度加1;
服务网关模块在每次访问请求执行微服务实例执行完毕后,记录执行完成信息传输给服务实例调度模块;服务实例调度模块根据执行完成信息将执行主体对应访问请求执行微服务实例的任务队列长度减1,并响应于任一已启动的访问请求执行微服务实例的任务队列长度值降为0,向服务网关模块请求停止相应访问请求执行微服务实例的运行;
服务实例调度模块在每次改变访问请求执行微服务实例的任务队列长度后,计算各访问请求执行微服务实例的任务队列长度的均值;若所述均值大于设定长度阈值,则向服务网关模块请求启动新的访问请求执行微服务实例。
以上方案设计中,服务实例调度模块可实现微服务实例的整体调度,在访问负荷较小时减少微服务实例,在访问负荷较大时则增加启动新的微服务实例,实现根据访问流量的动态扩容和缩容,避免微服务实例的负荷超载,提高软硬件资源的利用效率。
可选的,所述执行完成信息包括访问成功信息或访问失败信息;服务实例调度模块中还记录有微服务实例的超时次数信息;
服务实例调度模块根据执行完成信息中的访问失败信息,将执行主体对应访问请求执行微服务实例的超时次数加1;或者根据执行完成信息中的访问成功信息,将执行主体对应访问请求执行微服务实例的超时次数置为0;
响应于任一访问请求执行微服务实例的超时次数大于预设超时次数阈值,服务实例调度模块向微服务模块请求停止相应访问请求执行微服务实例的运行。
以上方案设计,可筛除多次执行失败的微服务实例,避免微服务实例注册或启动过程错误导致的服务不可用,减少实时库访问失败的几率。
可选的,服务网关模块中设有已启动微服务实例列表;所述已启动微服务实例列表存储为etcd数据库,包括实例号和分配状态信息;
服务网关模块根据服务实例调度模块的微服务启动请求或微服务注销请求,更新已启动微服务实例列表;
服务网关模块每次分配实时数据库访问请求时,按照实例号依次轮询所有已启动微服务实例的分配状态,将实时数据库访问请求分配给轮询到的第一个状态为未分配的微服务实例,然后将相应微服务实例的分配状态更新为已分配。
以上方案设计可保证轮询策略分配的公平性。同时,etcd数据库是分布式数据库,可具有多个副本,且自身具有多副本一致性同步策略,能够方便本发明系统的扩展。
有益效果
一方面,本发明通过将SQL操作请求嵌入REST请求报文体中,并由微服务实例解析得到SQL语句和目标实时数据库,进而实现对相应实时数据库的访问,简化了人机交互前端访问实时数据库的过程,保障数据访问效率,同时也能够降低编程难度,大幅提升前端开发效率,适应迅速变化的界面展示需求。
另一方面,本发明通过服务网关实现访问请求向微服务实例的均衡分配,并利用服务调度机制分析微服务实例的负荷,进而通过服务网关实现微服务实例的注册和注销,能够实现微服务架构的应用能够支持根据访问流量的动态扩容和缩容,以及对系统软硬件资源的高效利用,支撑人机交互业务的快速扩展。
附图说明
图1为本发明的基于微服务的实时数据库数据交互系统的一种实施例结构示意图;
图2为本发明一种实施例的服务网关逻辑流程示意图图;
图3为本发明一种实施例的服务实例调度流程图;
图4为本发明一种实施例的访问请求执行微服务流程图。
具体实施方式
以下结合附图和具体实施例进一步描述。
本发明的技术构思为:利用微服务实现实时数据库SQL接口到前端RESTful接口的转换,使得客户端能够直接基于SQL访问的结果进行前端展示,为提高实时库的查询方便性和提升应用开发效率提供支撑。
实施例1
本实施例介绍一种基于微服务的实时数据库数据交互方法,参考图1,包括:
接收外部REST接口请求,所述外部REST接口请求包括报文体中嵌入有SQL语句的实时数据库访问请求;
对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求;
响应于外部REST接口请求为具有访问权限的实时数据库访问请求,按照预设的分配策略,将实时数据库访问请求转发给一已启动的访问请求执行微服务实例;所述访问请求执行微服务实例的数量为至少一个;
通过访问请求执行微服务实例解析外部REST接口请求的报文体,获取待访问的实时数据库信息、SQL语句,进而调用SQL对相应的实时数据库执行相应的SQL操作,得到访问结果信息;
将访问结果信息返回至请求方。
实施例1-1
本实施例具体介绍实施例1的一种实现方式,在实施例1的基础上还涉及对请求方用户身份的认证等,也即。
本实施例的方法包括以下几个方面的内容:
一、外部REST访问请求的接收和解析
此部分内容可利用服务网关技术实现。
仅考虑外部访问请求类型为实时数据库访问请求,且不考虑用户误操作导致访问频次超高的情况下:接收并解析外部REST接口请求的http报文头后,获取请求方身份信息,若请求方身份信息包括用户身份标识信息,则查找匹配当前已登录用户身份信息,若匹配成功,则外部REST接口请求为具有访问权限的实时数据库访问请求。
仅考虑部访问请求类型为实时数据库访问请求,同时考虑用户误操作导致访问频次超高的情况下:接收并解析外部REST接口请求的http报文头后,获取请求方身份信息,若请求方身份信息包括用户身份标识信息,则查找匹配当前已登录用户身份信息,若匹配成功,则记录相应请求方的访问次数和访问时间,根据当前已记录的全部访问次数及访问时间计算访问频率,若访问频率大于设定访问频率阈值,则拒绝当前请求方的访问请求,并向请求方返回拒绝访问信息报文,若访问频率小于或等于访问频率阈值,则外部REST接口请求为具有访问权限的实时数据库访问请求。
考虑外部REST接口请求可能为登录请求、实时数据库访问请求或其它请求的情况下:
接收并解析外部REST接口请求的http报文头后,获取请求方身份信息,然后根据请求方身份信息执行以下判断:
若请求方身份信息中无用户身份标识信息,且外部REST接口请求为登录请求,则解析报文体获取用户登录信息,查找匹配当前已注册用户身份信息,若匹配成功,则生成用户身份标识信息返回至请求方;用户登录信息即登录名和密码信息;
若请求方身份信息中无用户身份标识信息,且外部REST接口请求非登录请求,则外部REST接口请求为无访问权限的其它请求,拒绝当前请求方的访问请求,并向请求方返回拒绝访问信息报文。
RESTful接口登录请求报文体结构举例如下:
其中字节“data”中的数组第一个参数"#DFDFNIADAfe212dafaqe###"为加密后的用户名,第二个参数"&EFJLAFBHALD323%%#Dfaef"为加密后的密码。
基于以上报文体结构,判断是否为登录请求即可根据字节"opreation"的值"connect"来识别。
若用户名和密码匹配成功,则报文网关通过RESTful接口返回登录请求返回报文体结构如下:
其中字节“data”中第一个返回值"#DFDFNIADAfe212dafaqe#===="是用户经过认证的身份字符串,第二个返回值"2020-2-12 23:44:25.730"是经过认证的时间戳。
在用户登录成功后,当需要发送实时库访问请求时,需要将经过认证的身份字符串置于REST请求报文的http报文头“header”中,可描述为一个Token字符串,如Authorization:#DFDFNIADAfe212dafaqe#====。则报文网关能够通过解析http报文头获得身份认证信息,从而判断请求方是否为已登录的认证用户。
实时库访问请求请求报文体结构体可为:
RESTful接口回应实时库数据访问请求返回结果集报文体可为:
二、微服务实例调度
本发明通过记录微服务实例的任务队列长度、超时次数等判断是否需要启动新的微服务实例,或者注销不需要的微服务实例,具体包括:
在将实时数据库访问请求转发给访问请求执行微服务实例后,记录分配变化信息;
根据分配变化信息将分配对象对应访问请求执行微服务实例的任务队列长度加1;
在访问请求执行微服务实例执行完毕后,记录执行完成信息;
根据执行完成信息将执行主体对应访问请求执行微服务实例的任务队列长度减1;
计算各访问请求执行微服务实例的任务队列长度的均值;
响应于所述均值大于设定长度阈值,启动新的访问请求执行微服务实例;
响应于任一已启动的访问请求执行微服务实例的任务队列长度值降为0,则停止相应访问请求执行微服务实例的运行。
以上可实现微服务实例的整体调度,在访问负荷较小时减少微服务实例,在访问负荷较大时则增加启动新的微服务实例,实现根据访问流量的动态扩容和缩容,避免微服务实例的负荷超载,提高软硬件资源的利用效率。
考虑到微服务实例的执行完成可能为访问成功或者访问超时失败,故本实施例对微服务实例的调度还包括:
若执行完成信息对应访问失败,则将执行主体对应访问请求执行微服务实例的超时次数加1;
若执行完成信息对应访问成功,则将执行主体对应访问请求执行微服务实例的超时次数置为0;
响应于任一访问请求执行微服务实例的超时次数大于预设超时次数阈值,则停止相应访问请求执行微服务实例的运行。
以上方案设计,可筛除多次执行失败的微服务实例,避免微服务实例注册或启动过程错误导致的服务不可用,减少实时库访问失败的几率。
三、访问请求分配
参考图3所示,本实施例为实现各微服务实例的负载均衡分配,采用分配策略为轮询的负载均衡策略。分配可基于微服务实例列表实现,微服务实例列表采用键值对列表,对应的记录全局唯一实例号和分配状态信息。每次分配实时库访问请求时,依次从第一个实例到最后一个实例分配访问请求,至一轮分配结束后,所有实例的分配状态清零,开始下一轮分配,从而让每个实例都有均等的机会处理外部访问者的RESTful访问请求。
每次分配后,需要参考前述微服务实例调度的内容,对相应微服务实例的任务队列长度进行更新,并计算任务队列长度均值,以决定是否需要新增启动或注销微服务实例。
四、微服务实例的访问请求执行
参考图4所示,访问请求微服务实例在接收到REST访问请求后,对报文体进行解析,获取所要访问的实时数据库信息、SQL语句和用户标识信息;然后根据实时数据库信息链接相应实时数据库,在连接实时数据库成功后,调用实时数据库接口执行SQL操作;
若执行SQL操作成功,则将SQL调用返回的结果集组织成结果报文,通过服务网关返回请求方;若执行SQL操作失败,则将错误信息组织成结果报文,通过服务网关返回请求方;
响应于某一微服务实例根据微服务实例调度需要停止运行,则相应微服务实例在停止前向服务网关注销本微服务实例信息。
实施例2
与实施例1和实施例1-1基于相同的发明构思,本实施例介绍一种基于微服务的实时数据库数据交互系统,参考图1,系统包括服务网关模块和访问请求执行微服务实例;所述访问请求执行微服务实例的数量为至少一个;
服务网关模块接收外部REST接口请求,对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求,若是则按照预设的分配策略,将实时数据库访问请求转发给一已启动的访问请求执行微服务实例;所述外部REST接口请求包括报文体中嵌入有SQL语句的实时数据库访问请求;
访问请求执行微服务实例接收并解析外部REST接口请求的报文体,获取待访问的实时数据库信息、SQL语句,进而对相应的实时数据库执行相应的SQL操作,得到访问结果信息;
所述访问结果信息通过服务网关模块返回至请求方。
以上各模块的具体实现参考实施例1和实施例1-1中相关功能实现内容。
实施例2-1
在实施例2的基础上,本实施例还包括服务实例调度模块;服务实例调度模块中记录有各微服务实例的任务队列信息;
服务网关模块在每次将实时数据库访问请求转发给访问请求执行微服务实例后,记录分配变化信息传输给服务实例调度模块;服务实例调度模块根据分配变化信息将分配对象对应访问请求执行微服务实例的任务队列长度加1;
服务网关模块在每次访问请求执行微服务实例执行完毕后,记录执行完成信息传输给服务实例调度模块;服务实例调度模块根据执行完成信息将执行主体对应访问请求执行微服务实例的任务队列长度减1,并响应于任一已启动的访问请求执行微服务实例的任务队列长度值降为0,向服务网关模块请求停止相应访问请求执行微服务实例的运行;
服务实例调度模块在每次改变访问请求执行微服务实例的任务队列长度后,计算各访问请求执行微服务实例的任务队列长度的均值;若所述均值大于设定长度阈值,则向服务网关模块请求启动新的访问请求执行微服务实例。
服务实例调度模块可实现微服务实例的整体调度,在访问负荷较小时减少微服务实例,在访问负荷较大时则增加启动新的微服务实例,实现根据访问流量的动态扩容和缩容,避免微服务实例的负荷超载,提高软硬件资源的利用效率。
考虑到SQL接口调用后的执行完成信息包括访问成功信息或访问失败信息;服务实例调度模块中还记录有微服务实例的超时次数信息;
服务实例调度模块根据执行完成信息中的访问失败信息,将执行主体对应访问请求执行微服务实例的超时次数加1;或者根据执行完成信息中的访问成功信息,将执行主体对应访问请求执行微服务实例的超时次数置为0;
响应于任一访问请求执行微服务实例的超时次数大于预设超时次数阈值,服务实例调度模块向微服务模块请求停止相应访问请求执行微服务实例的运行。
以上方案设计,可筛除多次执行失败的微服务实例,避免微服务实例注册或启动过程错误导致的服务不可用,减少实时库访问失败的几率。
为实现负载均衡分配,服务网关模块中设有已启动微服务实例列表;所述已启动微服务实例列表存储为etcd数据库,包括实例号和分配状态信息;
服务网关模块根据服务实例调度模块的微服务启动请求或微服务注销请求,更新已启动微服务实例列表;
服务网关模块每次分配实时数据库访问请求时,按照实例号依次轮询所有已启动微服务实例的分配状态,将实时数据库访问请求分配给轮询到的第一个状态为未分配的微服务实例,然后将相应微服务实例的分配状态更新为已分配。
以上方案设计可保证轮询策略分配的公平性。同时,etcd数据库是分布式数据库,可具有多个副本,且自身具有多副本一致性同步策略,能够方便本发明系统的扩展。
本实施例系统中各模块的具体工作流程如下。
一、服务网关
服务网关模块负责接收外部访问请求、解析微服务请求报文、对访问者的身份进行授权验证、根据访问负载均衡策略将请求转发给特定访问请求执行微服务实例等。
参考图2所示,服务网关的工作流程为:
步骤101:分析外部请求的http报文头,获取请求方的身份信息;
步骤102:根据身份信息判断是否为认证用户,如果是则执行步骤103,如果不是则执行步骤104;
步骤103:记录当前请求方的访问次数和访问时间,并执行步骤105;
步骤104:判断访问请求是否为登录请求,如果是执行步骤106,如果不是执行步骤107;
步骤105:判断此调用方访问频度是否超过限值,如果超过则执行步骤107,如果未超过则执行步骤108;
步骤106:解析外部请求的报文体,获取用户名和密码信息,并执行步骤109;
步骤107:拒绝调用方的访问请求;
步骤108:按照负载均衡策略将微服务请求转发给某个访问请求执行微服务实例,并执行步骤110;
步骤109:判断用户名和密码是否正确,如果是则执行步骤111,如果不正确则执行步骤106;
步骤110:记录访问请求执行微服务实例分配情况,并通知服务实例调度器,执行步骤112;
步骤111:生成用户身份标示信息并返回给调用方;
步骤112:超时时间内访问请求执行微服务实例是否返回结果,如果是执行步骤113,如果不是执行步骤114;
步骤113:将结果返回给调用方,并执行步骤115;
步骤114:将超时错误信息返回给调用方,并执行步骤115;
步骤115:通知服务实例调度器任务完成情况。
二、微服务实例调度
服务实例调度模块负责从服务网关处获取推送的访问请求执行微服务实例信息,对每个访问请求执行微服务实例的任务队列进行计数、对每个访问请求执行微服务为实例的执行超时进行技术、动态扩展或缩小访问请求执行微服务实例数,重新启动反复超时不响应的实例等。
参考图3,微服务实例调度模块的工作流程如下:
步骤201:接收服务网关推送的访问请求执行微服务实例信息,并执行步骤202;
步骤202:判断是否为实例分配信息,如果是则执行步骤203,如果不是则执行步骤204;
步骤203:将访问请求执行微服务实例的任务队列长度加一,并执行步骤210;
步骤204:判断实例所处理的接口请求是否执行完成,如果是执行步骤205,如果不是执行步骤207;
步骤205:将访问请求执行微服务实例的任务队列长度减一,并执行步骤206;
步骤206:将访问请求执行微服务实例的超时次数降为0,并只是个步骤210;
步骤207:将访问请求执行微服务实例的超时次数加一,并执行步骤208;
步骤208:判断此微服务实例的超时次数是否超过阀值,如果是则执行步骤209,如果不是则执行步骤201;
步骤209:重新启动此访问请求执行微服务实例,并执行步骤201;
步骤210:计算各个访问请求执行微服务实例的任务队列长度均值,并执行步骤211;
步骤211:判断任务队列长度均值是否超过阀值,如果是执行步骤212,如果不是则执行步骤213;
步骤212:启动新的访问请求执行微服务实例,并执行步骤201;
步骤213:判断各个访问请求执行微服务实例中是否有任务队列长度为零的实例,如果是则执行步骤214,如果不是则执行步骤201;
步骤214:停止任务队列长度为零的访问请求执行微服务实例运行,并执行步骤201。
三、微服务实例执行访问请求
参考图4所示,各微服务实例的工作流程如下:
步骤301:启动微服务后向服务网关注册微服务实例信息,并执行步骤302;
步骤302:获取网管转发的服务访问请求,并执行步骤303;
步骤303:解析报文体,获取所访问的实时数据库信息、SQL语句和用户标识信息,并执行步骤304;
步骤304:用获取的试试数据库信息链接实时数据库是否成功,如果是则执行步骤305,如果否则执行步骤306;
步骤305:调用实时数据库接口执行SQL操作,并执行步骤307;
步骤306:将错误信息组织成结果报文并返回给服务网关,并执行步骤309;
步骤307:判断实时数据库的SQL操作是否成功,如果是则执行步骤308,如果不是则执行步骤306;
步骤308:将调用返回的结果集组织成结果报文并返回给服务网关,并执行步骤309;
步骤309:判断访问请求执行微服务实例是否停止运行,如果是则执行步骤310,如果不是则执行步骤302;
步骤310:停止微服务运行前向服务网关注销此微服务实例的信息。
以上实施例中,本发明针对电力系统中监控应用实时数据库不能提供RESTful接口的问题,提出了一种基于微服务的实时数据库SQL转换RESTful接口交互方法和系统,通过服务网关实现访问RESTful接口访问的用户身份认证和将请求负载均衡到访问请求执行微服务实例中,访问请求执行微服务实例解析微服务RESTful请求报文,提取其中的SQL请求内容,调用实时库SQL接口执行并返回执行结果,同时服务实例调度器根据服务网关提供的信息动态扩缩容访问请求执行微服务实例的数量,以实现性能的横向扩展和资源的高效利用。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种基于微服务的实时数据库数据交互方法,其特征是,包括:
接收外部REST接口请求,所述外部REST接口请求包括报文体中嵌入有SQL语句的实时数据库访问请求;
对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求;
响应于外部REST接口请求为具有访问权限的实时数据库访问请求,按照预设的分配策略,将实时数据库访问请求转发给一已启动的访问请求执行微服务实例;所述访问请求执行微服务实例的数量为至少一个;
通过访问请求执行微服务实例解析外部REST接口请求的报文体,获取待访问的实时数据库信息、SQL语句,进而对相应的实时数据库执行相应的SQL操作,得到访问结果信息;
将访问结果信息返回至请求方。
2.根据权利要求1所述的方法,其特征是,还包括:
在将实时数据库访问请求转发给访问请求执行微服务实例后,记录分配变化信息;
根据分配变化信息将分配对象对应访问请求执行微服务实例的任务队列长度加1;
在访问请求执行微服务实例执行完毕后,记录执行完成信息;
根据执行完成信息将执行主体对应访问请求执行微服务实例的任务队列长度减1;
计算各访问请求执行微服务实例的任务队列长度的均值;
响应于所述均值大于设定长度阈值,启动新的访问请求执行微服务实例;
响应于任一已启动的访问请求执行微服务实例的任务队列长度值降为0,则停止相应访问请求执行微服务实例的运行。
3.根据权利要求1或2所述的方法,其特征是,所述执行完成信息包括访问成功信息或访问失败信息;
方法还包括:根据执行完成信息中的访问失败信息,将执行主体对应访问请求执行微服务实例的超时次数加1;
根据执行完成信息中的访问成功信息,将执行主体对应访问请求执行微服务实例的超时次数置为0;
响应于任一访问请求执行微服务实例的超时次数大于预设超时次数阈值,则停止相应访问请求执行微服务实例的运行。
4.根据权利要求1所述的方法,其特征是,所述对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求,包括:
解析外部REST接口请求的http报文头获取请求方身份信息;
若请求方身份信息包括用户身份标识信息,则查找匹配当前已登录用户身份信息,若匹配成功,则外部REST接口请求为具有访问权限的实时数据库访问请求。
5.根据权利要求1所述的方法,其特征是,所述对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求,包括:
解析外部REST接口请求的http报文头获取请求方身份信息;
若请求方身份信息包括用户身份标识信息,则查找匹配当前已登录用户身份信息,若匹配成功,则记录相应请求方的访问次数和访问时间,根据当前已记录的全部访问次数及访问时间计算访问频率,若访问频率大于设定访问频率阈值,则拒绝当前请求方的访问请求,并向请求方返回拒绝访问信息报文,若访问频率小于或等于访问频率阈值,则外部REST接口请求为具有访问权限的实时数据库访问请求。
6.根据权利要求1所述的方法,其特征是,所述外部REST接口请求还包括登录请求及其它请求;
方法还包括,根据请求方身份信息执行以下判断:
若请求方身份信息中无用户身份标识信息,且外部REST接口请求为登录请求,则解析报文体获取用户登录信息,查找匹配当前已注册用户身份信息,若匹配成功,则生成用户身份标识信息返回至请求方;
若请求方身份信息中无用户身份标识信息,且外部REST接口请求非登录请求,则外部REST接口请求为无访问权限的其它请求,拒绝当前请求方的访问请求,并向请求方返回拒绝访问信息报文。
7.一种基于微服务的实时数据库数据交互系统,其特征是,包括服务网关模块和访问请求执行微服务实例;所述访问请求执行微服务实例的数量为至少一个;
服务网关模块接收外部REST接口请求,对外部REST接口请求的http报文头进行解析,判断外部REST接口请求是否为具有访问权限的实时数据库访问请求,若是则按照预设的分配策略,将实时数据库访问请求转发给一已启动的访问请求执行微服务实例;所述外部REST接口请求包括报文体中嵌入有SQL语句的实时数据库访问请求;
访问请求执行微服务实例接收并解析外部REST接口请求的报文体,获取待访问的实时数据库信息、SQL语句,进而对相应的实时数据库执行相应的SQL操作,得到访问结果信息;
所述访问结果信息通过服务网关模块返回至请求方。
8.根据权利要求7所述的基于微服务的实时数据库数据交互系统,其特征是,还包括服务实例调度模块;服务实例调度模块中记录有各微服务实例的任务队列信息;
服务网关模块在每次将实时数据库访问请求转发给访问请求执行微服务实例后,记录分配变化信息传输给服务实例调度模块;服务实例调度模块根据分配变化信息将分配对象对应访问请求执行微服务实例的任务队列长度加1;
服务网关模块在每次访问请求执行微服务实例执行完毕后,记录执行完成信息传输给服务实例调度模块;服务实例调度模块根据执行完成信息将执行主体对应访问请求执行微服务实例的任务队列长度减1,并响应于任一已启动的访问请求执行微服务实例的任务队列长度值降为0,向服务网关模块请求停止相应访问请求执行微服务实例的运行;
服务实例调度模块在每次改变访问请求执行微服务实例的任务队列长度后,计算各访问请求执行微服务实例的任务队列长度的均值;若所述均值大于设定长度阈值,则向服务网关模块请求启动新的访问请求执行微服务实例。
9.根据权利要求7或8所述的基于微服务的实时数据库数据交互系统,其特征是,所述执行完成信息包括访问成功信息或访问失败信息;服务实例调度模块中还记录有微服务实例的超时次数信息;
服务实例调度模块根据执行完成信息中的访问失败信息,将执行主体对应访问请求执行微服务实例的超时次数加1;或者根据执行完成信息中的访问成功信息,将执行主体对应访问请求执行微服务实例的超时次数置为0;
响应于任一访问请求执行微服务实例的超时次数大于预设超时次数阈值,服务实例调度模块向微服务模块请求停止相应访问请求执行微服务实例的运行。
10.根据权利要求7或8所述的基于微服务的实时数据库数据交互系统,其特征是,服务网关模块中设有已启动微服务实例列表;所述已启动微服务实例列表存储为etcd数据库,包括实例号和分配状态信息;
服务网关模块根据服务实例调度模块的微服务启动请求或微服务注销请求,更新已启动微服务实例列表;
服务网关模块每次分配实时数据库访问请求时,按照实例号依次轮询所有已启动微服务实例的分配状态,将实时数据库访问请求分配给轮询到的第一个状态为未分配的微服务实例,然后将相应微服务实例的分配状态更新为已分配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010473519.7A CN111752965B (zh) | 2020-05-29 | 2020-05-29 | 一种基于微服务的实时数据库数据交互方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010473519.7A CN111752965B (zh) | 2020-05-29 | 2020-05-29 | 一种基于微服务的实时数据库数据交互方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752965A true CN111752965A (zh) | 2020-10-09 |
CN111752965B CN111752965B (zh) | 2022-07-22 |
Family
ID=72674199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010473519.7A Active CN111752965B (zh) | 2020-05-29 | 2020-05-29 | 一种基于微服务的实时数据库数据交互方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752965B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112448848A (zh) * | 2020-11-13 | 2021-03-05 | 上海电器科学研究所(集团)有限公司 | 一种基于微服务自动扩容方法 |
CN112506481A (zh) * | 2020-12-01 | 2021-03-16 | 数字广东网络建设有限公司 | 业务数据交互方法、装置、计算机设备和存储介质 |
CN112669015A (zh) * | 2020-12-31 | 2021-04-16 | 广东电网有限责任公司电力调度控制中心 | 一种电力调度微服务构建系统和方法 |
CN112948302A (zh) * | 2021-03-02 | 2021-06-11 | 广州海量数据库技术有限公司 | 一种基于本地接口来访问外部数据库的方法及系统 |
CN113010915A (zh) * | 2021-03-10 | 2021-06-22 | 广州民航信息技术有限公司 | 统一机场数据接口的方法、系统、电子设备及存储介质 |
CN113806104A (zh) * | 2021-08-02 | 2021-12-17 | 北京房江湖科技有限公司 | 接口访问请求处理方法、api网关、服务器及系统 |
CN113840013A (zh) * | 2021-11-26 | 2021-12-24 | 北京慧点科技有限公司 | 一种分级管理的文档系统 |
CN113992738A (zh) * | 2021-09-02 | 2022-01-28 | 深圳市高腾科技服务有限公司 | 基于微服务网关的反向代理方法、装置、设备及存储介质 |
CN114036552A (zh) * | 2021-10-26 | 2022-02-11 | 南方电网深圳数字电网研究院有限公司 | 一种基于微服务的数据权限控制方法及装置 |
CN115129740A (zh) * | 2022-09-01 | 2022-09-30 | 山东大学 | 一种云原生环境下的分布式微服务数据库更新方法及系统 |
WO2022256969A1 (zh) * | 2021-06-07 | 2022-12-15 | 京东方科技集团股份有限公司 | 一种通用数据抽取的系统 |
-
2020
- 2020-05-29 CN CN202010473519.7A patent/CN111752965B/zh active Active
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112448848A (zh) * | 2020-11-13 | 2021-03-05 | 上海电器科学研究所(集团)有限公司 | 一种基于微服务自动扩容方法 |
CN112506481A (zh) * | 2020-12-01 | 2021-03-16 | 数字广东网络建设有限公司 | 业务数据交互方法、装置、计算机设备和存储介质 |
CN112669015A (zh) * | 2020-12-31 | 2021-04-16 | 广东电网有限责任公司电力调度控制中心 | 一种电力调度微服务构建系统和方法 |
CN112948302B (zh) * | 2021-03-02 | 2022-11-08 | 广州海量数据库技术有限公司 | 一种基于本地接口来访问外部数据库的方法及系统 |
CN112948302A (zh) * | 2021-03-02 | 2021-06-11 | 广州海量数据库技术有限公司 | 一种基于本地接口来访问外部数据库的方法及系统 |
CN113010915A (zh) * | 2021-03-10 | 2021-06-22 | 广州民航信息技术有限公司 | 统一机场数据接口的方法、系统、电子设备及存储介质 |
CN115836284A (zh) * | 2021-06-07 | 2023-03-21 | 京东方科技集团股份有限公司 | 一种通用数据抽取的系统 |
WO2022256969A1 (zh) * | 2021-06-07 | 2022-12-15 | 京东方科技集团股份有限公司 | 一种通用数据抽取的系统 |
CN113806104A (zh) * | 2021-08-02 | 2021-12-17 | 北京房江湖科技有限公司 | 接口访问请求处理方法、api网关、服务器及系统 |
CN113992738A (zh) * | 2021-09-02 | 2022-01-28 | 深圳市高腾科技服务有限公司 | 基于微服务网关的反向代理方法、装置、设备及存储介质 |
CN114036552A (zh) * | 2021-10-26 | 2022-02-11 | 南方电网深圳数字电网研究院有限公司 | 一种基于微服务的数据权限控制方法及装置 |
CN113840013A (zh) * | 2021-11-26 | 2021-12-24 | 北京慧点科技有限公司 | 一种分级管理的文档系统 |
CN115129740B (zh) * | 2022-09-01 | 2022-11-04 | 山东大学 | 一种云原生环境下的分布式微服务数据库更新方法及系统 |
CN115129740A (zh) * | 2022-09-01 | 2022-09-30 | 山东大学 | 一种云原生环境下的分布式微服务数据库更新方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111752965B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752965B (zh) | 一种基于微服务的实时数据库数据交互方法和系统 | |
CN112162865B (zh) | 服务器的调度方法、装置和服务器 | |
WO2021159638A1 (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
CN108920153B (zh) | 一种基于负载预测的Docker容器动态调度方法 | |
CN112527489B (zh) | 一种任务调度方法、装置、设备及计算机可读存储介质 | |
US11838384B2 (en) | Intelligent scheduling apparatus and method | |
CN109995669B (zh) | 分布式限流方法、装置、设备及可读存储介质 | |
CN111913784B (zh) | 任务调度方法及装置、网元、存储介质 | |
US20200012602A1 (en) | Cache allocation method, and apparatus | |
WO2020192649A1 (zh) | 一种数据中心管理系统 | |
CN110569252B (zh) | 一种数据处理系统及方法 | |
CN107070709B (zh) | 一种基于底层numa感知的nfv实现方法 | |
WO2022222579A1 (zh) | 一种基于数据库中间件集群的高可用客户端负载均衡方法 | |
CN107203560A (zh) | 数据库、多数据库操作事务一致性保证方法及系统 | |
CN110147470B (zh) | 一种跨机房数据比对系统及方法 | |
CN113703997A (zh) | 集成多种消息代理的双向异步通信中间件系统及实现方法 | |
CN105976245A (zh) | 一种模拟交易系统及方法 | |
CN116450355A (zh) | 一种多集群模型训练方法、装置、设备及介质 | |
CN117850968A (zh) | 一种指定numa节点实现虚拟机迁移的方法、装置及系统 | |
US6754658B1 (en) | Database server processing system, method, program and program storage device | |
CN111488373A (zh) | 用于处理请求的方法和系统 | |
CN116501246A (zh) | 一种智能数据传输交换平台和任务流转方法 | |
US10616109B1 (en) | System and method for web service atomic transaction (WS-AT) affinity routing | |
CN112817732B (zh) | 一种适应云边协同多数据中心场景下的流数据处理方法及系统 | |
CN112667393B (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 |