一种基于微服务的动力与环境监控系统及方法转让专利

申请号 : CN202310559116.8

文献号 : CN116319090B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王毅璇杨文龙丰大军银皓句海洋穆洪彬

申请人 : 中国电子信息产业集团有限公司第六研究所

摘要 :

本申请提供了一种基于微服务的动力与环境监控系统及方法,其中,该系统包括:流量接入层、业务网关、微服务模块、微服务注册中心;流量接入层,用于将用户端发送的用户请求发送至业务网关;业务网关,用于对用户请求中携带的用户登录账号进行鉴权,判断用户登录账号是否有访问权限;在用户登录账号有访问权限时,根据用户请求中携带的请求内容,从微服务模块中确定出请求内容对应的目标微服务;微服务模块,用于从微服务注册中心中确定出目标微服务的微服务地址,通过该微服务地址访问目标微服务,使用目标微服务响应用户请求,并将请求结果发送至用户端。通过该方法,有利于提高对数据管理的统一性。

权利要求 :

1.一种基于微服务的动力与环境监控系统,其特征在于,所述系统包括:流量接入层、至少一个业务网关、微服务模块、微服务注册中心;

所述流量接入层,用于接收用户端发送的用户请求,以及根据配置策略,将所述用户请求发送至对应的业务网关;所述用户请求包括数据获取请求和/或数据分析请求;

所述业务网关,用于对所述用户请求中携带的用户登录账号进行鉴权,判断所述用户登录账号是否有访问权限;以及在所述用户登录账号有访问权限时,根据所述用户请求中携带的请求内容,从所述微服务模块包含的各个微服务中确定出所述请求内容对应的目标微服务;

所述微服务模块,用于从所述微服务注册中心中确定出所述目标微服务的微服务地址,以及通过该微服务地址访问所述目标微服务,使用所述目标微服务响应所述用户请求,并将请求结果发送至所述用户端;微服务注册中心中注册有每个微服务各自对应的微服务地址;

所述系统还包括:缓存组件;当所述用户请求为所述数据获取请求时,所述微服务模块在用于使用所述目标微服务响应所述用户请求时,具体用于:使用所述目标微服务访问所述缓存组件,判断所述缓存组件中是否缓存有所述数据获取请求对应的请求数据;当所述缓存组件中缓存有所述请求数据时,使用所述目标微服务从所述缓存组件中获取所述请求数据;当所述缓存组件中未缓存有所述请求数据时,使用所述目标微服务从数据库中获取所述数据获取请求对应的请求数据,并将获取到的请求数据缓存至所述缓存组件;

所述缓存组件,用于缓存所述目标微服务从所述数据库中获取到的请求数据;以及监测缓存的各个请求数据是否超过该请求数据的有效日期;当超过所述有效日期时,将该请求数据从所述缓存组件中删除;每个所述请求数据的有效日期的长短与该请求数据的使用率呈正相关关系。

2.根据权利要求1所述系统,其特征在于,所述系统还包括:分布式锁;所述用户请求中包含有多个子请求;每个所述子请求对应各自的目标微服务;

所述分布式锁,用于判断同一所述用户请求中的各个子请求各自对应的目标微服务在响应子请求时是否均响应成功;当均响应成功时,所述微服务模块将包含各个子请求结果的请求结果发送至所述用户端;当存在至少一个子请求未响应成功时,所述微服务模块向所述用户端发送用于表示请求响应失败的提示信息。

3.根据权利要求1所述系统,其特征在于,所述系统还包括:日志;

所述日志,用于记录所述流量接入层接收到的各个所述用户请求,以及所述业务网关对各个所述用户请求的鉴权结果,以及所述微服务模块针对各个所述用户请求的请求结果。

4.根据权利要求1所述系统,其特征在于,所述系统还包括任务调度中心;当所述用户请求为周期性的数据获取请求时,所述任务调度中心,用于:周期性调用所述微服务模块,以使所述微服务模块周期性通过该用户请求对应的微服务地址访问该用户请求对应的目标微服务,以及周期性使用该目标微服务响应该用户请求,周期性的将当前的请求结果发送至所述用户端。

5.根据权利要求1所述系统,其特征在于,所述流量接入层在用于根据配置策略,将所述用户请求发送至对应的业务网关时,具体用于:当所述业务网关为一个时,将所述用户请求发送至所述业务网关的队列中;

当所述业务网关为多个时,根据各个业务网关的处理能力和/或剩余负载,将所述用户请求发送至对应的业务网关。

6.根据权利要求1所述系统,其特征在于,所述微服务模块在用于使用所述目标微服务响应所述用户请求时,具体用于:所述目标微服务根据所述用户请求中携带的所述请求内容,调用预设的SQL语句;

对预设的SQL语句进行格式化预处理,得到第一SQL语句;

使用SQL解析器对所述第一SQL语句进行解析,得到目标SQL语句;

所述目标微服务使用所述SQL语句响应所述用户请求。

7.根据权利要求1所述系统,其特征在于,所述系统还包括系统版本控制模块;

所述系统版本控制模块,用于在对所述基于微服务的动力与环境监控系统进行系统版本升级后,当系统版本升级后的基于微服务的动力与环境监控系统存在故障时,将当前的系统版本切换至进行系统版本升级之前的系统版本。

8.根据权利要求1所述系统,其特征在于,所述数据获取请求和/或所述数据分析请求中的数据包括以下中的任意一种或多种:供电数据、供暖数据、供水数据、燃气数据以及各个设备所处的环境数据。

9.一种基于微服务的动力与环境监控方法,其特征在于,所述方法应用于基于微服务的动力与环境监控系统,所述基于微服务的动力与环境监控包括:流量接入层、至少一个业务网关、微服务模块、微服务注册中心,所述方法包括:通过所述流量接入层接收用户端发送的用户请求,以及根据配置策略,将所述用户请求发送至对应的业务网关;所述用户请求包括数据获取请求和/或数据分析请求;

通过所述业务网关对所述用户请求中携带的用户登录账号进行鉴权,判断所述用户登录账号是否有访问权限;

在所述用户登录账号有访问权限时,所述业务网关根据所述用户请求中携带的请求内容,从所述微服务模块包含的各个微服务中确定出所述请求内容对应的目标微服务;

通过所述微服务模块从所述微服务注册中心中确定出所述目标微服务的微服务地址,以及通过该微服务地址访问所述目标微服务,使用所述目标微服务响应所述用户请求,并将请求结果发送至所述用户端;微服务注册中心中注册有每个微服务各自对应的微服务地址;

所述系统还包括:缓存组件;当所述用户请求为所述数据获取请求时,所述使用所述目标微服务响应所述用户请求,包括:使用所述目标微服务访问所述缓存组件,判断所述缓存组件中是否缓存有所述数据获取请求对应的请求数据;

当所述缓存组件中缓存有所述请求数据时,使用所述目标微服务从所述缓存组件中获取所述请求数据;

当所述缓存组件中未缓存有所述请求数据时,使用所述目标微服务从数据库中获取所述数据获取请求对应的请求数据,并将获取到的请求数据缓存至所述缓存组件;

通过所述缓存组件缓存所述目标微服务从所述数据库中获取到的请求数据;以及监测缓存的各个请求数据是否超过该请求数据的有效日期;

当超过所述有效日期时,将该请求数据从所述缓存组件中删除;每个所述请求数据的有效日期的长短与该请求数据的使用率呈正相关关系。

说明书 :

一种基于微服务的动力与环境监控系统及方法

技术领域

[0001] 本申请涉及计算机技术领域,尤其是涉及一种基于微服务的动力与环境监控系统及方法。

背景技术

[0002] 动力与环境监控系统是部队后勤保障的重要内容,其用于监控供电设备、供暖设备、供水设备、燃气设备的运行状态及所处的环境状态。目前,供电、供暖、供水、燃气等数据分别存储至各自的数据库中,互联互通较差,信息孤岛情况严重,协同处理能力较弱,缺乏统一的监控管理。用户想要使用这些数据时,需要分别从各个数据库中获取这些数据,数据使用过程较为繁琐。

发明内容

[0003] 有鉴于此,本申请的目的在于提供一种基于微服务的动力与环境监控系统及方法,以提高对数据管理的统一性,提高数据使用的便捷程度。
[0004] 第一方面,本申请实施例提供了一种基于微服务的动力与环境监控系统,所述系统包括:流量接入层、至少一个业务网关、微服务模块、微服务注册中心;
[0005] 所述流量接入层,用于接收用户端发送的用户请求,以及根据配置策略,将所述用户请求发送至对应的业务网关;所述用户请求包括数据获取请求和/或数据分析请求;
[0006] 所述业务网关,用于对所述用户请求中携带的用户登录账号进行鉴权,判断所述用户登录账号是否有访问权限;以及在所述用户登录账号有访问权限时,根据所述用户请求中携带的请求内容,从所述微服务模块包含的各个微服务中确定出所述请求内容对应的目标微服务;
[0007] 所述微服务模块,用于从所述微服务注册中心中确定出所述目标微服务的微服务地址,以及通过该微服务地址访问所述目标微服务,使用所述目标微服务响应所述用户请求,并将请求结果发送至所述用户端。
[0008] 结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,其中,所述系统还包括:缓存组件;当所述用户请求为所述数据获取请求时,所述微服务模块在用于使用所述目标微服务响应所述用户请求时,具体用于:
[0009] 使用所述目标微服务访问所述缓存组件,判断所述缓存组件中是否缓存有所述数据获取请求对应的请求数据;当所述缓存组件中缓存有所述请求数据时,使用所述目标微服务从所述缓存组件中获取所述请求数据;当所述缓存组件中未缓存有所述请求数据时,使用所述目标微服务从数据库中获取所述数据获取请求对应的请求数据,并将获取到的请求数据缓存至所述缓存组件;
[0010] 所述缓存组件,用于缓存所述目标微服务从所述数据库中获取到的请求数据;以及监测缓存的各个请求数据是否超过该请求数据的有效日期;当超过所述有效日期时,将该请求数据从所述缓存组件中删除;每个所述请求数据的有效日期的长短与该请求数据的使用率呈正相关关系。
[0011] 结合第一方面,本申请实施例提供了第一方面的第二种可能的实施方式,其中,所述系统还包括:分布式锁;所述用户请求中包含有多个子请求;每个所述子请求对应各自的目标微服务;
[0012] 所述分布式锁,用于判断同一所述用户请求中的各个子请求各自对应的目标微服务在响应子请求时是否均响应成功;当均响应成功时,所述微服务模块将包含各个子请求结果的请求结果发送至所述用户端;当存在至少一个子请求未响应成功时,所述微服务模块向所述用户端发送用于表示请求响应失败的提示信息。
[0013] 结合第一方面,本申请实施例提供了第一方面的第三种可能的实施方式,其中,所述系统还包括:日志;
[0014] 所述日志,用于记录所述流量接入层接收到的各个所述用户请求,以及所述业务网关对各个所述用户请求的鉴权结果,以及所述微服务模块针对各个所述用户请求的请求结果。
[0015] 结合第一方面,本申请实施例提供了第一方面的第四种可能的实施方式,其中,所述系统还包括任务调度中心;当所述用户请求为周期性的数据获取请求时,所述任务调度中心,用于:
[0016] 周期性调用所述微服务模块,以使所述微服务模块周期性通过该用户请求对应的微服务地址访问该用户请求对应的目标微服务,以及周期性使用该目标微服务响应该用户请求,周期性的将当前的请求结果发送至所述用户端。
[0017] 结合第一方面,本申请实施例提供了第一方面的第五种可能的实施方式,其中,所述流量接入层在用于根据配置策略,将所述用户请求发送至对应的业务网关时,具体用于:
[0018] 当所述业务网关为一个时,将所述用户请求发送至所述业务网关的队列中;
[0019] 当所述业务网关为多个时,根据各个业务网关的处理能力和/或剩余负载,将所述用户请求发送至对应的业务网关。
[0020] 结合第一方面,本申请实施例提供了第一方面的第六种可能的实施方式,其中,所述微服务模块在用于使用所述目标微服务响应所述用户请求时,具体用于:
[0021] 所述目标微服务根据所述用户请求中携带的所述请求内容,调用预设的SQL语句;
[0022] 对预设的SQL语句进行格式化预处理,得到第一SQL语句;
[0023] 使用SQL解析器对所述第一SQL语句进行解析,得到目标SQL语句;
[0024] 所述目标微服务使用所述SQL语句响应所述用户请求。
[0025] 结合第一方面,本申请实施例提供了第一方面的第七种可能的实施方式,其中,所述系统还包括系统版本控制模块;
[0026] 所述系统版本控制模块,用于在对所述基于微服务的动力与环境监控系统进行系统版本升级后,当系统版本升级后的基于微服务的动力与环境监控系统存在故障时,将当前的系统版本切换至进行系统版本升级之前的系统版本。
[0027] 结合第一方面,本申请实施例提供了第一方面的第八种可能的实施方式,其中,所述数据获取请求和/或所述数据分析请求中的数据包括以下中的任意一种或多种:供电数据、供暖数据、供水数据、燃气数据以及各个设备所处的环境数据。
[0028] 第二方面,本申请实施例还提供一种基于微服务的动力与环境监控方法,所述方法应用于基于微服务的动力与环境监控系统,所述基于微服务的动力与环境监控包括:流量接入层、至少一个业务网关、微服务模块、微服务注册中心,所述方法包括:
[0029] 通过所述流量接入层接收用户端发送的用户请求,以及根据配置策略,将所述用户请求发送至对应的业务网关;所述用户请求包括数据获取请求和/或数据分析请求;
[0030] 通过所述业务网关对所述用户请求中携带的用户登录账号进行鉴权,判断所述用户登录账号是否有访问权限;
[0031] 在所述用户登录账号有访问权限时,所述业务网关根据所述用户请求中携带的请求内容,从所述微服务模块包含的各个微服务中确定出所述请求内容对应的目标微服务;
[0032] 通过所述微服务模块从所述微服务注册中心中确定出所述目标微服务的微服务地址,以及通过该微服务地址访问所述目标微服务,使用所述目标微服务响应所述用户请求,并将请求结果发送至所述用户端。
[0033] 结合第二方面,本申请实施例提供了第二方面的第一种可能的实施方式,其中,所述系统还包括:缓存组件;当所述用户请求为所述数据获取请求时,所述使用所述目标微服务响应所述用户请求,包括:
[0034] 使用所述目标微服务访问所述缓存组件,判断所述缓存组件中是否缓存有所述数据获取请求对应的请求数据;
[0035] 当所述缓存组件中缓存有所述请求数据时,使用所述目标微服务从所述缓存组件中获取所述请求数据;
[0036] 当所述缓存组件中未缓存有所述请求数据时,使用所述目标微服务从数据库中获取所述数据获取请求对应的请求数据,并将获取到的请求数据缓存至所述缓存组件;
[0037] 通过所述缓存组件缓存所述目标微服务从所述数据库中获取到的请求数据;以及监测缓存的各个请求数据是否超过该请求数据的有效日期;
[0038] 当超过所述有效日期时,将该请求数据从所述缓存组件中删除;每个所述请求数据的有效日期的长短与该请求数据的使用率呈正相关关系。
[0039] 结合第二方面,本申请实施例提供了第二方面的第二种可能的实施方式,其中,所述系统还包括:分布式锁;所述用户请求中包含有多个子请求;每个所述子请求对应各自的目标微服务;所述方法还包括:
[0040] 通过所述分布式锁判断同一所述用户请求中的各个子请求各自对应的目标微服务在响应子请求时是否均响应成功;
[0041] 当均响应成功时,所述微服务模块将包含各个子请求结果的请求结果发送至所述用户端;
[0042] 当存在至少一个子请求未响应成功时,所述微服务模块向所述用户端发送用于表示请求响应失败的提示信息。
[0043] 结合第二方面,本申请实施例提供了第二方面的第三种可能的实施方式,其中,所述系统还包括:日志;所述方法还包括:
[0044] 通过所述日志记录所述流量接入层接收到的各个所述用户请求,以及所述业务网关对各个所述用户请求的鉴权结果,以及所述微服务模块针对各个所述用户请求的请求结果。
[0045] 结合第二方面,本申请实施例提供了第二方面的第四种可能的实施方式,其中,所述系统还包括任务调度中心;当所述用户请求为周期性的数据获取请求时,所述方法还包括:
[0046] 通过所述任务调度中心周期性调用所述微服务模块,以使所述微服务模块周期性通过该用户请求对应的微服务地址访问该用户请求对应的目标微服务,以及周期性使用该目标微服务响应该用户请求,周期性的将当前的请求结果发送至所述用户端。
[0047] 结合第二方面,本申请实施例提供了第二方面的第五种可能的实施方式,其中,所述通过所述流量接入层接收用户端发送的用户请求,以及根据配置策略,将所述用户请求发送至对应的业务网关,包括:
[0048] 当所述业务网关为一个时,将所述用户请求发送至所述业务网关的队列中;
[0049] 当所述业务网关为多个时,根据各个业务网关的处理能力和/或剩余负载,将所述用户请求发送至对应的业务网关。
[0050] 结合第二方面,本申请实施例提供了第二方面的第六种可能的实施方式,其中,所述使用所述目标微服务响应所述用户请求,包括:
[0051] 所述目标微服务根据所述用户请求中携带的所述请求内容,调用预设的SQL语句;
[0052] 对预设的SQL语句进行格式化预处理,得到第一SQL语句;
[0053] 使用SQL解析器对所述第一SQL语句进行解析,得到目标SQL语句;
[0054] 所述目标微服务使用所述SQL语句响应所述用户请求。
[0055] 结合第二方面,本申请实施例提供了第二方面的第七种可能的实施方式,其中,所述系统还包括系统版本控制模块;所述方法还包括:
[0056] 在对所述基于微服务的动力与环境监控系统进行系统版本升级后,当系统版本升级后的基于微服务的动力与环境监控系统存在故障时,通过所述系统版本控制模块将当前的系统版本切换至进行系统版本升级之前的系统版本。
[0057] 结合第二方面,本申请实施例提供了第二方面的第八种可能的实施方式,其中,所述数据获取请求和/或所述数据分析请求中的数据包括以下中的任意一种或多种:供电数据、供暖数据、供水数据、燃气数据以及各个设备所处的环境数据。
[0058] 本申请实施例提供的一种基于微服务的动力与环境监控系统及方法,其中该系统包括:流量接入层、至少一个业务网关、微服务模块、微服务注册中心;流量接入层,用于接收用户端发送的用户请求,以及根据配置策略,将用户请求发送至对应的业务网关;用户请求包括数据获取请求和/或数据分析请求;业务网关,用于对用户请求中携带的用户登录账号进行鉴权,判断用户登录账号是否有访问权限;以及在用户登录账号有访问权限时,根据用户请求中携带的请求内容,从微服务模块包含的各个微服务中确定出请求内容对应的目标微服务;微服务模块,用于从微服务注册中心中确定出目标微服务的微服务地址,以及通过该微服务地址访问目标微服务,使用目标微服务响应用户请求,并将请求结果发送至用户端。该实施例中,通过一个基于微服务的动力与环境监控系统管理所有的数据,有利于提高对数据管理的统一性;并且,用户只需从一个系统中获取各类数据,相比于分别从各个数据库中获取各个数据,该方式有利于提高用户使用数据的便捷程度。
[0059] 为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0060] 为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0061] 图1示出了本申请实施例所提供的一种基于微服务的动力与环境监控系统的结构示意图;
[0062] 图2示出了本申请实施例所提供的另一种微服务的动力与环境监控系统的结构示意图;
[0063] 图3示出了本申请实施例所提供的第三种微服务的动力与环境监控系统的结构示意图;
[0064] 图4示出了本申请实施例所提供的一种基于微服务的动力与环境监控方法的流程图。

具体实施方式

[0065] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0066] 考虑到供电、供暖、供水、燃气等数据缺乏统一的监控管理,数据使用/调用过程较为繁琐。基于此,本申请实施例提供了一种基于微服务的动力与环境监控系统及方法,以提高对数据管理的统一性,提高数据使用的便捷程度,下面通过实施例进行描述。
[0067] 实施例一:
[0068] 为便于对本实施例进行理解,首先对本申请实施例所公开的一种基于微服务的动力与环境监控系统进行详细介绍。图1示出了本申请实施例所提供的一种基于微服务的动力与环境监控系统的结构示意图,如图1所示,该系统包括:流量接入层、至少一个业务网关、微服务模块、微服务注册中心;
[0069] 流量接入层,用于接收用户端发送的用户请求,以及根据配置策略,将用户请求发送至对应的业务网关;用户请求包括数据获取请求和/或数据分析请求;
[0070] 业务网关,用于对用户请求中携带的用户登录账号进行鉴权,判断用户登录账号是否有访问权限;以及在用户登录账号有访问权限时,根据用户请求中携带的请求内容,从微服务模块包含的各个微服务中确定出请求内容对应的目标微服务;
[0071] 微服务模块,用于从微服务注册中心中确定出目标微服务的微服务地址,以及通过该微服务地址访问目标微服务,使用目标微服务响应用户请求,并将请求结果发送至用户端。
[0072] 在一种可能的实施方式中,数据获取请求和/或数据分析请求中的数据包括以下中的任意一种或多种:供电数据、供暖数据、供水数据、燃气数据以及各个设备所处的环境数据。
[0073] 其中,供电数据可以为开闭站和配电室电表数据,例如电表中的耗电量数据、电流、电压、功率等。供暖数据可以为锅炉房及换热站设备产生的数据,例如,锅炉房管道的压力变化数据、出水温度、出水压力、供热回路的回水温度等。供水数据可以为耗水量等。燃气数据可以为使用量等。各个设备所处的环境数据包括产生供电数据的供电设备、产生供暖数据的供暖设备、产生供水数据的供水设备以及产生燃气数据的燃气设备各自所处的环境数据。环境数据包括以下中的任意一种或多种:温度、湿度、水浸趋势、空气质量PM2.5污染指数、噪音分贝等。
[0074] 该实施例中,当用户想要使用供电数据、供暖数据、供水数据、燃气数据以及各个设备所处的环境数据中的任意一种或多种数据时,可以从基于微服务的动力与环境监控系统中获取。具体的,用户使用自身的用户端向基于微服务的动力与环境监控系统发送一个用户请求。该用户请求可以是数据获取请求和/或数据分析请求。例如,数据获取请求可以是获取电压数据的请求,数据分析请求可以是分析电压在一天内的波动情况。
[0075] 基于微服务的动力与环境监控系统中的流量接入层接收到用户端发送的用户请求后,根据预先设置的配置策略,将该用户请求发送至对应的业务网关中。
[0076] 在一种可能的实施方式中,当业务网关为一个时,将该用户请求发送至该业务网关的队列中。此时,业务网关可以依次对该队列中的各个用户请求进行处理。
[0077] 当业务网关为多个时,根据各个业务网关的处理能力和/或剩余负载,将用户请求发送至对应的业务网关。该实施例中,可以将用户请求发送至业务网关的处理能力强和/或剩余负载多的业务网关。其中,剩余负载指的是总负载减去当前负载。
[0078] 业务网关接收到用户请求后,对该用户请求中携带的用户登录账号进行鉴权,以判断用户登录账号是否已经注册于该基于微服务的动力与环境监控系统中,若已经注册,则表示该用户登录账号有访问权限;若未注册,则表示该用户登录账号没有访问权限。
[0079] 当用户登录账号没有访问权限时,业务网关向用户端返回访问失败的信息,以拒绝该用户端的请求。当用户登录账号有访问权限时,根据用户请求中携带的请求内容,从微服务模块包含的各个微服务中确定出请求内容对应的目标微服务。
[0080] 该实施例中,微服务模块中包含有多个微服务,微服务例如获取电压数据、获取电流数据、获取温度数据、分析湿度数据的变化趋势等等。示例性的,当用户请求中的请求内容为:获取供电设备所处环境的温度数据时,该请求内容对应的目标微服务可以为:获取温度数据的微服务。
[0081] 在确定出目标微服务后,微服务模块从微服务注册中心中确定出目标微服务的微服务地址。其中,微服务注册中心中注册有每个微服务各自对应的微服务地址。通过目标微服务的微服务地址访问目标微服务,使用目标微服务响应用户请求,并将请求结果发送至用户端。
[0082] 示例性的,当用户请求中的请求内容为获取供电设备所处环境的温度数据时,目标微服务为获取温度数据的微服务,此时,使用获取温度数据的微服务执行获取供电设备所处环境的温度数据这一用户请求。此时的请求结果为获取到的供电设备所处环境的温度数据。
[0083] 该实施例中,流量接入层具体可以采用Nginx,业务网关可以采用spring Cloud Gateway。
[0084] 在一种可能的实施方式中,图2示出了本申请实施例所提供的另一种微服务的动力与环境监控系统的结构示意图,如图2所示,该系统还包括:缓存组件;当用户请求为数据获取请求时,微服务模块在用于使用目标微服务响应用户请求时,具体用于:
[0085] 使用目标微服务访问缓存组件,判断缓存组件中是否缓存有数据获取请求对应的请求数据;当缓存组件中缓存有请求数据时,使用目标微服务从缓存组件中获取请求数据;当缓存组件中未缓存有请求数据时,使用目标微服务从数据库中获取数据获取请求对应的请求数据,并将获取到的请求数据缓存至缓存组件;
[0086] 缓存组件,用于缓存目标微服务从数据库中获取到的请求数据;以及监测缓存的各个请求数据是否超过该请求数据的有效日期;当超过有效日期时,将该请求数据从缓存组件中删除;每个请求数据的有效日期的长短与该请求数据的使用率呈正相关关系。
[0087] 该实施例中,考虑到数据库中存储有所有的数据,若直接从数据库中查询用户请求中对应的请求数据,查询速度较慢。因此,本实施例中,先从缓存组件中查询用户请求对应的请求数据,由于缓存组件中缓存的各个请求数据对应有各自的有效日期,在超过有效日期后会从缓存组件中删除,因此,缓存组件中包含的数据少于数据库中包含的数据,因此,通过先从缓存组件中查询用户请求对应的请求数据,若从缓存组件中查询到了用户请求对应的请求数据,则无需再去数据库中查询,有利于提高数据获取的速度。
[0088] 本实施例中,缓存组件具体可以为Redis组件。数据库具体可以为分布式数据库,分布式数据库中包含有多个子数据库,每个子数据库中存储有不同的数据。例如,子数据库A中存储有供电数据、子数据库B中存储有供暖数据,子数据库C中存储有供水数据,子数据库D中存储有环境数据、子数据库E中存储有各个设备的图片、音频数据、视频数据等等。
[0089] 请求数据的有效日期的长短与该请求数据的使用率呈正相关关系指的是,请求数据的使用率越高,请求数据的有效日期越长;请求数据的使用率越低,请求数据的有效日期越短。
[0090] 在一种可能的实施方式中,图3示出了本申请实施例所提供的第三种微服务的动力与环境监控系统的结构示意图,如图3所示,该系统还包括:分布式锁;用户请求中包含有多个子请求;每个子请求对应各自的目标微服务;
[0091] 分布式锁,用于判断同一用户请求中的各个子请求各自对应的目标微服务在响应子请求时是否均响应成功;当均响应成功时,微服务模块将包含各个子请求结果的请求结果发送至用户端;当存在至少一个子请求未响应成功时,微服务模块向用户端发送用于表示请求响应失败的提示信息。
[0092] 示例性的,当用户请求为请求获取电表中的电压数据、耗电量数据,以及电表所处的环境的湿度数据时,子请求a为获取电表中的电压数据、子请求b为请求获取电表中的耗电量数据、子请求c为请求获取电表所处的环境的湿度数据。
[0093] 此时,当子请求a、b、c均响应成功时,请求结果中包含子请求a的子请求结果a1、子请求b的子请求结果b1、子请求c的子请求结果c1。当子请求a、b、c中只要存在至少一个子请求未响应成功时,则微服务模块向用户端发送用于表示请求响应失败的提示信息。
[0094] 在一种可能的实施方式中,该系统还包括:日志;
[0095] 日志,用于记录流量接入层接收到的各个用户请求,以及业务网关对各个用户请求的鉴权结果,以及微服务模块针对各个用户请求的请求结果。
[0096] 其中,可以使用ELK来做日志。此时,用户请求还包括日志获取请求。
[0097] 在一种可能的实施方式中,该系统还包括任务调度中心;当用户请求为周期性的数据获取请求时,任务调度中心,用于:
[0098] 周期性调用微服务模块,以使微服务模块周期性通过该用户请求对应的微服务地址访问该用户请求对应的目标微服务,以及周期性使用该目标微服务响应该用户请求,周期性的将当前的请求结果发送至用户端。
[0099] 示例性的,当周期性的数据获取请求为在11点‑12点这一时间段,每隔15分钟获取一次电压数据时,那么,该用户请求对应的目标微服务为获取电压数据的微服务。此时,在11点使用该目标微服务执行获取电压数据,并在11点将当前时刻获取到的电压数据发送至用户端。然后在11点15使用该目标微服务执行获取电压数据,在11点15将当前时刻获取到的电压数据发送至用户端。再在11点半使用该目标微服务执行获取电压数据,在11点半将当前时刻获取到的电压数据发送至用户端。最后在12点使用该目标微服务执行获取电压数据,在12点将当前时刻获取到的电压数据发送至用户端。
[0100] 该实施例中,周期性调用微服务模块具体可以为Elastic‑Job、XXL‑JOB等。
[0101] 在一种可能的实施方式中,微服务模块在用于使用目标微服务响应用户请求时,具体用于:
[0102] 目标微服务根据用户请求中携带的请求内容,调用预设的SQL语句;
[0103] 对预设的SQL语句进行格式化预处理,得到第一SQL语句;
[0104] 使用SQL解析器对第一SQL语句进行解析,得到目标SQL语句;
[0105] 目标微服务使用SQL语句响应用户请求。
[0106] 在一种可能的实施方式中,该系统还包括系统版本控制模块;
[0107] 系统版本控制模块,用于在对基于微服务的动力与环境监控系统进行系统版本升级后,当系统版本升级后的基于微服务的动力与环境监控系统存在故障时,将当前的系统版本切换至进行系统版本升级之前的系统版本。
[0108] 实施例二:
[0109] 基于相同的技术构思,本申请还提供了一种基于微服务的动力与环境监控方法,该方法应用于基于微服务的动力与环境监控系统,基于微服务的动力与环境监控包括:流量接入层、至少一个业务网关、微服务模块、微服务注册中心,图4示出了本申请实施例所提供的一种基于微服务的动力与环境监控方法的流程图,如图4所示,该方法包括步骤S401‑S404:
[0110] S401:通过所述流量接入层接收用户端发送的用户请求,以及根据配置策略,将所述用户请求发送至对应的业务网关;所述用户请求包括数据获取请求和/或数据分析请求;
[0111] S402:通过所述业务网关对所述用户请求中携带的用户登录账号进行鉴权,判断所述用户登录账号是否有访问权限;
[0112] S403:在所述用户登录账号有访问权限时,所述业务网关根据所述用户请求中携带的请求内容,从所述微服务模块包含的各个微服务中确定出所述请求内容对应的目标微服务;
[0113] S404:通过所述微服务模块从所述微服务注册中心中确定出所述目标微服务的微服务地址,以及通过该微服务地址访问所述目标微服务,使用所述目标微服务响应所述用户请求,并将请求结果发送至所述用户端。
[0114] 在一种可能的实施方式中,所述系统还包括:缓存组件;当所述用户请求为所述数据获取请求时,在执行步骤S404使用所述目标微服务响应所述用户请求时,具体可以通过以下步骤执行:
[0115] 使用所述目标微服务访问所述缓存组件,判断所述缓存组件中是否缓存有所述数据获取请求对应的请求数据;
[0116] 当所述缓存组件中缓存有所述请求数据时,使用所述目标微服务从所述缓存组件中获取所述请求数据;
[0117] 当所述缓存组件中未缓存有所述请求数据时,使用所述目标微服务从数据库中获取所述数据获取请求对应的请求数据,并将获取到的请求数据缓存至所述缓存组件;
[0118] 通过所述缓存组件缓存所述目标微服务从所述数据库中获取到的请求数据;以及监测缓存的各个请求数据是否超过该请求数据的有效日期;
[0119] 当超过所述有效日期时,将该请求数据从所述缓存组件中删除;每个所述请求数据的有效日期的长短与该请求数据的使用率呈正相关关系。
[0120] 在一种可能的实施方式中,所述系统还包括:分布式锁;所述用户请求中包含有多个子请求;每个所述子请求对应各自的目标微服务;所述方法还包括:
[0121] 通过所述分布式锁判断同一所述用户请求中的各个子请求各自对应的目标微服务在响应子请求时是否均响应成功;
[0122] 当均响应成功时,所述微服务模块将包含各个子请求结果的请求结果发送至所述用户端;
[0123] 当存在至少一个子请求未响应成功时,所述微服务模块向所述用户端发送用于表示请求响应失败的提示信息。
[0124] 在一种可能的实施方式中,所述系统还包括:日志;所述方法还包括:
[0125] 通过所述日志记录所述流量接入层接收到的各个所述用户请求,以及所述业务网关对各个所述用户请求的鉴权结果,以及所述微服务模块针对各个所述用户请求的请求结果。
[0126] 在一种可能的实施方式中,所述系统还包括任务调度中心;当所述用户请求为周期性的数据获取请求时,所述方法还包括:
[0127] 通过所述任务调度中心周期性调用所述微服务模块,以使所述微服务模块周期性通过该用户请求对应的微服务地址访问该用户请求对应的目标微服务,以及周期性使用该目标微服务响应该用户请求,周期性的将当前的请求结果发送至所述用户端。
[0128] 在一种可能的实施方式中,在执行步骤S401通过所述流量接入层接收用户端发送的用户请求,以及根据配置策略,将所述用户请求发送至对应的业务网关时,具体可以通过以下步骤执行:
[0129] 当所述业务网关为一个时,将所述用户请求发送至所述业务网关的队列中;
[0130] 当所述业务网关为多个时,根据各个业务网关的处理能力和/或剩余负载,将所述用户请求发送至对应的业务网关。
[0131] 在一种可能的实施方式中,在执行步骤S404使用所述目标微服务响应所述用户请求时,具体可以通过以下步骤执行:
[0132] 所述目标微服务根据所述用户请求中携带的所述请求内容,调用预设的SQL语句;
[0133] 对预设的SQL语句进行格式化预处理,得到第一SQL语句;
[0134] 使用SQL解析器对所述第一SQL语句进行解析,得到目标SQL语句;
[0135] 所述目标微服务使用所述SQL语句响应所述用户请求。
[0136] 在一种可能的实施方式中,所述系统还包括系统版本控制模块;所述方法还包括:
[0137] 在对所述基于微服务的动力与环境监控系统进行系统版本升级后,当系统版本升级后的基于微服务的动力与环境监控系统存在故障时,通过所述系统版本控制模块将当前的系统版本切换至进行系统版本升级之前的系统版本。
[0138] 在一种可能的实施方式中,所述数据获取请求和/或所述数据分析请求中的数据包括以下中的任意一种或多种:供电数据、供暖数据、供水数据、燃气数据以及各个设备所处的环境数据。
[0139] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的方法的具体工作过程,可以参考前述系统实施例中的对应过程,在此不再赘述。
[0140] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0141] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0142] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0143] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0144] 最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。