技术标签: FastDFS
目录
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。
服务端两个角色:
Tracker:管理集群,tracker也可以实现集群。每个tracker节点地位平等。
收集Storage集群的状态。
Storage:实际保存文件
Storage分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念。
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
maven工程的话,直接在pom文件中引入依赖就可以,否则就需要引入jar包。
@Test
public void test() throws Exception{
//创建一个配置文件,文件名任意,内容是tracker服务器的地址
ClientGlobal.init("D:/mars.2_workspace - e3Mall/e3-manager-web/src/main/resources/conf/client.conf");
//创建一个trackerClient对象
TrackerClient trackerClient = new TrackerClient();
//使用TrackerClient对象创建连接,获得一个TrackerServer对象
TrackerServer trackerServer = trackerClient.getConnection();
//创建一个StorageServer的引用,值为null
StorageServer storageServer = null;
//创建一个StorageClient对象,需要两个参数TrackerServer对象、StorageServer的引用
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
//使用StorageClient对象上传图片。
String[] strings = storageClient.upload_file("C:/Users/liuxiang/Pictures/Saved Pictures/kid.jpg", "jpg", null);
//返回数组。包含组名和图片的路径。
for(String string : strings){
System.out.println(string);
}
}
返回结果:
我们在浏览器中输入地址可以直接访问到
@Test
public void testFastDfsClient() throws Exception{
FastDFSClient fastDFSClient = new FastDFSClient("D:/mars.2_workspace - e3Mall/e3-manager-web/src/main/resources/conf/client.conf");
String string = fastDFSClient.uploadFile("C:/Users/liuxiang/Pictures/Saved Pictures/cbe2c59643e1a5bc!400x400_big.jpg");
System.out.println(string);
}
淘宝在数据存储和处理领域在国内互联网公司中一直保持比较靠前的位置,而且由于电子商务领域独特的应用场景,淘宝在数据实时性和大规模计算及挖掘方面一直在国内保持着领先,因此积累了很多的实践的经验和产品。TimeTunnel基于Hbase打造的消息中间件,具有高可靠、消息顺序、事务等传统特性,还能按时间维度反复订阅最近历史的任意数据高性能的broker,单节点达2万TPS,实际支持上千长链...
举例:runasroot的用法,首先到download runasroot下载,需要经过赋予权限,root用户组所有,可执行,拷贝到/system/bin,再切换到普通用户,然后就万事大吉,可以在普通shell里面执行需要root权限才能执行的命令$adb push runasroot /data/local/tmp/$adb [email protected]:/data/local/tmp ...
6-3 Add Two Polynomials(20 分)Write a function to add two polynomials. Do not destroy the input. Use a linked list implementation with a dummy head node. Note: The zero polynomial is represented by an ...
使用使用@Scheduled cron表达式标注任务方法@Componentpublic class testTask { private Logger logger = LoggerFactory.getLogger(testTask.class); @Scheduled(cron = "0/5 * * * * ?") public void doTask() { logger.info(Thread.currentThread().getName()+"=
关键词:SQLCMD 作为DBA,经常要用开发人员提供的SQL脚本来更新正式数据库,但是一个比较合理的开发流程,当提交脚本给DBA执行的时候,可能已经有几百个sql文件,并且有执行顺序,如我现在工作的公司,十几个客户,每个客户一个库,但是数据库结构、存储过程、视图等都是一模一样,每次执行脚本(以下称为升级),如果有一百个脚本,那么就要按顺序执行过千次,这种工作量可不是一个人能承受得了的。...
我的情况:1978年生,北方某省会城市人,男,2000年毕业于北京某知名大学电子通讯相关专业,同年7月加入华为,经过技术支援部的一营实习,而后在市场部做产品线,即下过办事处,又待过总部,还去海外支援过三、四个月,于2003年下半年离职,工号22%%%,现闲居北京。 声明:本人所写均为本人亲身经历和华为同事的转述,但为避免透露真实身份,具体时间地点在不影响理解的前提下有所更改,请勿对号
网站上传图片出现错误,或错误提示原因1:99%是图片太大,可以换个图片,或者将图片压缩一下试试原因2:图片格式问题, 上传的格式不在允许范围。原因3:国外服务器, 网络卡顿,连接超时导致的上传错误,不排除存在其他问题的可能性,不同问题处理方法不同。...
输出时出现“�밴���������. . . ”乱码解决方案左上角File下点击Setting...点击File Encodings修改Global Encoding为GBK重新运行程序不再出现乱码
(1)Horizontal accordion: jQuery基于jQuery开发,非常简单的水平方向折叠控件。(2)jQuery-Horizontal Accordion具有XBOX360 blade界面风格的水平方向Accordion。(3)jQuery plugin: Accordion用于创建 折叠菜单的jQuery插件。(4
http://www.cbf107.com/CBF107Item.aspx?ID=79c98c3e-aea2-46f9-baa7-1ccd067e2a81SQLServer2005 Pivot 转置使用动态列(应用到视图)SQLServer2005 Pivot转置使用动态列(应用到视图)最近项目中用到Pivot对表进行转置,遇到一些问题,主要是Pivot转置的时候没有办法...
FPGA单首音乐播放器
编写自己的启动代码上一篇扯了一些关于启动代码的应用方面的内容,列举了4种我自己遇到过的常见的启动代码应用,当然实际的应用肯定不止上一篇文章中提到的那几种,关键是大家懂了原理后根据实际的需求添加自己的应用,这个才是关键。这一片文章主要分享下如何编写自己的启动代码,你可能会说这种脱了裤子放屁的事情没必要的,CMSIS规范了标准的启动代码模板,各个厂商都会提供自己MCU的启动代码...