【FastDFS】面试官:如何实现文件的大规模分布式存储?(全程实战

最后

看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题

注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

互联网工程师必备的面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

在每台服务器上执行如下命令下载FastDFS。

[root@localhost source]# wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz

[root@localhost source]# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz

[root@localhost source]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz

安装环境依赖

在每台服务器上执行如下命令安装FastDFS所依赖的环境。

[root@localhost dest]# yum install gcc gcc-c++

[root@localhost dest]# yum install libtool zlib zlib-devel openssl openssl-devel

[root@localhost dest]# yum -y install pcre pcre-devel libevent libevent-devel perl unzip net-tools wget

安装FastDFS


安装libfastcommon

在每台服务器上依次执行如下命令。

(1)解压libfastcommon的压缩包

[root@localhost source]# tar -zxvf V1.0.43.tar.gz

(2)编译并安装编译并安装

[root@localhost source]# cd libfastcommon-1.0.43/

[root@localhost libfastcommon-1.0.43]# ./make.sh && ./make.sh install

(3)检查执行的结果,看安装是否成功

[root@localhost libfastcommon-1.0.43]# ls /usr/lib64|grep libfastcommon

libfastcommon.so

[root@localhost libfastcommon-1.0.43]# ls /usr/lib|grep libfastcommon

libfastcommon.so

安装fastdfs

在每台服务器上依次执行如下命令。

(1)解压fastdfs

[root@localhost source]# tar -zxvf V6.06.tar.gz

(2)安装fastdfs

[root@localhost source]# cd fastdfs-6.06/

[root@localhost fastdfs-6.06]# ./make.sh && ./make.sh install

(3)检查fastdfs是否安装成功

[root@localhost fastdfs-6.06]# ls /usr/bin|grep fdfs

fdfs_appender_test

fdfs_appender_test1

fdfs_append_file

fdfs_crc32

fdfs_delete_file

fdfs_download_file

fdfs_file_info

fdfs_monitor

fdfs_regenerate_filename

fdfs_storaged

fdfs_test

fdfs_test1

fdfs_trackerd

fdfs_upload_appender

fdfs_upload_file

安装部署tracker服务


复制tracker的配置文件

在两台tracker服务器上,依次执行如下命令。

[root@localhost fastdfs-6.06]# cd /etc/fdfs/

[root@localhost fdfs]# cp client.conf.sample client.conf

[root@localhost fdfs]# cp tracker.conf.sample tracker.conf

注意:无须生成storage.conf文件,这两台tracker不做为storage。

安装Nginx

在两台tracker服务器上,依次执行如下命令。

注意:tracker上不需要安装fastdfs-nginx-module

(1)解压Nginx

[root@localhost source]# tar -zxvf nginx-1.17.8.tar.gz

(2)nginx配置,http_stub_status_module 模块

[root@localhost fdfs]# cd /usr/local/source/nginx-1.17.8/

[root@localhost nginx-1.17.8]# ./configure --prefix=/usr/local/soft/nginx --with-http_stub_status_module

(3)编译安装Nginx

[root@localhost nginx-1.17.8]# make && make install

(4)检查安装是否成功

[root@localhost nginx-1.17.8]# ls /usr/local/soft/ | grep nginx

nginx

(5)查看指定的编译参数是否起作用

[root@localhost fdfs]# /usr/local/soft/nginx/sbin/nginx -V

nginx version: nginx/1.17.8

built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)

configure arguments: --prefix=/usr/local/soft/nginx --with-http_stub_status_module

配置并启动FastDFS

在两台tracker上,配置并启动FastDFS。

(1)创建tracker服务所需的目录

[root@localhost fdfs]# mkdir /data/fastdfs

[root@localhost fdfs]# mkdir /data/fastdfs/tracker

[root@localhost fdfs]# chmod 777 /data/fastdfs/tracker

(2)配置tracker服务,修改 tracker.conf 文件

[root@localhost fdfs]# vi /etc/fdfs/tracker.conf

只修改base_path一项的值为我们在上面所创建的目录即可

base_path = /data/fastdfs/tracker

(3)启动 tracker 服务

[root@localhost fdfs]# /etc/init.d/fdfs_trackerd start

(4)检查tracker服务启动是否成功

[root@localhost fdfs]# ps auxfww | grep fdfs

root 15067 0.0 0.0 12320 964 pts/0 S+ 15:14 0:00 | | _ grep --color=auto fdfs

root 15026 0.0 0.1 90160 5940 ? Sl 15:13 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

说明:能看到 fdfs_trackerd,表示tracker服务启动成功。

(5)检查tracker服务是否已绑定端口 22122

[root@localhost dest]# netstat -anp | grep 22122

tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 15026/fdfs_trackerd

说明: 22122端口是在/etc/fdfs/tracker.conf中定义的,如下所示:

the tracker server port

port = 22122

配置client.conf

两台tracker上,配置client.conf,配置fastdfs的客户端使用的配置文件。

(1)配置client.conf

[root@localhost fdfs]# vi /etc/fdfs/client.conf

以下两项配置用到的tracker目录和服务器地址端口

base_path = /data/fastdfs/tracker

tracker_server = 192.168.175.101:22122

tracker_server = 192.168.175.102:22122

说明:两台tracker上的client.conf配置相同

(2)从客户端的配置可以看到:客户端只需要了解tracker_server的信息。tracker server作用也正是负载均衡和调度

(3)Storage server作用是文件存储,客户端上传的文件最终存储在 Storage 服务上

测试文件

用client.conf上传文件测试。

(1)从tacker上传一个文件

[root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt group1/M00/00/00/rBEABF5aTEeAXHF4AAAABHf4XZU792.txt

注意返回的是group1,我们可以group1下面的两台机器均找到此txt文件:

  • storage1上

[root@d5d19e99e782 docker_tmp]# ls /data/fastdfs/storage/data/00/00

rBEABF5aTEeAXHF4AAAABHf4XZU792.txt

  • storage2上

[root@f201111d0698 docker_tmp]# ls /data/fastdfs/storage/data/00/00

rBEABF5aTEeAXHF4AAAABHf4XZU792.txt

(2)指定group上传文件

如果想指定上传到某个group怎么办?例如:指定上传到group2

[root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt 192.168.175.105:23000

group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt

说明:指定group2中任一台的ip和端口即可。

(3)查看效果

  • storage3上

[root@494ac47d63f8 fdfs]# ls /data/fastdfs/storage/data/00/00

rBEABl5aUAqAXLCZAAAABHf4XZU043.txt

  • storage4上

[root@59fa1efff362 fdfs]# ls /data/fastdfs/storage/data/00/00

rBEABl5aUAqAXLCZAAAABHf4XZU043.txt

安装部署storage服务


生成默认配置文件

四台storage上:生成启动fastdfs默认的配置文件。

[root@localhost fastdfs-6.06]# cd /etc/fdfs/

[root@localhost fdfs]# cp storage.conf.sample storage.conf

[root@localhost fdfs]# cp client.conf.sample client.conf

说明:不需要生成tracker.conf,因为storage上不再运行tracker服务

安装Nginx

四台storage上:安装nginx及fastdfs-nginx-module

(1)解压nginx

[root@localhost source]# tar -zxvf nginx-1.17.8.tar.gz

(2)解压fastdfs-nginx-module

[root@localhost source]# tar -zxvf V1.22.tar.gz

(3)修改config文件,把/usr/local 替换成 /usr

[root@localhost source]# cd fastdfs-nginx-module-1.22/

[root@localhost fastdfs-nginx-module-1.22]# cd src

[root@localhost src]# vi config

(4)Nginx配置,添加fastdfs-nginx-module和http_stub_status_module 模块

[root@localhost fdfs]# cd /usr/local/source/nginx-1.17.8/

[root@localhost nginx-1.17.8]# ./configure --prefix=/usr/local/soft/nginx --with-http_stub_status_module --add-module=/usr/local/source/fastdfs-nginx-module-1.22/src/

(5)编译安装nginx

[root@localhost nginx-1.17.8]# make && make install

(6)检查安装是否成功

[root@localhost nginx-1.17.8]# ls /usr/local/soft/ | grep nginx

nginx

(7)查看指定的编译参数是否起作用

[root@localhost fdfs]# /usr/local/soft/nginx/sbin/nginx -V

nginx version: nginx/1.17.8

built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)

configure arguments: --prefix=/usr/local/soft/nginx --with-http_stub_status_module --add-module=/usr/local/source/fastdfs-nginx-module-1.22/src/

配置并启动storage服务

四台storage上:配置并启动storage服务

(1)创建storage服务所需的目录

[root@localhost fdfs]# mkdir /data/fastdfs/storage

[root@localhost fdfs]# chmod 777 /data/fastdfs/storage/

(2)配置storage服务

编辑storage的配置文件:

[root@localhost fdfs]# vi /etc/fdfs/storage.conf

各配置项包括:

group_name = group1

#配置base_path为上面所创建的storage目录

base_path = /data/fastdfs/storage

#store_path :存储所在的目录,可以设置多个,注意从0开始

store_path0 = /data/fastdfs/storage

#tracker_server的ip和端口

tracker_server = 192.168.175.101:22122

tracker_server = 192.168.175.102:22122

#指定http服务的端口

http.server_port = 80

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

h为上面所创建的storage目录

base_path = /data/fastdfs/storage

#store_path :存储所在的目录,可以设置多个,注意从0开始

store_path0 = /data/fastdfs/storage

#tracker_server的ip和端口

tracker_server = 192.168.175.101:22122

tracker_server = 192.168.175.102:22122

#指定http服务的端口

http.server_port = 80

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

[外链图片转存中…(img-1BtJsRMp-1715477111539)]

[外链图片转存中…(img-jX5oGtT5-1715477111540)]

更多笔记分享

[外链图片转存中…(img-nZcBmdkt-1715477111541)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值