分布式存储的命令行服务方法、系统、终端及存储介质与流程

文档序号:24184554发布日期:2021-03-09 13:18阅读:123来源:国知局
分布式存储的命令行服务方法、系统、终端及存储介质与流程

1.本发明涉及分布式存储系统技术领域,具体涉及一种分布式存储的命令行服务方法、系统、终端及存储介质。


背景技术:

2.gui(图形用户界面)、cli(命令行界面)作为大型集群系统常用的接口形式,一直是各种存储系统或者集群的标配。在大规模存储系统上,紧紧贴随linux服务器操作系统针对存储软件cli接口已是各个厂商标配的产品配置项,也是存储不可或缺的一部分。
3.当前cli接口多基于操作系统进行且以脚本形式呈现,按照对应的cli命名及命令传递到系统内部,然后将系统执行结果传递出来呈现给用户。这种方式在单机系统内部可以广泛应用,但在大规模存储集群上却表现差强人意,存在主要问题如下:
4.rpc远程命令调用实现复杂,且总是作用于集群主节点,当大批量cli请求同时下发,主节点压力过大,系统负载过高,不利于集群稳定运行。
5.cli命令实现缺少管理及服务化功能,新增命令时通过堆砌命令定义代码实现具体逻辑,冗杂而繁琐;且命令形式难于记忆,往往需要维护帮助手册且提供详细实操指南来引导用户使用,上手成本较高。
6.从编程实现角度来讲,cli实现中的参数定义、help文档实现、参数依赖关系约束、权限管理、异常处理机制等各模块间耦合度较高,不利于对于“高内聚、低耦合”的软件能力及质量建设。


技术实现要素:

7.针对现有技术的上述不足,本发明提供一种分布式存储的命令行服务方法、系统、终端及存储介质,以解决上述技术问题。
8.第一方面,本发明提供一种分布式存储的命令行服务方法,包括:
9.将接收的用户命令行请求按预设格式转换为命令码,并对所述命令码进行校验,将通过校验的命令命令码作为消息事件发生至任务队列;
10.从存储系统集群中识别监听节点,建立主监听节点与其他节点的订阅关系,并通过在所有监听节点上启动定时同步线程监听并备份所述任务队列;
11.从所述任务队列中依次提取消息事件,对所述消息事件进行解析并将解析后的消息事件发送至目标节点进行处理。
12.进一步的,所述将接收的用户命令行请求按预设格式转换为命令码,并对所述命令码进行校验,包括:
13.加载已完成定义配置的命令行模板库文件和预先设置的各种命令行命令的对应命令码;
14.通过匹配查找方法将用户命令行请求转换为命令码;
15.校验所述用户命令行请求的用户名权限与命令码权限是否匹配,若不匹配则提示
无权限错误码;
16.根据所述命令码和命令行模板库文件中的参数依赖配置校验下发的命令行参数合法性。
17.进一步的,所述从存储系统集群中识别监听节点,建立主监听节点与其他节点的订阅关系,并通过在所有监听节点上启动定时同步线程监听并备份所述任务队列,包括:
18.在集群各节点初始化所述任务队列;
19.获取集群的所有节点信息,并对监听节点进行标记,所述监听节点包括主监听节点和子监听节点;
20.在所有监听节点上启动定时同步线程,所述定时同步线程监听任务队列的数据变化,若监听到存在数据更新,则将更新的数据备份至监听节点本地;
21.若存在故障监听节点,则将本地备份配置中的队列数据加载至切换的目标监听节点内存进行处理。
22.进一步的,所述从任务队列中依次提取消息事件,对所述消息事件进行解析并将解析后的消息事件发送至目标节点进行处理,包括:
23.建立多个工作线程锁定所述任务队列;
24.所述多个工作线程依次从所述任务队列中提取消息事件,并从提取的消息事件中解析命令行请求内容;
25.根据所述命令行请求内容计算命令行请求的等待时间,并根据所述等待时间判断所述命令行请求是否超期,若已超期则输出请求超时错误码;
26.根据所述命令行请求内容获取所述命令行请求的目标节点,将所述命令行请求发送至目标节点的服务队列中等待目标节点进行处理;
27.目标节点解析命令行请求并根据所述命令行请求的命令在当前节点执行相应的业务逻辑,所述目标节点将执行结果回填至结果记录字段,并将所述记录字段标记信息id后发送至主服务节点;
28.所述主服务节点根据记录字段的标记对记录字段进行整理,并将整理结果发送至用户。
29.第二方面,本发明提供一种分布式存储的命令行服务系统,包括:
30.定义解析单元,配置用于将接收的用户命令行请求按预设格式转换为命令码,并对所述命令码进行校验,将通过校验的命令命令码作为消息事件发生至任务队列;
31.服务订阅单元,配置用于从存储系统集群中识别监听节点,建立主监听节点与其他节点的订阅关系,并通过在所有监听节点上启动定时同步线程监听并备份所述任务队列;
32.服务处理单元,配置用于从所述任务队列中依次提取消息事件,对所述消息事件进行解析并将解析后的消息事件发送至目标节点进行处理。
33.进一步的,所述定义解析单元包括:
34.文件加载模块,配置用于加载已完成定义配置的命令行模板库文件和预先设置的各种命令行命令的对应命令码;
35.命令转换模块,配置用于通过匹配查找方法将用户命令行请求转换为命令码;
36.权限校验模块,配置用于校验所述用户命令行请求的用户名权限与命令码权限是
否匹配,若不匹配则提示无权限错误码;
37.合法校验模块,配置用于根据所述命令码和命令行模板库文件中的参数依赖配置校验下发的命令行参数合法性。
38.进一步的,所述服务订阅单元包括:
39.队列处理模块,配置用于在集群各节点初始化所述任务队列;
40.节点标记模块,配置用于获取集群的所有节点信息,并对监听节点进行标记,所述监听节点包括主监听节点和子监听节点;
41.队列监听模块,配置用于在所有监听节点上启动定时同步线程,所述定时同步线程监听任务队列的数据变化,若监听到存在数据更新,则将更新的数据备份至监听节点本地;
42.故障切换模块,配置用于若存在故障监听节点,则将本地备份配置中的队列数据加载至切换的目标监听节点内存进行处理。
43.进一步的,所述服务处理单元包括:
44.线程建立模块,配置用于建立多个工作线程锁定所述任务队列;
45.事件提取模块,配置用于所述多个工作线程依次从所述任务队列中提取消息事件,并从提取的消息事件中解析命令行请求内容;
46.超期验证模块,配置用于根据所述命令行请求内容计算命令行请求的等待时间,并根据所述等待时间判断所述命令行请求是否超期,若已超期则输出请求超时错误码;
47.请求发送模块,配置用于根据所述命令行请求内容获取所述命令行请求的目标节点,将所述命令行请求发送至目标节点的服务队列中等待目标节点进行处理;
48.结果记录模块,配置用于目标节点解析命令行请求并根据所述命令行请求的命令在当前节点执行相应的业务逻辑,所述目标节点将执行结果回填至结果记录字段,并将所述记录字段标记信息id后发送至主服务节点;
49.结果整理模块,配置用于所述主服务节点根据记录字段的标记对记录字段进行整理,并将整理结果发送至用户。
50.第三方面,提供一种终端,包括:
51.处理器、存储器,其中,
52.该存储器用于存储计算机程序,
53.该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
54.第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
55.本发明的有益效果在于,
56.本发明提供的分布式存储的命令行服务方法、系统、终端及存储介质,不仅可以使命令行功能自适应地与分布式存储机制相吻合,而且利于存储集群节点间负载均衡,在一定程度上降低了集群主节点的负载压力,提高了系统的并发处理能力;同时,对于开发框架而言,将命令行接口及实现服务化实现,降低开发过程中的cli定义、实现、数据传递间的耦合度,利于整体开发框架的完整性和易用性。
57.此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
58.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
59.图1是本发明一个实施例的方法的示意性流程图。
60.图2是本发明一个实施例的方法的定义解析过程的示意性流程图。
61.图3是本发明一个实施例的系统的示意性框图。
62.图4为本发明实施例提供的一种终端的结构示意图。
具体实施方式
63.为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
64.下面对本发明中出现的关键术语进行解释。
65.gui(graphical user interface):图形用户界面,采用图形方式显示的计算机操作用户界面,是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。
66.cli(command-line interface):命令行界面,是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。
67.rpc(remote procedure call):远程过程调用,像调用本地的函数一样去调远程函数。通常可理解为从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
68.图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种分布式存储的命令行服务系统。
69.如图1所示,该方法包括:
70.步骤110,将接收的用户命令行请求按预设格式转换为命令码,并对所述命令码进行校验,将通过校验的命令命令码作为消息事件发生至任务队列;
71.步骤120,从存储系统集群中识别监听节点,建立主监听节点与其他节点的订阅关系,并通过在所有监听节点上启动定时同步线程监听并备份所述任务队列;
72.步骤130,从所述任务队列中依次提取消息事件,对所述消息事件进行解析并将解析后的消息事件发送至目标节点进行处理。
73.具体的,所述分布式存储的命令行服务方法包括:
74.s1、如图2所示,将接收的用户命令行请求按预设格式转换为命令码,并对所述命令码进行校验,将通过校验的命令命令码作为消息事件发生至任务队列。
75.step1:加载已完成定义配置的所有cli模板库文件,并完成所有cli命令码的初始化操作,并等待接收来自用户的cli命令请求。
76.step2:收到用户的cli命令后,通过模式匹配后获取该命令的命令码,然后转下一步。
77.step3:按照用户名权限和命令码权限定义校验该用户是否具有该命令的请求权限,如果校验通过则转下一步,否则抛出无权限错误码。
78.step4:根据命令码和参数依赖配置校验下发cli参数合法性,如果校验通过则转下一步,否则抛出无该命令错误码。
79.step5:将该cli字符串拆解,按照约定格式定义封装成json格式的cli服务消息事件ismcliitem。
80.step6:将生成的ismcliitem消息事件发送至cli服务订阅模块的ismcliqueue队列中,待下个模块做进一步处理。
81.一般地,ismcliitem定义数据结构如表1所示:
82.表1 ismcliitem定义数据结构表
[0083][0084]
其中,clicode三段式八位数字码具体定义如下:
[0085][0086]
第一段:一位,标识业务操作大类,从0

9,10个类别,
[0087]
预设0
---
硬件;1
---
系统;2
---
存储;其余部分预留扩展。
[0088]
第二段:三位,标识子系统业务模块代码,从001

999,1000个,如告警子系统、分布式文件存储子系统、分布式块存储子系统、分布式对象存储子系统、缓存子系统、监控子系统、集群服务子系统等。
[0089]
第三段:四位,标识各子系统具体业务功能码,从0001

9999,10000个,如分布式块存储子系统的逻辑卷创建、删除、查询等具体业务功能。
[0090]
例如,一个完整的例子,分布式块存储的逻辑卷创建功能的命令码为:2 0031001
[0091]
s2、从存储系统集群中识别监听节点,建立主监听节点与其他节点的订阅关系,并通过在所有监听节点上启动定时同步线程监听并备份所述任务队列。
[0092]
step1:集群各个节点初始化命令行服务消息队列ismcliqueue。
[0093]
step2:获取集群所有节点信息,标记出mon节点(监听节点)(包括主mon节点)和普通节点。(与分布式存储mon节点深度绑定)
[0094]
step3:建立主mon节点与其他所有节点的订阅关系,转下一步。
[0095]
step4:在集群所有mon节点上启动定时同步线程,并监听ismcliqueue数据变化,如果发现ismcliqueue数据发生变化,则转下一步;否则继续保持监听。
[0096]
step5:将ismcliqueue数据队列在所有mon节点间持久化(在本地保持副本,故障恢复使用);当发生节点故障切换时,自动从持久化配置中加载队列数据至内存进行处理。
[0097]
step6:判断len(ismcliqueue)+len(newdata)>=1024,如果满足,则将ismcliqueue队列扩容一倍。
[0098]
s3、从所述任务队列中依次提取消息事件,对所述消息事件进行解析并将解析后的消息事件发送至目标节点进行处理。
[0099]
step1:在启动后,根据配置建立若干个工作线程(默认3个,不超过64)。
[0100]
step2:当前工作线程按照调度测试启动后,锁定命令行服务队列ismcliqueue。
[0101]
step3:从ismcliqueue中取出一个命令操作消息事件ismcliitem,并解析对应的cli请求内容,然后转下一步。
[0102]
step4:根据解析结果,获取消息数据,按照过期时间判断请求是否失效(网络异常或者节点故障易出现失效问题),如果超过过期时间,则抛出系统请求超时错误码,及请稍微重试提示语,并将该ismcliitem从ismcliqueue中移除;否则转下一步。
[0103]
step5:获取该cli请求的dstnode信息,判断当前所在节点是否与dstnode相同,如果不同,则将该ismcliitem发送至dstnode节点的命令行服务队列中,由dstnode进行处理;否则,如果节点相同,则转下一步。
[0104]
step6:解析ismcliitem,根据clicode在当前节点执行相应的业务逻辑,并将执行结果回填至ismcliitem result字段,同时标记state/end_time等字段,并根据msgid将该ismcliitem结果返回发送给主sysmgt-cli服务节点的ismcliqueue中,然后dstnode从队列中删除该已完成的ismcliitem,然后转下一步。
[0105]
step7:主节点ismcliqueue按照msgid整理dstnode节点(如果是all时,对应所有节点)发送回来的结果数据,并将结果回显给用户。
[0106]
step8:释放命令行服务队列ismcliqueue。
[0107]
综上所述,cli定义解析单元负责命令行基本概念定义、约束等功能的数据处理和
逻辑校验;cli服务订阅单元负责建立主节点与从节点间的cli服务订阅关系,将cli请求数据或者整理的结果响应数据封装、消息数据打包,并维护在ismclientqueue队列中,进行出队入队操作来实现数据请求和响应,并提供定时同步线程主动备份队列数据,提供异常容错能力;cli服务处理单元负责解码、更新、封装命令行服务队列ismcliqueue中的消息事件,并将响应数据主动推送到主节点服务队列中;三个单元有机结合、相互作用形成了一种分布式存储集群中的命令行服务化方法。
[0108]
如图2所示,本实施例提供的系统由定义解析单元、服务订阅单元、服务处理单元组成,部署于分布式存储集群中。用户通过shell和集群网络与本发明进行通信交互。在本发明的系统的三个单元是通过异步消息通道进行数据通信和交互的。具体的,该系统包括:
[0109]
定义解析单元,配置用于将接收的用户命令行请求按预设格式转换为命令码,并对所述命令码进行校验,将通过校验的命令命令码作为消息事件发生至任务队列;
[0110]
服务订阅单元,配置用于从存储系统集群中识别监听节点,建立主监听节点与其他节点的订阅关系,并通过在所有监听节点上启动定时同步线程监听并备份所述任务队列;
[0111]
服务处理单元,配置用于从所述任务队列中依次提取消息事件,对所述消息事件进行解析并将解析后的消息事件发送至目标节点进行处理。
[0112]
可选地,作为本发明一个实施例,所述定义解析单元包括:
[0113]
文件加载模块,配置用于加载已完成定义配置的命令行模板库文件和预先设置的各种命令行命令的对应命令码;
[0114]
命令转换模块,配置用于通过匹配查找方法将用户命令行请求转换为命令码;
[0115]
权限校验模块,配置用于校验所述用户命令行请求的用户名权限与命令码权限是否匹配,若不匹配则提示无权限错误码;
[0116]
合法校验模块,配置用于根据所述命令码和命令行模板库文件中的参数依赖配置校验下发的命令行参数合法性。
[0117]
可选地,作为本发明一个实施例,所述服务订阅单元包括:
[0118]
队列处理模块,配置用于在集群各节点初始化所述任务队列;
[0119]
节点标记模块,配置用于获取集群的所有节点信息,并对监听节点进行标记,所述监听节点包括主监听节点和子监听节点;
[0120]
队列监听模块,配置用于在所有监听节点上启动定时同步线程,所述定时同步线程监听任务队列的数据变化,若监听到存在数据更新,则将更新的数据备份至监听节点本地;
[0121]
故障切换模块,配置用于若存在故障监听节点,则将本地备份配置中的队列数据加载至切换的目标监听节点内存进行处理。
[0122]
可选地,作为本发明一个实施例,所述服务处理单元包括:
[0123]
线程建立模块,配置用于建立多个工作线程锁定所述任务队列;
[0124]
事件提取模块,配置用于所述多个工作线程依次从所述任务队列中提取消息事件,并从提取的消息事件中解析命令行请求内容;
[0125]
超期验证模块,配置用于根据所述命令行请求内容计算命令行请求的等待时间,并根据所述等待时间判断所述命令行请求是否超期,若已超期则输出请求超时错误码;
[0126]
请求发送模块,配置用于根据所述命令行请求内容获取所述命令行请求的目标节点,将所述命令行请求发送至目标节点的服务队列中等待目标节点进行处理;
[0127]
结果记录模块,配置用于目标节点解析命令行请求并根据所述命令行请求的命令在当前节点执行相应的业务逻辑,所述目标节点将执行结果回填至结果记录字段,并将所述记录字段标记信息id后发送至主服务节点;
[0128]
结果整理模块,配置用于所述主服务节点根据记录字段的标记对记录字段进行整理,并将整理结果发送至用户。
[0129]
图4为本发明实施例提供的一种终端400的结构示意图,该终端400可以用于执行本发明实施例提供的分布式存储的命令行服务方法。
[0130]
其中,该终端400可以包括:处理器410、存储器420及通信单元430。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0131]
其中,该存储器420可以用于存储处理器410的执行指令,存储器420可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器420中的执行指令由处理器410执行时,使得终端400能够执行以下上述方法实施例中的部分或全部步骤。
[0132]
处理器410为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integrated circuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器410可以仅包括中央处理器(central processing unit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。
[0133]
通信单元430,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
[0134]
本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:rom)或随机存储记忆体(英文:random access memory,简称:ram)等。
[0135]
因此,本发明不仅可以使命令行功能自适应地与分布式存储机制相吻合,而且利于存储集群节点间负载均衡,在一定程度上降低了集群主节点的负载压力,提高了系统的并发处理能力;同时,对于开发框架而言,将命令行接口及实现服务化实现,降低开发过程中的cli定义、实现、数据传递间的耦合度,利于整体开发框架的完整性和易用性,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
[0136]
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在
一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
[0137]
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
[0138]
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0139]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0140]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0141]
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1