首页 > 其他分享 >ChunJun FTP Connector 功能扩展解读

ChunJun FTP Connector 功能扩展解读

时间:2023-06-04 23:02:26浏览次数:50  
标签:FTP 自定义 文件 Connector ChunJun 分片

本文将从 FTP Connector 的功能详解,自定义文件切割及自定义 FileFormat 三个方面为大家带来 ChunJun FTP Connector 的功能扩展分享。

FTP Connector 详解

FTP 是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层,提供一种在服务器和客户机之间上传和下载文件的有效方式。

FTP Connector 基本功能

ChunJun FTP Connector 基本功能如下:

· 支持 FTP 协议 与 SFTP 协议读写;

· 支持断点续传;

· 支持并发读写;

· 支持多种文件格式的读写。

断点续传

主要的类:Position,Data,FtpFileReader,代码如下:

ChunJun FTP Connector 功能扩展解读_偏移量

ChunJun FTP Connector 功能扩展解读_偏移量_02

并发读写

代码如下:

ChunJun FTP Connector 功能扩展解读_自定义_03

自定义文件切割

ConcurrentFileSplitFactory 像一个工厂,通过这个工厂去创建其他的类,包括 ConcurrentZipCompressSplit、ConcurrentCsvSplit 以及默认的 DefaultFileSplit,类结构如下图:

ChunJun FTP Connector 功能扩展解读_自定义_04

处理流程

FTP 读取文件时,通过 ConcurrentFileSplit 对文件进行切割,切割成多个 FTPFileSplit,配置到 Channel 中,最后根据 FileSplit 保存的信息,自定义读取文件。

ChunJun FTP Connector 功能扩展解读_偏移量_05

处理逻辑

· 使用 maxFetchSize 配置,当同步的文件大于这个值时,开启大文件切割功能

· 对文件进行分析,构建分片,以文件大小1.2G、分片数4举例,每个分片数处理的数据量约等于1.2G / 4 = 300M

其中使用的分片构建算法逻辑如下:

1)从第300M偏移量开始读文件,按单个字节遍历文件,记录下一个'\n'的文件偏移量,如300.1M,第一个分片处理文件的范围就是0~ 300.1M

2)第二个分片从 300.1M + 300M开始读文件,遍历文件,记录下一个'\n'的文件偏移量,如600.3M,第二个分片处理文件的范围就是300.1M~ 600.3M

3)以此类推, 构建完所有的分片

· 单个文件的数据在多个通道并发读取后,写入目标表时,无法对多个通道的数据按原文件中记录的顺序进行写入

单个并行度读取耗时为122s:

ChunJun FTP Connector 功能扩展解读_自定义_06

8个并行度读取平均耗时为88s:

ChunJun FTP Connector 功能扩展解读_偏移量_07

自定义 FileFormat

自定义 FlieFormat 同样是以工厂模式实现的,ChunJun 目前已实现 Excel、Csv、Text 三种文件结构,当前仍然局限于 FTP,后续会扩展成公共模块,独属于 ChunJun 的 Format。类结构如下图:

ChunJun FTP Connector 功能扩展解读_数据_08

ChunJun 设计方案

FTP 增加的功能点如下:

· FTP支持用户自定义解析方式;

· FTP 支持自定义数据转换。

针对上述新增功能点 ChunJun 设计方案如下:

· FTP soource 新增参数 customFormatClassName:自定义解析器类名

· 抽象出公共模块,定义解析器接口 IFileReadFormat ,解析方式由用户实现以及 ChunJun 自带的实现


标签:FTP,自定义,文件,Connector,ChunJun,分片
From: https://blog.51cto.com/u_15137832/6412788

相关文章

  • 期望连接的建立过程 nat helper tftp
    内核首先注册tftphelp将tftp_help以及熟知的端口号69注册到nf_ct_helper_hash链表中staticint__initnf_conntrack_tftp_init(void){for(i=0;i<ports_c;i++){tftp[i][0].tuple.src.l3num=AF_INET;tftp[i][1].tuple.src.l3num=A......
  • 使用vscode sftp插件快速上传源码文件
    1.首先安装vscode插件2.使用ctrl+shift+p或者view-commandpalette打开命令面板,输入sftp并按enter键,出现编辑配置文件界面3.输入对应的主机名,密码,或者密钥文件即可{"name":"47.100.101.152","host":"47.100.101.152","protocol":"sftp",......
  • SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的
     目录:1.SMB概述2.SMB原理3.SMB配置一、SMB概述SMB(全称是ServerMessageBlock)是一个协议名,可用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居就是靠它实现的。SMB是一种客户机/服务器、请求/响应协议。通过SMB协议,客户端应用程序可以在各种网络环境下读、写服务器......
  • 【sftpUtil】
    依赖:<!--sftp--><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency> 代码:p......
  • docker安装FTP
    1.拉取镜像dockerpullfauria/vsftpd2.创建容器并运行dockerrun-d-v<本机挂载目录>:/home/vsftpd\-p20:20\-p21:21\-p21100-21110:21100-21110\-eFTP_USER=<登录名>\-eFTP_PASS=<登录密码>\-ePASV_ADDRESS=<ipaddressofyourserver>\-e......
  • arm-linux的TFTP 服务器搭建和测试
    这里并不会费劲的去介绍TFTP协议,那个意义不大,主要是教大家如何操作,在这个过程中进步。网络协议非常复杂,完整的网络协议一个人将资料看一遍,估计这辈子就过去了。在这个庞大的网络工程中,不同的工程师分别做不同的工作,作为嵌入式linux工程师,要做的就是拿别人做好的东西移植,在嵌......
  • ‘dependencies.dependency.version‘ for mysql:mysql-connector-java:jar is missin
    项目使用的技术框架是SpringBoot,依赖管理工具是Maven,需要用到数据库所以引入了mysql-connector-java相关jar包。之前项目一直正常的,不会报错,最近更新了一下版本,项目启动的时候直接报错:[INFO]Scanningforprojects...[ERROR][ERROR]Someproblemswereencounteredwhilep......
  • 玩转服务器之数据传输篇:如何快速搭建FTP文件共享服务器
    FTP文件共享服务器介绍FTP服务(FileTransferProtocol,FTP)是最早应用于主机之间数据传输的基本服务之一,是目前使用最广泛的文件传送协议。FTP文件共享服务器在日常办公中可以实现多人之间文件的传递和共享,极大提高协同办公的效率。Vsftpd是一款在Linux发行版中最受推崇的FTP服务......
  • vsftpd安装
     注意事项:FTPS数据存取介质磁盘不能为lvm格式,且不能挂载到lvm的目录下1、yum -y install  ftp vsftpdvsftpd:version3.0.2  mkdir-p/etc/vsftpd/vsftpd_user_conf2、编辑vsftpd的主配置文件(centos6和centos7的主配置文件vsftpd.conf不一样,其余的配置步骤一样)Cen......
  • vsftpd日志配置及查看——可以将vsftpd记录在系统日志里
    vsftpd日志配置及查看vsftpdftp服务器的日志设置,可以通过修改主配置文件/etc/vsftpd.conf实现。主配置文件中与日志设置有关的选项包括xferlog_enable、xferlog_file和dual_log_enable等。 xferlog_enable 如果启用该选项,系统将会维护记录服务器上传和下载情况的日志文件。默......