通过SFTP数据流与对象存储服务器的通信方法技术

技术编号:25126232 阅读:22 留言:0更新日期:2020-08-05 02:55
本发明专利技术涉及通过SFTP数据流与对象存储服务器的通信方法,包括步骤:A.通过SFTP Transporter模块监听指定的TCP协议通信端口,等待客户端连接;B.客户端发送连接请求和SFTP Transporter模块建立连接;C.SFTP Transporter模块将客户端的命令传递给SFTP Command Dispatcher模块并分发给对应的命令处理器;D.通过命令处理器调用对象存储服务器中容器集群管理系统的Driver使对象存储服务器对命令进行响应,并返回给客户端。本发明专利技术能够在对用户透明的情况下通过SFTP数据流操作对象存储服务器,而且对现有系统没有侵入性,不需要修改系统代码。

【技术实现步骤摘要】
通过SFTP数据流与对象存储服务器的通信方法
本专利技术涉及数据流的通信方法,具体讲是通过SFTP数据流与对象存储服务器的通信方法。
技术介绍
SFTP(SecretFileTransferProtocol)是一种基于安全文件传送协议的数据流连接方式,能够提供文件访问、传输和管理功能的网络传输协议等功能。对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。像文件一样,对象包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。文件和对象都有与它们所包含的数据相关的元数据,但是对象是以扩展元数据为特征的。每个对象都被分配一个唯一的标识符,允许一个服务器或者最终用户来检索对象,而不必知道数据的物理地址。这种方法对于在云计算环境中自动化和简化数据存储有帮助。常见的对象存储服务器包括有阿里云的对象存储、七牛的对象存储、AWS的对象存储等。在现有技术中,用户不能通过SFTP数据流来操作对象存储服务器,只能通过SFTP数据流在操作文件服务器等块存储服务器,或者通过SDK、API来操作对象存储服务器。由于块存储服务器是直接使用硬盘或用需要通过NAS等协议将数据封装后才能处理,对象存储屏蔽了具体存储格式,对外提供存储接口,因此对象存储相比块存储具有更灵活、更便利的优点。因此,如何通过SFTP数据流来操作对象存储服务器是一个需要解决的技术难题。专利技术内容本专利技术提供了一种通过SFTP数据流与对象存储服务器的通信方法,通过SFTP数据流操作对象存储服务器,以可以利用对象存储大数据量、高可用和高并发的特点。本专利技术通过SFTP数据流与对象存储服务器的通信方法,包括步骤:A.通过SFTPTransporter模块监听指定的TCP协议通信端口,等待SFTP客户端连接;B.SFTPTransporter模块根据SFTP客户端发送的连接请求和SFTP客户端建立连接;C.SFTP客户端发送SFTP命令给对应的SFTPTransporter模块,SFTPTransporter模块将接收到的SFTP命令传递给SFTPCommandDispatcher模块,SFTPCommandDispatcher模块根据SFTP命令映射表找到对应的命令处理器后,将该SFTP命令分发给对应的命令处理器,所述的SFTP命令至少包括LIST命令、GET命令和PUT命令;D.命令处理器接中对应的CommandHandler收到SFTP命令后,通过命令处理器的ObjectStoreAdapter模块调用对象存储服务器中容器集群管理系统的Driver,所述Driver通过HTTP协议发送SFTP命令到对象存储服务器的处理模块对SFTP命令进行响应,再依次通过所述的Driver、ObjectStoreAdapter模块、CommandHandler、SFTPCommandDispatcher模块和SFTPTransporter模块,将对象存储服务器的响应返回给所述的SFTP客户端。通过本专利技术的通信方法,能够在对用户透明的情况下,使用对象存储替换了现有的块存储,让用户在无需修改代码和使用习惯的情况下,获得了对象存储的大数据量、高可用、高并发的优势。进一步的,步骤B中,当SFTP客户端发送的连接请求给SFTPTransporter模块后,SFTPTransporter模块创建Socket连接,并返回认证要求;SFTP客户端收到所述认证要求后,发送sshkey给SFTPTransporter模块,SFTPTransporter模块对其中的key进行验证,如果验证通过,创建相应的session并连接成功;如果验证失败,返回失败信息。进一步的,步骤C中,SFTPTransporter模块将接收到的SFTP命令传递给SFTPCommandDispatcher模块后,SFTPCommandDispatcher模块解析该SFTP命令,如果该SFTP命令不是合法的,SFTPCommandDispatcher模块则通知SFTPTransporter模块返回异常信息给SFTP客户端,SFTPTransporter模块删除当前session,并断开与SFTP客户端的连接;如果该SFTP命令是合法的,SFTPCommandDispatcher模块再根据SFTP命令映射表找到对应的命令处理器和分发SFTP命令。具体的,所述的LIST命令用于列出当前目录下的所有文件和目录,步骤D中,命令处理器中的LISTCommandHandler接收到LIST命令后,调用ObjectStoreAdapter模块的LIST方法,通过ObjectStoreAdapter模块的LIST方法委托对象存储服务器中容器集群管理系统的Driver的LIST方法,所述Driver通过HTTP协议发送GET请求到对象存储服务器的处理模块对GET请求进行响应,对象存储服务器响应后返回当前目录下的文件和目录列表;所述Driver获取到对象存储服务器的响应后,再解析HTTPResponse,将响应的消息体取出并序列化为字符串,然后返回给ObjectStoreAdapter模块,ObjectStoreAdapter模块再将所述字符串返回给LISTCommandHandler,LISTCommandHandler通过SFTPTransporter模块将字符串返回给SFTP客户端。具体的,所述的GET命令用于下载指定的文件,步骤D中,LISTCommandHandler接收到GET命令后,调用ObjectStoreAdapter模块的GET方法,通过ObjectStoreAdapter的GET方法委托对象存储服务器中容器集群管理系统的Driver的GET方法,所述Driver通过HTTP协议发送GET请求到对象存储服务器的处理模块进行HTTP响应,响应后的HTTPBody为通过下载的文件生成的输出流;所述Driver获取到对象存储服务器的响应后,在临时目录下新建临时文件,再将获取的所述输出流写入该临时文件,再通过ObjectStoreAdapter模块将该临时文件返回给GETCommandHandler,GETCommandHandler通过SFTPTransporter模块将临时文件的内容序列化为SFTP协议格式发送给SFTP客户端。具体的,所述的PUT命令用于上传文件,步骤D中,PUTCommandHandler接收到PUT命令之后,调用ObjectStoreAdapter模块的PUT方法,ObjectStoreAdapter模块的PUT方法根据接收到的SFTP客户端传输来的文件流,在临时目录下创建临时文件,将所述文件流输出到临时文件中,然后再调用对象存储服务器中容器集群管理系统的Driver的PUT方法,将临时文件作为输入,发送给对象存储服务器的处理模块,对象存储服务器的处理模块收到该临时文件后在对应的目录下本文档来自技高网...

【技术保护点】
1.通过SFTP数据流与对象存储服务器的通信方法,其特征为,包括步骤:/nA.通过SFTP Transporter模块监听指定的TCP协议通信端口,等待SFTP客户端连接;/nB.SFTP Transporter模块根据SFTP客户端发送的连接请求和SFTP客户端建立连接;/nC.SFTP客户端发送SFTP命令给对应的SFTP Transporter模块,SFTP Transporter模块将接收到的SFTP命令传递给SFTP Command Dispatcher模块,SFTP Command Dispatcher模块根据SFTP命令映射表找到对应的命令处理器后,将该SFTP命令分发给对应的命令处理器,所述的SFTP命令至少包括LIST命令、GET命令和PUT命令;/nD.命令处理器接中对应的Command Handler收到SFTP命令后,通过命令处理器的Object Store Adapter模块调用对象存储服务器中容器集群管理系统的Driver,所述Driver通过HTTP协议发送SFTP命令到对象存储服务器的处理模块对SFTP命令进行响应,再依次通过所述的Driver、Object Store Adapter模块、Command Handler、SFTP CommandDispatcher模块和SFTP Transporter模块,将对象存储服务器的响应返回给所述的SFTP客户端。/n...

【技术特征摘要】
1.通过SFTP数据流与对象存储服务器的通信方法,其特征为,包括步骤:
A.通过SFTPTransporter模块监听指定的TCP协议通信端口,等待SFTP客户端连接;
B.SFTPTransporter模块根据SFTP客户端发送的连接请求和SFTP客户端建立连接;
C.SFTP客户端发送SFTP命令给对应的SFTPTransporter模块,SFTPTransporter模块将接收到的SFTP命令传递给SFTPCommandDispatcher模块,SFTPCommandDispatcher模块根据SFTP命令映射表找到对应的命令处理器后,将该SFTP命令分发给对应的命令处理器,所述的SFTP命令至少包括LIST命令、GET命令和PUT命令;
D.命令处理器接中对应的CommandHandler收到SFTP命令后,通过命令处理器的ObjectStoreAdapter模块调用对象存储服务器中容器集群管理系统的Driver,所述Driver通过HTTP协议发送SFTP命令到对象存储服务器的处理模块对SFTP命令进行响应,再依次通过所述的Driver、ObjectStoreAdapter模块、CommandHandler、SFTPCommandDispatcher模块和SFTPTransporter模块,将对象存储服务器的响应返回给所述的SFTP客户端。


2.如权利要求1所述的通过SFTP数据流与对象存储服务器的通信方法,其特征为:步骤B中,当SFTP客户端发送的连接请求给SFTPTransporter模块后,SFTPTransporter模块创建Socket连接,并返回认证要求;SFTP客户端收到所述认证要求后,发送sshkey给SFTPTransporter模块,SFTPTransporter模块对其中的key进行验证,如果验证通过,创建相应的session并连接成功;如果验证失败,返回失败信息。


3.如权利要求2所述的通过SFTP数据流与对象存储服务器的通信方法,其特征为:步骤C中,SFTPTransporter模块将接收到的SFTP命令传递给SFTPCommandDispatcher模块后,SFTPCommandDispatcher模块解析该SFTP命令,如果该SFTP命令不是合法的,SFTPCommandDispatcher模块则通知SFTPTransporter模块返回异常信息给SFTP客户端,SFTPTransporter模块删除当前session,并断开与SFTP客户端的连接;如果该SFTP命令是合法的,SFTPCommandDispatcher模块再根据SFTP命令映射表找到对应的命令处理器和分发SFTP命令。


4.如权利要求1至3...

【专利技术属性】
技术研发人员:李佳明蒋恩平白铖
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1