CN111491037B - 通过sftp数据流与对象存储服务器的通信方法 - Google Patents
通过sftp数据流与对象存储服务器的通信方法 Download PDFInfo
- Publication number
- CN111491037B CN111491037B CN202010594588.3A CN202010594588A CN111491037B CN 111491037 B CN111491037 B CN 111491037B CN 202010594588 A CN202010594588 A CN 202010594588A CN 111491037 B CN111491037 B CN 111491037B
- Authority
- CN
- China
- Prior art keywords
- sftp
- command
- module
- storage server
- object storage
- 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.)
- Active
Links
Images
Classifications
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及通过SFTP数据流与对象存储服务器的通信方法,包括步骤:A.通过SFTP Transporter模块监听指定的TCP协议通信端口,等待客户端连接;B.客户端发送连接请求和SFTP Transporter模块建立连接;C.SFTP Transporter模块将客户端的命令传递给SFTP Command Dispatcher模块并分发给对应的命令处理器;D.通过命令处理器调用对象存储服务器中容器集群管理***的Driver使对象存储服务器对命令进行响应,并返回给客户端。本发明能够在对用户透明的情况下通过SFTP数据流操作对象存储服务器,而且对现有***没有侵入性,不需要修改***代码。
Description
技术领域
本发明涉及数据流的通信方法,具体讲是通过SFTP数据流与对象存储服务器的通信方法。
背景技术
SFTP(Secret File Transfer Protocol)是一种基于安全文件传送协议的数据流连接方式,能够提供文件访问、传输和管理功能的网络传输协议等功能。
对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。像文件一样,对象包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。文件和对象都有与它们所包含的数据相关的元数据,但是对象是以扩展元数据为特征的。每个对象都被分配一个唯一的标识符,允许一个服务器或者最终用户来检索对象,而不必知道数据的物理地址。这种方法对于在云计算环境中自动化和简化数据存储有帮助。常见的对象存储服务器包括有阿里云的对象存储、七牛的对象存储、AWS的对象存储等。
在现有技术中,用户不能通过SFTP数据流来操作对象存储服务器,只能通过SFTP数据流在操作文件服务器等块存储服务器,或者通过SDK、API来操作对象存储服务器。由于块存储服务器是直接使用硬盘或用需要通过NAS等协议将数据封装后才能处理,对象存储屏蔽了具体存储格式,对外提供存储接口,因此对象存储相比块存储具有更灵活、更便利的优点。因此,如何通过SFTP数据流来操作对象存储服务器是一个需要解决的技术难题。
发明内容
本发明提供了一种通过SFTP数据流与对象存储服务器的通信方法,通过SFTP数据流操作对象存储服务器,以可以利用对象存储大数据量、高可用和高并发的特点。
本发明通过SFTP数据流与对象存储服务器的通信方法,包括步骤:
A.通过SFTP Transporter模块监听指定的TCP协议通信端口,等待SFTP客户端连接;
B.SFTP Transporter模块根据SFTP客户端发送的连接请求和SFTP客户端建立连接;
C.SFTP客户端发送SFTP命令给对应的SFTP Transporter模块,SFTP Transporter模块将接收到的SFTP命令传递给SFTP Command Dispatcher模块,SFTP CommandDispatcher模块根据SFTP命令映射表找到对应的命令处理器后,将该SFTP命令分发给对应的命令处理器,所述的SFTP命令至少包括LIST命令、GET命令和PUT命令;
D.命令处理器中对应的Command Handler收到SFTP命令后,通过命令处理器的Object Store Adapter模块调用对象存储服务器中容器集群管理***的Driver,所述Driver通过HTTP协议发送SFTP命令到对象存储服务器的处理模块对SFTP命令进行响应,再依次通过所述的Driver、Object Store Adapter模块、Command Handler、SFTP CommandDispatcher模块和SFTP Transporter模块,将对象存储服务器的响应返回给所述的SFTP客户端。
通过本发明的通信方法,能够在对用户透明的情况下,使用对象存储替换了现有的块存储,让用户在无需修改代码和使用习惯的情况下,获得了对象存储的大数据量、高可用、高并发的优势。
进一步的,步骤B中,当SFTP客户端发送的连接请求给SFTP Transporter模块后,SFTP Transporter模块创建Socket连接,并返回认证要求;SFTP客户端收到所述认证要求后,发送ssh key给SFTP Transporter模块,SFTP Transporter模块对其中的key进行验证,如果验证通过,创建相应的session并连接成功;如果验证失败,返回失败信息。
进一步的,步骤C中,SFTP Transporter模块将接收到的SFTP命令传递给SFTPCommand Dispatcher模块后,SFTP Command Dispatcher模块解析该SFTP命令,如果该SFTP命令不是合法的,SFTP Command Dispatcher模块则通知SFTP Transporter模块返回异常信息给SFTP客户端,SFTP Transporter模块删除当前session,并断开与SFTP客户端的连接;如果该SFTP命令是合法的,SFTP Command Dispatcher模块再根据SFTP命令映射表找到对应的命令处理器和分发SFTP命令。
具体的,所述的LIST命令用于列出当前目录下的所有文件和目录,步骤D中,命令处理器中的LIST Command Handler接收到LIST命令后,调用Object Store Adapter模块的LIST方法,通过Object Store Adapter模块的LIST方法委托对象存储服务器中容器集群管理***的Driver的LIST方法,所述Driver通过HTTP协议发送GET请求到对象存储服务器的处理模块对GET请求进行响应,对象存储服务器响应后返回当前目录下的文件和目录列表;所述Driver获取到对象存储服务器的响应后,再解析HTTP Response,将响应的消息体取出并序列化为字符串,然后返回给Object Store Adapter模块,Object Store Adapter模块再将所述字符串返回给LIST Command Handler,LIST Command Handler通过SFTPTransporter模块将字符串返回给SFTP客户端。
具体的,所述的GET命令用于下载指定的文件,步骤D中,LIST Command Handler接收到GET命令后,调用Object Store Adapter模块的GET方法,通过Object Store Adapter的GET方法委托对象存储服务器中容器集群管理***的Driver的GET方法,所述Driver通过HTTP协议发送GET请求到对象存储服务器的处理模块进行HTTP响应,响应后的HTTP Body为通过下载的文件生成的输出流;所述Driver获取到对象存储服务器的响应后,在临时目录下新建临时文件,再将获取的所述输出流写入该临时文件,再通过Object Store Adapter模块将该临时文件返回给GET Command Handler,GET Command Handler通过SFTPTransporter模块将临时文件的内容序列化为SFTP协议格式发送给SFTP客户端。
具体的,所述的PUT命令用于上传文件,步骤D中,PUT Command Handler接收到PUT命令之后,调用Object Store Adapter模块的PUT方法,Object Store Adapter模块的PUT方法根据接收到的SFTP客户端传输来的文件流,在临时目录下创建临时文件,将所述文件流输出到临时文件中,然后再调用对象存储服务器中容器集群管理***的Driver的PUT方法,将临时文件作为输入,发送给对象存储服务器的处理模块,对象存储服务器的处理模块收到该临时文件后在对应的目录下创建相应的文件。
本发明通过SFTP数据流与对象存储服务器的通信方法,能够在对用户透明的情况下通过SFTP数据流操作对象存储服务器,而且对现有***没有侵入性,不需要修改***代码。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
附图说明
图1为本发明通过SFTP数据流与对象存储服务器的通信方法的流程图。
具体实施方式
如图1所示本发明通过SFTP数据流与对象存储服务器的通信方法,包括步骤:
A.通过SFTP Transporter模块监听指定的TCP协议通信端口,如TCP的22端口,等待SFTP客户端连接。
B.SFTP客户端发送的连接请求给SFTP Transporter模块后,SFTP Transporter模块创建Socket连接,并返回认证要求。SFTP客户端收到所述认证要求后,发送ssh key给SFTP Transporter模块,SFTP Transporter模块对其中的key进行验证,如果验证通过,创建相应的session并连接成功。如果验证失败,返回失败信息。
C.SFTP客户端发送SFTP命令给对应的SFTP Transporter模块,SFTP Transporter模块将接收到的SFTP命令传递给SFTP Command Dispatcher模块,SFTP CommandDispatcher模块解析该SFTP命令,如果该SFTP命令不是合法的,SFTP Command Dispatcher模块则通知SFTP Transporter模块返回异常信息给SFTP客户端,SFTP Transporter模块删除当前session,并断开与SFTP客户端的连接。如果该SFTP命令是合法的,SFTP CommandDispatcher模块则根据SFTP命令映射表找到对应的命令处理器,将该SFTP命令分发给该命令处理器。所述的SFTP命令至少包括LIST命令、GET命令和PUT命令。
D.命令处理器中对应的Command Handler收到SFTP命令后,通过命令处理器的Object Store Adapter模块调用对象存储服务器中容器集群管理***的Driver,所述Driver通过HTTP协议发送SFTP命令到对象存储服务器的处理模块对SFTP命令进行响应,再依次通过所述的Driver、Object Store Adapter模块、Command Handler、SFTP CommandDispatcher模块和SFTP Transporter模块,将对象存储服务器的响应返回给所述的SFTP客户端。
以国内常用的KS3对象存储服务器中容器集群管理***的Driver为例,对上述的各命令的处理过程为:
LIST命令:
LIST命令用于列出当前目录下的所有文件和目录,相当于列出KS3对象存储服务器中当前BUCKET下的所有文件和目录。命令处理器中的LIST Command Handler接收到LIST命令后,调用Object Store Adapter模块的LIST方法,通过Object Store Adapter模块的LIST方法委托KS3对象存储服务器中容器集群管理***的Driver的LIST方法,所述Driver通过HTTP协议发送GET请求到KS3对象存储服务器的处理模块对GET请求进行响应,KS3对象存储服务器响应后返回BUCKET下的文件和目录列表。所述Driver获取到KS3对象存储服务器的响应后,再解析HTTP Response,将响应的消息体取出并序列化为字符串,然后返回给Object Store Adapter模块,Object Store Adapter模块再将所述字符串返回给LISTCommand Handler,LIST Command Handler通过SFTP Transporter模块将字符串返回给SFTP客户端。
GET命令:
GET命令用于下载指定的文件,即下载BUCKET中指定的文件。LIST CommandHandler接收到GET命令后,调用Object Store Adapter模块的GET方法,通过Object StoreAdapter的GET方法委托KS3对象存储服务器中容器集群管理***的Driver的GET方法,所述Driver通过HTTP协议发送GET请求到KS3对象存储服务器的处理模块进行HTTP响应,响应后的HTTP Body为通过下载的文件生成的输出流。所述Driver获取到KS3对象存储服务器的响应后,在临时目录/tmp下新建临时文件,再将获取的所述输出流写入该临时文件,再通过Object Store Adapter模块将该临时文件返回给GET Command Handler,GET CommandHandler通过SFTP Transporter模块将临时文件的内容序列化为SFTP协议格式发送给SFTP客户端。
PUT命令:
PUT命令用于上传文件,即上传文件到BUCKET中。PUT Command Handler接收到PUT命令之后,调用Object Store Adapter模块的PUT方法,Object Store Adapter模块的PUT方法根据接收到的SFTP客户端传输来的文件流,在临时目录/tmp下创建临时文件,将所述文件流输出到临时文件中,然后再调用KS3对象存储服务器中容器集群管理***的Driver的PUT方法,将临时文件作为输入,发送给KS3对象存储服务器的处理模块,KS3对象存储服务器的处理模块收到该临时文件后在BUCKET下创建相应的文件。
通过本发明的通信方法,能够在对用户透明的情况下,使用对象存储替换了现有的块存储,而且对现有***没有侵入性,不需要修改***代码,让用户在无需修改代码和使用习惯的情况下,获得了对象存储的大数据量、高可用、高并发的优势。
Claims (3)
1.通过SFTP数据流与对象存储服务器的通信方法,其特征为,包括步骤:
A.通过SFTP Transporter模块监听指定的TCP协议通信端口,等待SFTP客户端连接;
B.SFTP Transporter模块根据SFTP客户端发送的连接请求和SFTP客户端建立连接;
C.SFTP客户端发送SFTP命令给对应的SFTP Transporter模块,SFTP Transporter模块将接收到的SFTP命令传递给SFTP Command Dispatcher模块,SFTP Command Dispatcher模块根据SFTP命令映射表找到对应的命令处理器后,将该SFTP命令分发给对应的命令处理器,所述的SFTP命令至少包括LIST命令、GET命令和PUT命令;
D.命令处理器中对应的Command Handler收到SFTP命令后,通过命令处理器的ObjectStore Adapter模块调用对象存储服务器中容器集群管理***的Driver,所述Driver通过HTTP协议发送SFTP命令到对象存储服务器的处理模块对SFTP命令进行响应,再依次通过所述的Driver、Object Store Adapter模块、Command Handler、SFTP Command Dispatcher模块和SFTP Transporter模块,将对象存储服务器的响应返回给所述的SFTP客户端;
所述的LIST命令用于列出当前目录下的所有文件和目录,命令处理器中的LISTCommand Handler接收到LIST命令后,调用Object Store Adapter模块的LIST方法,通过Object Store Adapter模块的LIST方法委托对象存储服务器中容器集群管理***的Driver的LIST方法,所述Driver通过HTTP协议发送GET请求到对象存储服务器的处理模块对GET请求进行响应,对象存储服务器响应后返回当前目录下的文件和目录列表;所述Driver获取到对象存储服务器的响应后,再解析HTTP Response,将响应的消息体取出并序列化为字符串,然后返回给Object Store Adapter模块,Object Store Adapter模块再将所述字符串返回给LIST Command Handler,LIST Command Handler通过SFTP Transporter模块将字符串返回给SFTP客户端;
所述的GET命令用于下载指定的文件,LIST Command Handler接收到GET命令后,调用Object Store Adapter模块的GET方法,通过Object Store Adapter的GET方法委托对象存储服务器中容器集群管理***的Driver的GET方法,所述Driver通过HTTP协议发送GET请求到对象存储服务器的处理模块进行HTTP响应,响应后的HTTP Body为通过下载的文件生成的输出流;所述Driver获取到对象存储服务器的响应后,在临时目录下新建临时文件,再将获取的所述输出流写入该临时文件,再通过Object Store Adapter模块将该临时文件返回给GET Command Handler,GET Command Handler通过SFTP Transporter模块将临时文件的内容序列化为SFTP协议格式发送给SFTP客户端;
所述的PUT命令用于上传文件,PUT Command Handler接收到PUT命令之后,调用ObjectStore Adapter模块的PUT方法,Object Store Adapter模块的PUT方法根据接收到的SFTP客户端传输来的文件流,在临时目录下创建临时文件,将所述文件流输出到临时文件中,然后再调用对象存储服务器中容器集群管理***的Driver的PUT方法,将临时文件作为输入,发送给对象存储服务器的处理模块,对象存储服务器的处理模块收到该临时文件后在对应的目录下创建相应的文件。
2.如权利要求1所述的通过SFTP数据流与对象存储服务器的通信方法,其特征为:步骤B中,当SFTP客户端发送的连接请求给SFTP Transporter模块后,SFTP Transporter模块创建Socket连接,并返回认证要求;SFTP客户端收到所述认证要求后,发送ssh key给SFTPTransporter模块,SFTP Transporter模块对其中的key进行验证,如果验证通过,创建相应的session并连接成功;如果验证失败,返回失败信息。
3.如权利要求2所述的通过SFTP数据流与对象存储服务器的通信方法,其特征为:步骤C中,SFTP Transporter模块将接收到的SFTP命令传递给SFTP Command Dispatcher模块后,SFTP Command Dispatcher模块解析该SFTP命令,如果该SFTP命令不是合法的,SFTPCommand Dispatcher模块则通知SFTP Transporter模块返回异常信息给SFTP客户端,SFTPTransporter模块删除当前session,并断开与SFTP客户端的连接;如果该SFTP命令是合法的,SFTP Command Dispatcher模块再根据SFTP命令映射表找到对应的命令处理器和分发SFTP命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010594588.3A CN111491037B (zh) | 2020-06-28 | 2020-06-28 | 通过sftp数据流与对象存储服务器的通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010594588.3A CN111491037B (zh) | 2020-06-28 | 2020-06-28 | 通过sftp数据流与对象存储服务器的通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111491037A CN111491037A (zh) | 2020-08-04 |
CN111491037B true CN111491037B (zh) | 2020-10-27 |
Family
ID=71810667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010594588.3A Active CN111491037B (zh) | 2020-06-28 | 2020-06-28 | 通过sftp数据流与对象存储服务器的通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111491037B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187918B (zh) * | 2020-09-27 | 2023-06-02 | 北京浪潮数据技术有限公司 | 云计算平台***及其基于对象存储的数据下载和上传方法 |
CN112231165B (zh) * | 2020-09-29 | 2023-06-06 | 四川新网银行股份有限公司 | 基于链接库注入和内存映射方式的内存故障模拟方法 |
CN114466083B (zh) * | 2022-01-19 | 2023-11-17 | 北京星辰天合科技股份有限公司 | 支持协议互通的数据存储*** |
CN115268797B (zh) * | 2022-09-26 | 2023-01-10 | 创云融达信息技术(天津)股份有限公司 | 一种通过WebDav实现***与对象存储通信的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273378A (zh) * | 2016-04-07 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 一种文件存储方法及装置 |
CN109831534A (zh) * | 2019-03-19 | 2019-05-31 | 深圳市云语科技有限公司 | 一种基于阿里云oss对象存储的文件传输*** |
CN110198334A (zh) * | 2018-04-19 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 基于对象存储服务的访问方法、装置和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619487B2 (en) * | 2012-06-18 | 2017-04-11 | International Business Machines Corporation | Method and system for the normalization, filtering and securing of associated metadata information on file objects deposited into an object store |
US10762045B2 (en) * | 2016-07-28 | 2020-09-01 | Caringo, Inc. | Mounting dynamic endpoints |
-
2020
- 2020-06-28 CN CN202010594588.3A patent/CN111491037B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273378A (zh) * | 2016-04-07 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 一种文件存储方法及装置 |
CN110198334A (zh) * | 2018-04-19 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 基于对象存储服务的访问方法、装置和存储介质 |
CN109831534A (zh) * | 2019-03-19 | 2019-05-31 | 深圳市云语科技有限公司 | 一种基于阿里云oss对象存储的文件传输*** |
Also Published As
Publication number | Publication date |
---|---|
CN111491037A (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111491037B (zh) | 通过sftp数据流与对象存储服务器的通信方法 | |
CN111736775B (zh) | 多源存储方法、装置、计算机***及存储介质 | |
CN110311983B (zh) | 服务请求的处理方法、装置、***、电子设备及存储介质 | |
US11943291B2 (en) | Hosted file sync with stateless sync nodes | |
US9596279B2 (en) | Cloud-based streaming data receiver and persister | |
US8751442B2 (en) | Synchronization associated duplicate data resolution | |
CN109240837B (zh) | 一种通用云存储服务api的构建方法 | |
CN109600380B (zh) | 数据传输方法及装置 | |
US20200153889A1 (en) | Method for uploading and downloading file, and server for executing the same | |
US9503351B1 (en) | Deployment feedback for system updates to resources in private networks | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN113296987A (zh) | 调用模块的接口调用方法、装置、计算机设备及存储介质 | |
US11178197B2 (en) | Idempotent processing of data streams | |
KR20200046316A (ko) | 웹 어플리케이션 서버, 사용자 요청 처리 방법 및 통합 요청 처리 방법 | |
CN115277707A (zh) | 业务处理方法、装置、电子设备和存储介质 | |
CN115225482A (zh) | 一种基于Kubernetes进行Pod容器网络配置的方法及装置 | |
CN113986835A (zh) | FastDFS分布式文件的管理方法、装置、设备及存储介质 | |
CN113779122A (zh) | 导出数据的方法和装置 | |
WO2021050111A1 (en) | Replication configuration for multiple heterogeneous data stores | |
CN112559001A (zh) | 更新应用的方法和装置 | |
CN111404979B (zh) | 业务请求处理的方法、装置及计算机可读存储介质 | |
CN115114361B (zh) | 一种基于容器云平台统一接口的资源检索方法和*** | |
CN112073449B (zh) | 基于Kubernetes的环境切换处理方法和设备 | |
CN113010196B (zh) | 补丁筛选方法、装置、设备和存储介质 | |
WO2021226965A1 (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 |