Java分布式篇5——FastDFS

Java分布式篇5——FastDFS

分布式文件系统

1、主流的分布式文件系统

1.1、 HDFS

(Hadoop Distributed File System)Hadoop 分布式文件系统

  • 高容错的系统,适合部署到廉价的机器上
  • 能提供高吞吐量的数据访问,非常适合大规模数据应用
  • HDFS采用主从结构,一个HDFS是由一个name节点和N个data节点组成
  • name节点储存元数据,一个文件分割成N份存储在不同的data节点上
  • 生态好

1.2、GFS

Google File System

  • 可扩展的分布式文件系统,用于大型的,分布式的,对大量数据进行访问的应用
  • 运行于廉价的普通硬件上,可以提供容错功能
  • 它可以给大量的用户提供总体性能较高的服务
  • GFS采用主从结构,一个GFS集群由一个master和大量的chunkserver(分块服务器)组成
  • 一个文件被分割若干块,分散储存到多个分块server中

1.3、FastDFS

  • fastDFS特别适合图 片,小视频等小文件,因为fastDFS对文件是不分割的,所以没有文件合并的开销
  • 网络通信用socket,速度快

2、工作原理

在这里插入图片描述

  • Tracker(追踪者):负载均衡和调度,它管理着存储服务(Storage Server),可以集群,实现高可用
  • Storage(仓库):文件存储的位置
    • storage集群采用分组的方式,同组内的每台服务器是平等关系,数据同步,目的是实现数据备份,从而高可用,而不同组的服务器之间是不通信的
    • 同组内的每台服务器的存储量不一致的情况下,会选取容量最小的那个,所以同组内的服务器之间软硬件最好保持一致
    • Storage Server会连接集群中的所有Tracker Server,定时向他们汇报自己的状态,例如:剩余空间,文件同步情况,文件上传下载次数等信息

3、上传下载原理

3.1、上传

在这里插入图片描述

3.2、下载

在这里插入图片描述

4、FastDFS安装

libfastcommon 百度云:https://pan.baidu.com/s/1js5_xYNU_d1wV29BF1GQIg提取码:4q2m

FastDFS_v5.05 百度云:https://pan.baidu.com/s/11hBxbbxy6cneRYTLjOgXYg提取码:2rxp

4.1、安装gcc环境

yum install -y gcc gcc-c++

4.2、安装libevent

yum -y install libevent

4.3、安装libfastcommon

#安装解压zip包工具
yum install -y unzip
#解压zip
unzip libfastcommon.zip
#进入目录
cd libfastcommon-master
#编译
./make.sh
#如果出现权限不允许
chmod 777 make.sh
./make.sh
#安装
./make.sh install

4.4、安装Tracker

#解压
tar -zxvf FastDFS_v5.05.tar.gz
#进入目录
cd FastDFS
#编译
./make.sh
#安装
./make.sh install

4.5、拷贝配置文件

cp /usr/local/fastdfs/FastDFS/conf/* /etc/fdfs/

4.6、配置Tracker

#作为文件存储目录,可以自行定义
mkdir /home/fastdfs
vim /etc/fdfs/tracker.conf

tracker.conf

base_path=/home/fastdfs

4.7、配置Storage

#作为文件存储目录,可以自行定义
mkdir /home/fastdfs/fdfs_storage
vim /etc/fdfs/storage.conf

storage.conf

base_path=/home/fastdfs
store_path0=/home/fastdfs/fdfs_storage
tracker_server=.101.34.116.9:22122

4.8、启动

[root@VM-0-3-centos bin]# pwd
/usr/bin
[root@VM-0-3-centos bin]# fdfs_trackerd /etc/fdfs/tracker.conf restart
[root@VM-0-3-centos bin]# fdfs_storaged /etc/fdfs/storage.conf restart
[root@VM-0-3-centos bin]# ps -ajx|grep fdfs1 15717 15716 15716 ?           -1 Sl       0   0:00 fdfs_trackerd /etc/fdfs/tracker.conf restart1 17544 17543 17543 ?           -1 Sl       0   0:00 fdfs_storaged /etc/fdfs/storage.conf restart
11458 17573 17572 11458 pts/0    17572 R+       0   0:00 grep --color=auto fdfs
[root@VM-0-3-centos bin]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1383/master         
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      15717/fdfs_trackerd 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1495/sshd           
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      17544/fdfs_storaged 
tcp6       0      0 ::1:25                  :::*                    LISTEN      1383/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1495/sshd

5、文件上传

5.1、导入依赖

<dependencies><dependency><groupId>net.oschina.zcx7878</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27.0.0</version></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.8.0</version></dependency>
</dependencies>

5.2、配置文件

##fastdfs-client.properties
fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30
fastdfs.charset = UTF-8
fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80
fastdfs.tracker_servers = 101.34.116.9:22122

5.3、测试

public class FastDFSTest {@Testpublic void upload_file() throws IOException, MyException {// 加载配置文件ClientGlobal.initByProperties("fastdfs-client.properties");// 创建tracker客户端TrackerClient trackerClient=new TrackerClient();// 通过tracker客户端获取tracker的连接服务TrackerServer connection = trackerClient.getConnection();// 声明storage服务StorageServer storageServer=null;// 定义storage客户端StorageClient storageClient = new StorageClient(connection, storageServer);// 元数据NameValuePair[] nameValuePair = new NameValuePair[1];nameValuePair[0]=new NameValuePair("fileName","witch");// 上传文件String[] strings = storageClient.upload_file("C:\\Users\\yoya\\Pictures\\1555296384.jpeg", "jpeg", nameValuePair);System.out.println(Arrays.toString(strings));connection.close();// [group1, M00/00/00/rBEAA2EJE8qAGmD5AAOoqzLzJBg09.jpeg]}
}

6、文件查询

public class FastDFSTest {@Testpublic void select_file() throws IOException, MyException {// 加载配置文件ClientGlobal.initByProperties("fastdfs-client.properties");// 创建tracker客户端TrackerClient trackerClient=new TrackerClient();// 通过tracker客户端获取tracker的连接服务TrackerServer connection = trackerClient.getConnection();// 声明storage服务StorageServer storageServer=null;// 定义storage客户端StorageClient storageClient = new StorageClient(connection, storageServer);// 查询文件FileInfo fileInfo = storageClient.query_file_info("group1", "M00/00/00/rBEAA2EJE8qAGmD5AAOoqzLzJBg09.jpeg");System.out.println(fileInfo);connection.close();// source_ip_addr = 172.17.0.3, file_size = 239787, create_timestamp = 2021-08-03 18:00:42, crc32 = 854795288}
}

7、文件下载

public class FastDFSTest {@Testpublic void download_file() throws IOException, MyException {// 加载配置文件ClientGlobal.initByProperties("fastdfs-client.properties");// 创建tracker客户端TrackerClient trackerClient=new TrackerClient();// 通过tracker客户端获取tracker的连接服务TrackerServer connection = trackerClient.getConnection();// 声明storage服务StorageServer storageServer=null;// 定义storage客户端StorageClient storageClient = new StorageClient(connection, storageServer);// 查询文件byte[] bytes = storageClient.download_file("group1", "M00/00/00/rBEAA2EJE8qAGmD5AAOoqzLzJBg09.jpeg");FileOutputStream fileOutputStream = new FileOutputStream(new File("D:/123.jpeg"));fileOutputStream.write(bytes);fileOutputStream.close();connection.close();System.out.println("下载成功");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何导出计算机硬盘重数据,硬盘对拷教程,100%保存原硬盘数据

硬盘对拷是老生常谈的问题&#xff0c;网上教程一搜一大把&#xff0c;这里也不是我原创了&#xff0c;就拷贝中关村的一篇写的比较详细的&#xff0c;普及下小白吧&#xff01;●Ghost硬盘对拷优点&#xff1a;全盘完全100%对拷&#xff0c;包括原有操作系统也可使用。新硬盘对…

计算机微格教学心得体会,微格教学心得体会6篇_微格教学体会报告

微格教学的英文为Microteaching&#xff0c;在我国被译为"微型教学"、"微观教学"、"小型教学"等&#xff0c;目前国内用得较多的是"微格教学"。微格教学是一种利用现代化教学技术手段来培训师范生和在职教师教学技能的系统方法。下面是…

Java分布式篇6——RabbitMQ

Java分布式篇6——RabbitMQ 1、MQ&#xff08;Message Queue&#xff09;消息队列 消息队列中间件&#xff0c;是分布式系统中的重要组件主要解决&#xff0c;异步处理&#xff0c;应用解耦&#xff0c;流量削峰等问题实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一…

windows7计算机启动修复怎么办,Win7电脑开机提示启动修复无法进入系统怎么办?...

近日一位Win7系统用户向我们反映&#xff0c;他的电脑在开机的过程中出现了启动修复的提示&#xff0c;导致无法正常进入系统&#xff0c;对于该问题应该如何解决呢&#xff1f;其实这个问题是很多Win7用户都碰到过的&#xff0c;因此本文就给大家介绍三种有效的解决方法。启动…

哈维玛德学院 计算机,哈维玛德学院优势多多,令人神往!

哈维心情学院是美国首批文学和艺术学院之一&#xff0c;位于加利福尼亚州克莱蒙特&#xff0c;成立于1955年12月&#xff0c;是一所私立科学、工程和数学精英学院。哈维心情学院是美国最优秀的大学之一。哈维心情学院在美国大学中排名第14位&#xff0c;具有卓越的学术声誉。这…

Java微服务篇1——SpringBoot

Java微服务篇1——SpringBoot 1、什么是springboot 1.1、Spring出现的问题 Spring是Java企业版&#xff08;Java Enterprise Edition&#xff0c;JEE&#xff0c;也称J2EE&#xff09;的轻量级代替品。无需开发重量级的 Enterprise Java Bean&#xff08;EJB&#xff09;&am…

计算机网络技术双机互联,快速实现双机互联的几种方案

文/大锋寝室里电脑越来越多&#xff0c;平时拷贝软件还得用软盘&#xff0c;况且软盘只有1.44MB&#xff0c;实在不够用&#xff0c;建网的想法也由此而来。当然此方案同样适用于家庭及其他区域内部计算机的互联。直接电缆连接对于双机通信&#xff0c;可以考虑使用并行或串行电…

Java微服务篇2——SpringCloud

Java微服务篇2——SpringCloud 1、微服务架构 1.1、单体应用架构 的⽤户量、数据量规模都⽐较⼩&#xff0c;项目所有的功能模块都放在一个工程中编码、 编译、打包并且部署在一个Tomcat容器中的架构模式就是单体应用架构&#xff0c;这样的架构既简单实 ⽤、便于维护&#…

ajax解析json中的对象数组对象,在JQuery中检索json数组后获取json对象Ajax

我使用JQuery AJAX检索某些数据(标题和说明)。正如你可以看到我打通的结果&#xff0c;并出结果的JSON数组和循环div标签中在JQuery中检索json数组后获取json对象Ajaxsuccess : function(jsonArray){$.each(jsonArray,function(messageIndex,jsonObject){$("#results"…

Java微服务篇3——Lucene

Java微服务篇3——Lucene 1、数据分类 1.1、结构化数据 具有固定格式或有限长度的数据&#xff0c;如数据库&#xff0c;元数据等 常见的结构化数据也就是数据库中的数据&#xff0c;在数据库中搜索很容易实现&#xff0c;通常都是使用 sql语句进行查询&#xff0c;而且能很…

服务器中所有文件夹变只读,我的电脑里全部文件夹属性都变成只读了改也改不过来...

第一个方法&#xff1a;你用管理员身份进入电脑然后更改一下文件夹的属性.隐藏文件看不到可以通过下面的方法显示出来:在文件夹选项里去掉‘隐藏受保护的文件和文件夹’前面的勾选--应用--确定 试试能否显示出你所需要的文件如果还不能显示&#xff0c;那么应该是注册表的问题&…

Java微服务篇4——Elastic search

Java微服务篇4——Elastic search 1、Elastic search安装配置 Elastic search官方&#xff1a;https://www.elastic.co/cn/products/elasticsearch Elastic search6.2.4 百度云&#xff1a;https://pan.baidu.com/s/1JyQok8Nija4gYhcjh-HWcw提取码&#xff1a;isa2 解压即可…

ftp文件服务器杀毒,FTP远程查杀网页木马方法

感谢使用护卫神云查杀系统&#xff0c;该软件专门查杀网页木马&#xff0c;完全免费&#xff0c;欢迎大家使用。远程FTP查杀部分&#xff1a;1、点击【远程查杀】图标&#xff0c;如上图所示&#xff0c;进入远程FTP查杀页面&#xff1a;1、首先要求输入远程FTP连接信息&#x…

Java微服务篇5——Docker

Java微服务篇5——Docker 1、虚拟化技术 虚拟化技术是一种计算机资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储 等&#xff0c;予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的&#xff0c;不可切割的障碍。使用户…

文件服务器 说明,文件服务器搭建说明.pdf

文件共享服务器搭建 责任人 姜 源 起讫时间 2010 11 15 至 2010 12 19 编号 JY001 0 目录目录 一 确定实现方案 1 二 方案实现方法 4 三 参考资料 12 1 文件服务器搭建说明与经验总结文件服务器搭建说明与经验总结 一 一 确定实现方案确定实现方案 方案方案 A Windows Server E…

Shiro 实战教程

Shiro 实战教程 1.权限的管理 1.1 什么是权限管理 ​ 基本上涉及到用户参与的系统都要进行权限管理&#xff0c;权限管理属于系统安全的范畴&#xff0c;权限管理实现对用户访问系统的控制&#xff0c;按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源…

货车定位服务器维护是什么意思,有关货车日常维护的主要内容

有关货车日常维护的主要内容货车日常维护的主要内容1)汽车日常维护以清洗、补给和检查为主要内容&#xff0c;如图1-47所示。2)行车前的检查有驾驶室内检查、发动机舱检查、车辆外部检查和轮胎检查。3)行车前发动机舱的检查包括玻璃清洗液、机油、冷却液、蓄电池液、制动液和风…

MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况

MySQL的INSERT ON DUPLICATE KEY UPDATE使用的几种情况 在MySQL数据库中&#xff0c;如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句&#xff0c;而要插入的行与表中现有记录的惟一索引或主键中产生重复值&#xff0c;那么就会发生旧行的更新&#xff1b;如果插入的行…

mybatis笔记之一次插入多条数据sql语句写法

mybatis笔记之一次插入多条数据sql语句写法

Idea插件——Translation 翻译插件安装与使用

Translation 安装 实现步骤如下: file——setting——plugin——marketplace——输入Translation——点击install——安装完成点击apply应用—ok确认——重启idea才能生效 Translation 使用 选中单词或者段落ctrlshifty翻译&#xff0c;ctrlshifts切换翻译源 ctrlshifty翻译…