JAVA通过FDFS上传以及加载文件原理简析
2018-01-14 23:47
204 查看
初学者的总结:
仅是简单案例
如果我们想在java后台中将图片上传到linux下的FDFS分布式系统中,首先通过VMware虚拟机安装linux系统。进入系统后,需要安装以下服务:tracker,storage,client,nginx这几个服务
首先说说他们的基本工作原理,客户端发送请求,将文件通过fdfs插件上传,因为tracker不支持http协议,客户端不能通过HTTP直接访问,需要通过nginx解析处理。当上传后nginx会处理 请求,并将携带的文件数据信息转接到tracker,tracker会进行轮询,找到合理的存储位置,也就是storage仓库,它会被存储在storage的文件组中,存储后storage返回一个完整的访问路径,由IP地址和文件系统路径地址组成,通过nginx处理后客户端就可以接受到访问文件的fdfs路径,但是这个路径不包含IP地址,因为服务器的ip有可能发生改变,这样就会导致资源无法访问。所以我们这样下次加载时直接通过这个路径和服务器ip进行动态拼接,才能确保随时访问资源。
在fdfs中,storage服务必须要在tracker服务启动的前提下才有意义,因为storage启动后会通知tracker自己已经开始工作,tracker在轮询时就会找到这个仓库,也就是在tracker中注册。客户端client服务可以将服务器中的文件生成一个访问地址,也是必不可少的。最后就是要启动ngin服务,有了它就可以通过http请求访问到资源库中的文件了。他们缺一不可。
在后台中需要下载fdfs插件,有了这个插件,它就能将文件地址返回给我们,就能轻松访问上传资源了。
可以直接调用upload方法,将文件转换为byte数组传入参数和后缀名,这服务器就知道按什么样的文件类型接收了。
最后返回的字符串s问文件在系统中的路径,我们需要在这个路径前面加上服务器地址作为请求路径,就可以访问资源了。
具体fdfs各种服务资源包以及安装方法参照文档
点击打开资源链接
fdfs可以让用户在高访问量下高效地访问资源,减少服务器的压力,
仅是简单案例
如果我们想在java后台中将图片上传到linux下的FDFS分布式系统中,首先通过VMware虚拟机安装linux系统。进入系统后,需要安装以下服务:tracker,storage,client,nginx这几个服务
首先说说他们的基本工作原理,客户端发送请求,将文件通过fdfs插件上传,因为tracker不支持http协议,客户端不能通过HTTP直接访问,需要通过nginx解析处理。当上传后nginx会处理 请求,并将携带的文件数据信息转接到tracker,tracker会进行轮询,找到合理的存储位置,也就是storage仓库,它会被存储在storage的文件组中,存储后storage返回一个完整的访问路径,由IP地址和文件系统路径地址组成,通过nginx处理后客户端就可以接受到访问文件的fdfs路径,但是这个路径不包含IP地址,因为服务器的ip有可能发生改变,这样就会导致资源无法访问。所以我们这样下次加载时直接通过这个路径和服务器ip进行动态拼接,才能确保随时访问资源。
在fdfs中,storage服务必须要在tracker服务启动的前提下才有意义,因为storage启动后会通知tracker自己已经开始工作,tracker在轮询时就会找到这个仓库,也就是在tracker中注册。客户端client服务可以将服务器中的文件生成一个访问地址,也是必不可少的。最后就是要启动ngin服务,有了它就可以通过http请求访问到资源库中的文件了。他们缺一不可。
在后台中需要下载fdfs插件,有了这个插件,它就能将文件地址返回给我们,就能轻松访问上传资源了。
public class FastDFSUtils { //加载tracker服务配置文件 static { try { String classpath = FastDFSUtils.class.getResource("/").getPath(); ClientGlobal.init(classpath + "fdfs.properties"); } catch (IOException e) { } catch (MyException e) { } } //上传图片 public static String upload(byte[] buffer,String url_end) throws MyException { TrackerClient trackerClient = new TrackerClient(); try { TrackerServer trackerServer = trackerClient.getConnection(); StorageClient1 storageClient1 = new StorageClient1(trackerServer, null); String s = storageClient1.upload_appender_file1(buffer, url_end, null); return s; } catch (IOException e) { e.printStackTrace(); } return null; }
可以直接调用upload方法,将文件转换为byte数组传入参数和后缀名,这服务器就知道按什么样的文件类型接收了。
最后返回的字符串s问文件在系统中的路径,我们需要在这个路径前面加上服务器地址作为请求路径,就可以访问资源了。
具体fdfs各种服务资源包以及安装方法参照文档
点击打开资源链接
fdfs可以让用户在高访问量下高效地访问资源,减少服务器的压力,
相关文章推荐
- Java文件上传的机制与原理以及几种协议方式
- java中如何实现文件打包上传以及自动解压
- java 通过 URL 类和 URLConnection类 以及输入流实现文件下载功能
- Class类的加载以及类的产生原理java学习 第十天
- java 上传文件以及各种视频图片!
- struts2 文件上传 和部分源码解析,以及一般上传原理
- JAVA通过WebService上传文件
- Java--对于 class文件进行加密 然后通过我们自己写的类加载器进行加载指定类
- 动网论坛上传文件漏洞的原理以及攻击的代码实现
- Java中框架的概念,以及从配置文件中读取配置信息并加载指定类
- Java 文件上传(原理)
- java中如何实现文件打包上传以及自动解压
- Java--对于 class文件进行加密 然后通过我们自己写的类加载器进行加载指定类
- 动网论坛上传文件漏洞的原理以及攻击的代码实现
- 文件上传下载:通过java方法把附件保存到clob字段中
- Class类的加载以及类的产生原理java学习 第十天
- java文件上传原理
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件
- Java通过commons-net.jar包上传ftp文件(样例)
- java 通过 URL 类和 URLConnection类 以及输入流实现文件下载功能