发明内容
有鉴于此,本公开的目的在于提出一种基于微服务架构的数据贯通方法及相关设备。
基于上述目的,本公开提供了一种基于微服务架构的数据贯通方法,包括:
客户端根据接口类型生成上送报文,并将所述上送报文加密后发送至服务端;
响应于接收到所述上送报文,所述服务端对所述上送报文进行解密并校验,确定所述校验通过后,所述服务端执行所述上送报文的数据贯通逻辑并记录日志信息,将执行结果加密后返回给所述客户端;
响应于接收到所述执行结果,所述客户端对所述执行结果进行解密,根据经过解密的所述执行结果进行数据处理并记录日志。
进一步的,所述客户端根据接口类型生成上送报文之前,还包括:根据所述接口类型在所述客户端与所述服务端分别配置客户端接口和服务端接口,所述客户端接口与所述服务端接口的接口编码和接口类型相同。
进一步的,所述上送报文包括上送数据和客户端信息。
进一步的,所述校验包括上送报文格式校验、客户端信息校验、客户端权限校验和上送报文信息校验。
进一步的,所述上送报文格式校验包括:响应于确定所述上送报文格式为预设格式,将所述上送报文按照预定规则进行格式转换。
进一步的,所述客户端权限校验包括:日访问服务端总次数校验、接口调用配置信息校验、日访问接口总次数校验、最近一次调用接口时间间隔校验。
进一步的,所述将执行结果加密后返回给所述客户端之前,还包括:将所述执行结果按照该客户端的所述上送报文格式进行格式转换。
基于同一发明构思,本公开提供了一种基于微服务架构的数据贯通装置,包括:
上送报文模块,被配置为客户端根据接口类型生成上送报文,并将所述上送报文加密后发送至服务端;
执行模块,被配置为响应于接收到所述上送报文,所述服务端对所述上送报文进行解密并校验,确定所述校验通过后,所述服务端执行所述上送报文的数据贯通逻辑并记录日志信息,将执行结果加密后返回给所述客户端;
数据处理模块,被配置为响应于接收到所述执行结果,所述客户端对所述执行结果进行解密,根据经过解密的所述执行结果进行数据处理并记录日志。
基于同一发明构思,本公开提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如上所述的方法。
基于同一发明构思,本公开提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如上所述的方法。
从上面所述可以看出,本公开提供的一种基于微服务架构的数据贯通方法及相关设备,采用微服务架构两级部署,可以根据省侧实际情况配置相关数据库类型。在总部和省侧配置相同接口编码和接口类型的接口,增加数据贯通接口相关服务时,只需要增加相关配置即可,配置灵活,即配即用,支持多种接口类型,数据交互更灵活。同时增加服务端数据校验逻辑,避免因客户端上送数据不合法造成服务端***数据展示错误,确保数据质量更高。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
以下结合附图来详细说明本公开的实施例。
参考图1,本公开提供了一种基于微服务架构的数据贯通方法,包括以下几个步骤:
步骤S101、客户端根据接口类型生成上送报文,并将所述上送报文加密后发送至服务端。客户端根据具体的接口类型,例如查询、更新、删除等接口类型生成上送报文,通过定时任务发起调用或是触发任务发起调用,将生成的上送报文加密后发送至服务端,设置定时任务发起调用可以实现数据贯通自动化。本实施例中,采用SM4.0加密算法对上送报文进行加密,保证数据安全。
步骤S102、响应于接收到所述上送报文,所述服务端对所述上送报文进行解密并校验,确定所述校验通过后,所述服务端执行所述上送报文的数据贯通逻辑并记录日志信息,将执行结果加密后返回给所述客户端。
接收到客户端发送的上送报文后,服务端首先对上送报文进行解密,如果解密失败,向客户端发送错误信息:解密失败。如果解密成功,获取上送报文信息,对上送报文信息进行校验,校验具体内容可根据实际任务情况进行调整。如果校验未通过,则向客户端发送相关错误信息,提示客户端进行相应后续处理。校验通过后,根据上送报文内的具体内容执行数据贯通逻辑,例如查询、更新、增加数据等并记录日志信息,服务端将执行结果和相关内容封装成返回对象,加密后返回给客户端。
步骤S103、响应于接收到所述执行结果,所述客户端对所述执行结果进行解密,根据经过解密的所述执行结果进行数据处理并记录日志。客户端接收到服务端返回的执行结果,对其进行解密,对返回的执行结果进行处理,并判断此次调用任务是否结束,如果未结束,则再次发起请求,如果结束,停止本地调用,最后更新任务日志结果。
参考图2所示的客户端与服务端交互的流程示意图,客户端发起定时任务,扫描接口配置表,根据接口配置表生成上送数据,将包括上送数据的上送报文加密后发送到服务端,服务端将执行结果返回至客户端,客户端对执行结果进行解密,解密成功后客户端处理返回数据,判断是否任务存在下一页,若存在则继续扫描接口配置表重新发起请求,若不存在下一页任务,则结束本地调用。若服务端返回错误信息,则等待人工处理后再次发起任务请求。
在一些实施例中,所述客户端根据接口类型生成上送报文之前,还包括:根据所述接口类型在所述客户端与所述服务端分别配置客户端接口和服务端接口,所述客户端接口与所述服务端接口的接口编码和接口类型相同。根据接口编码和接口类型制订接口配置信息表、接口表信息配置表和接口列信息配置表,客户端和服务端分别制订各自的上述表结构。
数据贯通主要是通过接口配置,解决两级部署***之间、各自建***与总部平台之间的数据交互问题。本实施例中,在客户端与服务端部署相同的接口,分别为上行接口、下行接口、删除接口、http请求接口和附件接口,每次客户端发起任务时,客户端根据接口配置从服务端获取数据保存到本地数据库,或者将本地数据库数据发送到服务端进行更新保存。服务端接收到数据后,根据接口配置信息对上送数据进行校验,如果不符合校验规则返回报错信息,如果符合校验规则则根据接口配置信息进行更新数据或者查询数据返回结果给客户端。
在一些实施例中,所述上送报文包括上送数据和客户端信息。具体的,客户端根据定时任务发起调用,扫描客户端的接口配置信息表(如表1所示),根据客户端的接口配置信息表配置的接口编码,查找客户端的接口表信息配置(如表2所示)表和客户端的接口列信息配置表(如表3所示),根据客户端的接口配置信息表的接口类型(如表4所示)和对应表信息、列信息和定时任务发起时间拼接成上送数据,将上送数据和客户端信息组合成上送报文,将上送报文加密后,根据接口访问方式(参考表1中INTERFACE_TRANS_TYPE字段值),选择相应的客户端与服务端的交互方式,例如webservice技术,然后将上送报文发送到服务端。其中,客户端信息包括网省公司编码、网省公司名称、***名称、用户名、密码、服务器IP和服务器MAC地址等等。
表1接口配置信息表
表2接口表信息配置表
英文名称 |
中文名称 |
类型 |
ID |
主键 |
VARchar(50) |
BUSINESS_ID |
接口编码 |
VARchar(200) |
TABLE_NAME |
表名 |
VARchar(200) |
TABLE_REMARK |
表说明 |
VARchar(200) |
CON_TABLE_NAME |
关联表名 |
VARchar(200) |
CON_SQL |
关联SQL |
TEXT |
TABLE_SORT |
排序 |
VARchar(10) |
STATUS |
状态 |
VARchar(10) |
PARENT_ID |
父ID |
VARchar(50) |
FILE_PATH |
文件路径 |
VARchar(500) |
EXECUTE_NUMBER |
执行序号 |
VARchar(48) |
CREATE_DATE |
创建日期 |
DATE |
表3接口列信息配置表
英文名称 |
中文名称 |
类型 |
ID |
主键 |
VARchar(50) |
BUSINESS_ID |
接口编码 |
VARchar(200) |
TABLE_NAME |
表名 |
VARchar(200) |
COLUMN_NAME |
列名 |
VARchar(200) |
COLUMN_REMARK |
列说明 |
VARchar(200) |
REL_COLUMN_NAME |
真实列名 |
VARchar(500) |
IS_PK |
是否主键 |
VARchar(10) |
IS_DATE |
是否日期 |
VARchar(10) |
COLUMN_TYPE |
列类型 |
VARchar(10) |
SORT |
排序 |
VARchar(500) |
STATUS |
状态 |
VARchar(48) |
COLUMN_VALUE |
列默认值 |
VARchar(500) |
PSEUDO_COLUMN |
别名 |
VARchar(500) |
ISFUZZY |
是否支持模糊查询 |
VARchar(10) |
CREATE_DATE |
创建日期 |
DATE |
表4接口类型信息表
名称 |
值 |
下行接口 |
0 |
上行接口 |
1 |
删除接口 |
2 |
HTTP请求接口 |
3 |
附件接口 |
4 |
在一些实施例中,所述校验包括上送报文格式校验、客户端信息校验、客户端权限校验和上送报文信息校验。
具体的,上送报文格式校验包括响应于确定所述上送报文格式为预设格式,将所述上送报文按照预定规则进行格式转换。本实施例中,服务端根据解密后的上送报文格式进行判断,如果是可扩展标记语言XML(Extensible Markup Language)格式,则根据XML规则对上送报文进行格式转换,如果上送报文格式是JavaScript对象简谱JSON(JavaScriptObject Notation)格式,则根据JSON规则对上送报文进行格式转换。如果无法解析上送报文格式,则向客户端发送错误信息:上送报文格式错误,无法解析。
具体的,对客户端信息进行校验时,根据客户端上送的客户端信息,对应查找服务端的用户信息表(如表5所示),如果存在任何一项信息错误,则返回错误信息给客户端:用户认证失败,请填写正确的用户信息。如果客户端信息正确,则继续进行校验。
表5用户信息表
所述客户端权限校验包括:日访问服务端总次数校验、接口调用配置信息校验、日访问接口总次数校验、最近一次调用接口时间间隔校验,客户端权限校验需要服务端调取存储在服务端数据库中的接口访问日志表(如表6所示)和接口权限配置表(如表7所示)。
表6接口访问日志表
表7接口权限配置表
英文名称 |
中文名称 |
类型 |
ID |
主键 |
VARchar(50) |
PRO_ORG_NO |
网省公司编码 |
VARchar(10) |
PRO_ORG_NAME |
网省公司名称 |
VARchar(200) |
PK_ID |
用户ID |
VARchar(50) |
INTFACE_ID |
接口ID |
VARchar(50) |
COUNT_MAX |
最大访问次数 |
VARchar(50) |
CREATE_USER |
创建人 |
VARchar(100) |
CREATE_TIME |
创建时间 |
DATE |
UPDATE_USER |
更新人 |
VARchar(100) |
UPDATE_TIME |
更新时间 |
DATE |
日访问服务端总次数校验,具体为,根据客户端信息查询接口访问日志表(表6),统计该客户端今日访问服务端的总次数,和客户端信息配置的最大访问次数做比较:如果大于最大次数,返回错误信息:用户访问的最大次数已经超过设置的最大次数。如果访问次数没有超出最大访问次数,则继续校验。
接口调用配置信息校验,具体为,根据客户端信息和接口编码查询接口权限配置表(表7),如果不存在该客户端对接口的调用配置信息,则向客户端返回错误信息:没有访问该接口的权限。如果存在该客户端的调用配置信息,则继续校验。
日访问接口总次数校验,具体为,根据客户端信息和接口编码查询接口访问日志表(表6),统计今日访问该接口的次数,与接口调用信息表的最大次数进行比对,如果大于最大次数,则返回错误信息:用户今日访问该接口的次数已超过配置的最大次数。如果访问该接口的次数没有超出最大次数,则继续校验。
最近一次调用接口时间间隔校验,具体为,根据客户端信息和接口编码查询接口访问日志表(表6),查询最近一次调用时间与当前***时间的时间间隔,如果该时间间隔小于客户端信息表设置的时间间隔毫秒数,则向客户端返回错误信息:请不要频繁的访问接口。如果最近一次时间间隔超过设置的时间间隔,则通过权限校验。
上述权限校验完成后,需要对上送报文信息中的数据进行校验,根据服务端接口列信息配置表(表8)中VALIDATE_COLUMN_INFO字段的配置信息进行校验,具体包括:类型校验、最大长度校验、最小长度校验、最大值校验、最小值校验、整数精度校验、小数精度校验、日期格式校验、非空校验、正则表达式校验、默认值校验、值范围校验、自定义SQL校验和自定义类校验等等。
表8服务端接口列信息配置表
服务端接口列信息配置表中VALIDATE_COLUMN_INFO字段的配置信息如下所示,
{
"columnTypeName":"StringType",
"minLength":0,
"maxLength":0,
"minValue":1,
"maxValue":100,
"intPrecision":0,
"decimaisPrecision":0,
"formatString":"yyyy-MM-dd",
"className":null,
"notNull":false,
"relationColumn":null,
"regex":null,
"defaultValueScope":["INSERT"],
"defaultValue":["1"],
"defaultValueIsForce":[false],
"defaultValueSource":null,
"valueSet":["1","2"],
"validateSql":"SELECT COLUMN_1AS VALUE FROM TABLE_1WHERE COLUMN_NAME_2=#{NAME}"
}。
在一些实施例中,所述将执行结果加密后返回给所述客户端之前,还包括:将所述执行结果按照该客户端的所述上送报文格式进行格式转换。不同客户端发送的上送报文格式不同,将执行结果返回给客户端之前需要进行格式转换,使得执行结果转换为XML格式或是JSON格式,再将执行结果进行加密后返回至客户端。
在一些实施例中,当接口为下行接口时,对应查询功能,服务端根据接收到的上送报文信息和接口配置信息生成对应的查询SQL,执行数据库查询操作,根据上送的分页信息将查询结果和相关信息封装成返回对象。客户端收到执行结果解密后,如果返回信息成功,则根据接口配置信息将返回信息存储到数据库中。然后,判断任务是否存在下一页,若存在,则将当前页码加1,由客户端再次向服务端发送请求。若果不存在下一页,则结束本地调用,更新任务日志结果。
在一些实施例中,当接口为上行接口时,对应增加或修改功能,服务端根据上送报文信息和接口配置信息生成对应的增加或修改SQL,执行数据库更新操作,返回查询执行的记录数。如果存在附件信息,将附件信息存储到服务器。将返回的记录数和相关信息封装成返回对象。客户端收到执行结果后进行解密,返回信息成功,则判断任务是否还有下页数据需要上送,如果有,则查询下一页数据生成上送报文加密后再次发送请求。如果没有下页数据,则结束本地调用,更新任务日志结果。
在一些实施例中,当接口为删除接口时,对应删除功能,服务端根据上送信息和接口配置信息生成对应的删除SQL,执行数据库更新操作,将执行结果的记录数和相关信息封装成返回对象。客户端收到执行结果后进行解密,返回信息成功,则判断任务是否还有下页数据需要上送,如果有,则查询下一页数据生成上送报文加密后再次发送请求。如果没有下页数据,则结束本地调用,更新任务日志结果。
在一些实施例中,当接口为http请求接口时,对应http请求功能,服务端根据上送信息和接口配置信息生成http请求后,发送http请求到数据中台,将数据中台返回的数据信息封装成返回报文对象。客户端收到执行结果解密后,如果返回信息成功,则根据接口配置信息将返回信息存储到数据库中。然后,判断任务是否存在下一页,若存在,则将当前页码加1,由客户端再次向服务端发送请求。若果不存在下一页,则结束本地调用,更新任务日志结果。
在一些实施例中,当接口为附件接口,对应附件传输功能,服务端根据上送信息和接口配置信息生成SQL查询附件表,从查询附件表中返回附件信息,根据附件信息生成http请求,调用服务端统一非结构化平台务器,将返回附件信息转换成base64编码形式,生成返回报文对象。客户端收到执行结果解密后,如果返回信息成功,则将附件信息保存到客户端的统一非结构化平台服务器。判断任务是否有下一页,如果有,则当前页码加1,由客户端再次向服务端发送请求。如果没有,则结束本地调用,更新任务日志结果。
参考图3,服务端接收到上送报文后,对上送报文进行解密,如果解密成功对报文格式进行判断,并根据相关格式进行格式转换。对经过格式转换的上送报文进行权限校验,权限校验通过后对上送报文的数据进行校验,数据校验通过后执行数据贯通逻辑并记录日志信息,将生成执行结果反馈给相应客户端,根据客户端的上送格式对执行结果进行格式转换,加密后返回给客户端。当格式转换、解密、校验过程出现错误时,则向客户端发送相应报错信息提示。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种基于微服务架构的数据贯通装置。
参考图4,所述基于微服务架构的数据贯通装置,包括:
上送报文模块401,被配置为客户端根据接口类型生成上送报文,并将所述上送报文加密后发送至服务端;
执行模块402,被配置为响应于接收到所述上送报文,所述服务端对所述上送报文进行解密并校验,确定所述校验通过后,所述服务端执行所述上送报文的数据贯通逻辑并记录日志信息,将执行结果加密后返回给所述客户端;
数据处理模块403,被配置为响应于接收到所述执行结果,所述客户端对所述执行结果进行解密,根据经过解密的所述执行结果进行数据处理并记录日志。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的基于微服务架构的数据贯通方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的基于微服务架构的数据贯通方法。
图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入/输出模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的基于微服务架构的数据贯通方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的基于微服务架构的数据贯通方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的基于微服务架构的数据贯通方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。