当前位置:首页 » 网页前端 » web和fastdfs集群
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web和fastdfs集群

发布时间: 2022-06-27 14:50:01

❶ 初次接触fastdfs,请问一个组两台服务器怎么配置http

目前FastDFS支持类Unix系统 ,在Linux和FreeBSD下测试过,本文使用的是Ubuntu10.4,建议安装之前先简单了解一下FastDFS的原理 ,这对后继的配置部分会有很好的理解。
一、准备工作-安装libevent
FastDFS 内部绑定了 libevent 作为 http 服务器 ,在V2.X版本必须安装 libevent ,本文安装的是V2.2版本,因此必须安装libevent。(官方也推荐使用 http 方式下载 文件 )

如果已经安装了 libevent,请确认安装路径是 /usr , 因为 FastDFS 在编译源程序时,需要到此目录下查找一些依赖文件,否则编译 FastDFS 会出错 。如果不是,建议首先卸载 libevent ,然后安装到 /usr 下。Ubuntu10.4默认是安装了libevent,可以到软件中心卸载掉然后按照下面介绍的方式安装。

安装步骤:
解压 libevent ,然后进入解压后的目录分别执行:
Shell代码
./configure --prefix=/usr
make clean;
make
make install
安装libevent完成。

二、安装 FastDFS
1、下载 FastDFS 源程序

2、在 FastDFS_v4.05.tar.gz 所在文件夹下执行:
Shell代码
sudo tar vxzf FastDFS_v4.05.tar.gz /home/soar/FastDFS
注: /home/soar/FastDFS 也可以是其他目录,记住这是解压目录,以后用 %FastDFS% 表示)

3、由于要使用内置的 http 服务,因此编辑 %FastDFS%/make.sh 文件,找到
#WITH_HTTPD=1
修改成
WITH_HTTPD=1
以支持 http

4、进入 %FastDFS% 目录,执行:
Shell代码
sudo ./make.sh

5、在 %FastDFS% 目录下,执行:
Shell代码
sudo ./make.sh install

如果运行如上命令后,在命令行信息最后看到类似
Shell代码
#ln -fs /usr/local/lib/libfastcommon.so.1 /usr/local/lib/libfastcommon.so
#ln -fs /usr/local/lib/libfdfsclient.so.1 /usr/local/lib/libfdfsclient.so
sh ./fdfs_link_library.sh

恭喜你,已经安装成功了!

FastDFS的配置文件在%FastDFS%/conf目录下,其中包括
Client.conf 客户端上传配置文件
Storage.conf 文件存储服务器配置文件
Tracker.conf 负责均衡调度服务器配置文件
http.conf http服务器配置文件

配置文件需要根据服务器环境的不同,进行不同的配置,具体可以参考FastDFS官方的安装配置文档,以及FastDFS原理介绍文档

在本例中,Tracker Server,Storage Server都安装在一台服务器上,IP:10.0.2.15
1、配置及启动Tracker Server
A、修改%FastDFS%/conf/tracker.conf文件,修改如下
#可以自己指定目录位置,但目录必须存在,用于存储日志及storage server等信息,否则tracker server无法启动
Txt代码
base_path=/home/yuqing/fastdfs -> base_path=/home/soar/fastdfs_tracker
#改成你想要的http端口,将来http下载文件的端口就是他了
Txt代码
http.server_port=8080 -> http.server_port=8090
#http支持
Txt代码
##include http.conf -> #include http.conf
#默认4GB,如果空间不足,建议调小,否则会报no free space的异常,无法正常启动
Txt代码
reserved_storage_space = 4GB -> reserved_storage_space = 1GB
#tracker server对storage server供服务的端口,使用默认的即可,也可以自定义
Txt代码
port=22122

B、将http.conf文件拷贝到/etc/fdfs目录下,执行
Shell代码
sudo cp %FastDFS%/conf/http.conf /etc/fdfs/
注:为了支持http,必须将这个文件拷贝到此目录,否则无法启动,报param http.XXX not exist or is empty类似的错误

C、进入/usr/local/bin/目录,启动tracker服务器,执行
Shell代码
sudo fdfs_trackerd %FastDFS%/conf/tracker.conf

D、进入/home/soar/fastdfs_tracker/logs/trackerd.log查看tracker的启动日志,如果看到类似
Shell代码
[2010-11-04 16:21:25] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_tracker, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s
[2010-11-04 16:21:25] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html

恭喜你,tracker server已经启动成功!
2、配置及启动Storage Server
A、修改%FastDFS%/conf/storage.conf文件,修改如下:
#可以自定义,但必须存在此目录,用于存储storage相关的log、group内的相关信息
Txt代码
base_path=/home/yuqing/fastdfs -> /home/soar/fastdfs_storge
#文件的存储位置,在一台storage server上可以指定多个存储位置
Txt代码
store_path0=/home/yuqing/fastdfs -> store_path0=/home/soar/fastdfs_storge
#必须指定
Txt代码
group_name=group1
#修改成tracker server的IP和端口信息
Txt代码
tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122
#http支持
Txt代码
##include http.conf ->#include http.conf

B、进入/usr/local/bin/目录,启动storage服务器,执行
Shell代码
sudo fdfs_storaged %FastDFS%/conf/storage.conf

C、进入/home/soar/fastdfs_tracker/logs/storage.log查看storage服务器启动日志,如果看到类似
Shell代码
[2010-11-04 16:37:16] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_storge, store_path_count=1, subdir_count_per_path=256, group_name=group1, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=, client_bind=1, max_connections=256, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=200ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=60s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_plicate=0, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=8888, domain name=
[2010-11-04 16:37:16] INFO - HTTP supported: server_port=8888, http_trunk_size=262144, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0
[2010-11-04 16:37:16] INFO - file: storage_param_getter.c, line: 48, storage_ip_changed_auto_adjust=1
[2010-11-04 16:37:19] INFO - file: tracker_client_thread.c, line: 274, successfully connect to tracker server 10.0.2.15:22122, as a tracker client, my ip is 10.0.2.15

恭喜你,storage server已经启动成功!

经过前面的安装、配置、启动,马上就可以看到FastDFS的效果了,我们先上传一个文件,然后再通过http下载。
一、上传文件
FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置client.conf,然后再进行文件上传及下载。

1、修改%FastDFS%/conf/client.conf文件,修改如下:
#可自定义,但此目录必须存在,用于存放文件上传log
Txt代码
base_path=/home/yuqing/fastdfs-> base_path=/home/soar/fastdfs_tracker
Txt代码
tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122
Txt代码
http.tracker_server_port=8080 ->http.tracker_server_port=8090
#支持http
Txt代码
##include http.conf ->#include http.conf

2、进入/usr/local/bin/目录,上传文件,执行
Txt代码
sudo fdfs_test %FastDFS%/conf/client.conf upload a.txt
注:a.txt可以在/usr/local/bin/目录下自己创建一个

如果命令行反馈类似如下:

则说明上传文件成功。

关于fastdfs集群和备份配置

1、修改tracker.conf文件中store_lookup=2 平衡负载

2、修改tracker.conf文件中store_server=0 采用轮询方式。

如果希望只使用一台文件存储服务器,其他二台做备份,则修改文件tracker_server为某台主机的IP,只启动文件存储服务器的tracker,其他二台备份服务器不需要启动tracker。

如果希望三台服务器集群使用,互相备份,比如:使用A机器存储文件,这时候A机器会将文件同步到B机器和C机器,同理使用B机器存储文件,则会同时将文件同步到A机器和C机器。这时候需要将所有的机器IP和端口号

都配置在storage.conf中,如下所示:
tracker_server=10.207.16.127:22122
tracker_server=10.207.16.129:22122

❷ fastDFS求助,2个问题

回复 1# temp_hacker >>请问,如果现在开始使用FastDHT,它会自动去记录以前在FastDFS上存储的文件信息吗?不会的。>>如果不能,有没有办法让FastDHT去记录以前的存储在FastDFS上的文件呢?谢谢!如果你要自定义文件ID,可以使用定制一套client API:my-fastdfs-client。文件ID映射就是保存到FastDHT中的。如果以前已经上传了一些文件,需要你自己做个数据迁移或者重建文件ID映射。

❸ fastdfs java 怎么使用

importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.HashMap;
importjava.util.Map;

importorg.apache.commons.io.FilenameUtils;
importorg.apache.log4j.Logger;
importorg.csource.common.MyException;
importorg.csource.fastdfs.ClientGlobal;
importorg.csource.fastdfs.StorageClient;
importorg.csource.fastdfs.TrackerClient;
importorg.csource.fastdfs.TrackerServer;
importorg.springframework.core.io.ClassPathResource;
importorg.springframework.core.io.Resource;


publicclassFastdfsUtils{

/**fdfs初始化文件路径**/
privateResourcer=newClassPathResource("fdfs_client.properties");

/**日志**/
=Logger.getLogger(FastdfsUtils.class);

/**
*文件上传
*@throwsMyException
*@throwsIOException
*@throwsFileNotFoundException
*/
publicMap<String,String>fileUpLoad(booleanisEmpty,InputStreaminputStream,StringfileName)
throwsException{
Map<String,String>map=newHashMap<String,String>();
if(isEmpty){
thrownewException("");
}
ClientGlobal.init(r.getFile().getAbsolutePath());
TrackerClienttrackerClient=newTrackerClient();
TrackerServertrackerServer=trackerClient.getConnection();

StorageClientstorageClient=newStorageClient(trackerServer,null);

byte[]file_buff=null;
if(inputStream!=null){
file_buff=newbyte[inputStream.available()];
inputStream.read(file_buff);
}
String[]results=storageClient.upload_file(file_buff,
FilenameUtils.getExtension(fileName),null);
if(results==null){
thrownewException("");
}
map.put("fileType",FilenameUtils.getExtension(fileName));
map.put("original",fileName);
map.put("url",results[0]+"/"+results[1]);
map.put("state","SUCCESS");
map.put("groupName",results[0]);
map.put("fileName",results[1]);
returnmap;
}

/**
*文件下载
*/
publicbyte[]fileDownLoad(StringgroupName,StringfileName)throwsIOException,MyException{
ClientGlobal.init(r.getFile().getAbsolutePath());
TrackerClienttrackerClient=newTrackerClient();
TrackerServertrackerServer=trackerClient.getConnection();

StorageClientstorageClient=newStorageClient(trackerServer,null);
byte[]fileBytes=storageClient.download_file(groupName,fileName);

returnfileBytes;
}

/**
*文件删除
*/
publicvoidfileDelete(StringgroupName,StringfileName)throwsFileNotFoundException,
IOException,MyException{
ClientGlobal.init(r.getFile().getAbsolutePath());
TrackerClienttrackerClient=newTrackerClient();
TrackerServertrackerServer=trackerClient.getConnection();

StorageClientstorageClient=newStorageClient(trackerServer,null);
storageClient.delete_file(groupName,fileName);
}
}

❹ 有了cdn为什么还要用fastdfs

因为cdn的速度与fastdfs相差并不是很大,但是价格却十分昂贵,所以相同情况下,企业都会选择使用fastdfs分布式文件系统。

❺ fastdfs 和hdfs的区别

主要是定位和应用场合不一样。
hadoop的文件系统HDFS主要解决并行计算中分布式存储数据的问题。其单个数据文件通常很大,采用了分块(切分)存储的方式;
FastDFS主要用于大中网站,为文件上传和下载提供在线服务。所以在负载均衡、动态扩容等方面都支持得比较好,FastDFS不会对文件进行分快(切分)存储。

❻ 有哪些Java web里的并发框架,都有哪些

一、并发是一种需求,以下先介绍一下javaweb对于高并发的处理思路:

1、synchronized 关键字

可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。可能锁对象包括: this, 临界资源对象,Class 类对象

2、同步方法

同步方法锁定的是当前对象。当多线程通过同一个对象引用多次调用当前同步方法时, 需同步执行。

3、同步代码块

同步代码块的同步粒度更加细致,是商业开发中推荐的编程方式。可以定位到具体的同步位置,而不是简单的将方法整体实现同步逻辑。在效率上,相对更高。

A)锁定临界对象

同步代码块在执行时,是锁定 object 对象。当多个线程调用同一个方法时,锁定对象不变的情况下,需同步执行。

B)锁定当前对象

4、锁的底层实现

Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现。同步方法 并不是由 monitor enter 和 monitor exit 指令来实现同步的,而是由方法调用指令读取运行时常量池中方法的 ACC_SYNCHRONIZED 标志来隐式实现的。

5、锁的种类

Java 中锁的种类大致分为偏向锁,自旋锁,轻量级锁,重量级锁。

锁的使用方式为:先提供偏向锁,如果不满足的时候,升级为轻量级锁,再不满足,升级为重量级锁。自旋锁是一个过渡的锁状态,不是一种实际的锁类型。

锁只能升级,不能降级。

6、volatile 关键字

变量的线程可见性。在 CPU 计算过程中,会将计算过程需要的数据加载到 CPU 计算缓存中,当 CPU 计算中断时,有可能刷新缓存,重新读取内存中的数据。在线程运行的过程中,如果某变量被其他线程修改,可能造成数据不一致的情况,从而导致结果错误。而 volatile 修饰的变量是线程可见的,当 JVM 解释 volatile 修饰的变量时,会通知 CPU,在计算过程中, 每次使用变量参与计算时,都会检查内存中的数据是否发生变化,而不是一直使用 CPU 缓存中的数据,可以保证计算结果的正确。

更多、此外还有很多细节需要通过学习去了解和完善,此处就不一一列举了。

二、并发框架

并发框架很多,如ExecutorService、RxJava、Disruptor、Akka等,具体选择哪个(或者都不选择)是根据项目需求选择的,框架本身的差异并不大,基本都是如下模式

❼ 求助fastdfs迁移数据的问题

回复 6# guliny FastDFS集群整体迁移的问题。如果新旧IP地址一一对应,而且是一样的,那非常简单,直接将data目录拷贝过去即可。IP不一样的话,会比较麻烦一些。如果使用了V4的自定义server ID特性,那么比较容易,直接将tracker上的IP和ID映射文件storage_ids.conf修改好即可。如果是用IP地址作为服务器标识,那么需要修改tracker和storage的data目录下的几个数据文件,将旧IP调整为新IP。注意storage的data目录下有一个.打头的隐藏文件也需要修改。另外,需要将后缀为mark的IP地址和端口命名的同步位置记录文件名改名。文件全部调整完成后才能启动集群服务。tracker server上需要调整的文件列表:data/storage_groups_new.datdata/storage_servers_new.datdata/storage_sync_timestamp.datstorage server需要调整的文件列表:data/.data_init_flagdata/sync/${ip_addr}_${port}.mark:此类文件,需要将文件名中的IP地址调整过来。

❽ fastdfs 端口必须跟网站分开吗

是可以不分开的。

可以按照下面的步骤来进行操作:

解决方案1:

fdfs_storaged.service - LSB: FastDFS storage server
Loaded: loaded (/etc/rc.d/init.d/fdfs_storaged)
Active: active (exited) since Fri 2016-07-08 15:53:03 CST; 18min ago
Docs: man:systemd-sysv-generator(8)
Process: 26569 ExecStart=/etc/rc.d/init.d/fdfs_storaged start (code=exited, status=0/SUCCESS)

解决方案2:

查日志,启动状态异常。

❾ web后端开发需要什么技术

HTML5开发,PHP技术开发后端,依次学习和掌握:前端的基础知识(html div+css ),php基础知识(面向过程)及mysql数据库 ,javascript、jQuery的相关知识等,php高级部分(面向对象)及pdo数据处理,php特级部分(框架的应用)等。

❿ web 图片独立域名存储后 上传文件 文件存储系统一般都用那个(nfs ,fastdfs ,tfs等 )都有什么优缺点

看环境,如是网络、本地、或者USB等,设备,,,,,,,然后选择稳定、可靠的方式