JAVA通过FDFS上传以及加载文件原理简析

JAVA通过FDFS上传以及加载文件原理简析初学者的总结 仅是简单案例如果我们想在 java 后台中将图片上传到 linux 下的 FDFS 分布式系统中 首先通过 VMware 虚拟机安装 linux 系统 进入系统后 需要安装以下服务 tracker storage client nginx 这几个服务首先说说他们的基本工作原理 客户端发送请求 将文件通过 fdfs 插件上传 因为 tracker 不支持 http 协议 客户端不能通过 HTTP 直接访问 需要

初学者的总结:

仅是简单案例

如果我们想在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可以让用户在高访问量下高效地访问资源,减少服务器的压力,

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177020.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:30
下一篇 2026年3月26日 下午8:30


相关推荐

  • 认识DTU什么是4GDTU设备

    认识DTU什么是4GDTU设备DTU 的概念

    2026年3月17日
    1
  • 异常处理面试题_运行值长面试题

    异常处理面试题_运行值长面试题java提供了两种异常机制。一种是运行时异常(RuntimeExepction),一种是受检异常(checkedexecption)。受检异常:我们经常遇到的IO异常及sql异常就属于检查式异常。对于这种异常,java编译器要求我们必须对出现的这些异常进行catch,面对这种异常要么往上抛,要么就catch运行时异常:我们可以不处理。当出现这样的异常时,总是由虚拟机接管。RuntimeExec

    2022年9月30日
    4
  • 利用人工势场法的最短路径寻找

    利用人工势场法的最短路径寻找人工势场法也可以用作机器人避障。我目前思考的是使其作为全局规划器,规划全局路径,也可以做局部规划直接下达至速度计算,目前暂时先看看全局路径计算。它将整个地图环境抽象为势场,机器人同时受到目标点的引力与障碍物的斥力,向合力的方向移动,当机器人逐步接近障碍物,受到的斥力越来越大以致偏离障碍物,达到避障的效果。如果做一个简化,每次计算便向合力方向延伸一个步长,便可逐渐到达终点。在栅格地图中,障碍物很…

    2022年6月18日
    41
  • 【树莓派】树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置

    【树莓派】树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置目录1、前言2、树莓派4B有什么特色?3、树莓派新手准备4、烧录RaspbianBuster系统到MicroSD卡开启SSH及配置无线连接5、启动安装树莓派系统启动树莓派6、树莓派的基本配置6.1系统配置6.2更改apt软件源与系统源6.3更改pip源6.4安装远程桌面6.5安装中文字体1、前言对于很多程序员而言,树莓派如今…

    2022年6月12日
    78
  • vue项目打包后部署到服务器(超详细步骤)

    vue项目打包后部署到服务器(超详细步骤)耽误了几天 终于开始写第二篇博客了 这篇会讲怎么将 vue 项目打包部署到服务器 其实和上一篇的 uni app 步骤一样的 就是最后多了一步修改 nginx 配置 好 上操作一 打包项目 1 vscode 打开你的 vue 项目 gt 点终端 gt 新终端 gt 输入 npmrunbuild 按回车 显示正在打包 稍等一会 2 打包成功 生成了 dist 文件夹 打包好的文件存放在里面二 用一个工具 把打包好的文件上传到你的服务

    2026年3月18日
    1
  • 手机运行的python_运行python程序的两种方式

    手机运行的python_运行python程序的两种方式前言在手机上运行Python需要用一个软件,叫QPython3L,当然还有别的软件也是可以运行Python的,不过我认为QPython3L是其中相对较好的一个。首先声明一下,我也只是会简单的使用有了它,就可以实现用手机和电脑进行通信了,比如在手机用Socket给电脑发指令,电脑根据收到的指令去执行不同的函数。苹果手机有没有我也不知道,可以自己搜一下如何下载我是在酷安下的,直接搜索qpython3即…

    2022年8月12日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号