目录结构
 

weed-fs master 服务接口,分配文件 id,查找 volume,volume 服务接口,在指定的 volume 服务创建指定的 volume,检查 volume 服务的状态。

master 服务接口

所有的 HTTP API 都可以通过添加 &pretty=y 参数来格式化 json 输出。

分配文件 id

  1. # 简单用法:
  2. curl http://localhost:9333/dir/assign
  3. {"count":1,"fid":"3,01637037d6","url":"127.0.0.1:8080","publicUrl":"localhost:8080"}
  4. # 分配文件 id 并且指定副本类型
  5. curl "http://localhost:9333/dir/assign?replication=001"
  6. # 指定需要分配多少个文件 id
  7. curl "http://localhost:9333/dir/assign?count=5"
  8. # 指定指定的 data center
  9. curl "http://localhost:9333/dir/assign?dataCenter=dc1"

查找 volume

我们需要找到 volume 服务是否已经转移了地方。

  1. curl "http://localhost:9333/dir/lookup?volumeId=3&pretty=y"
  2. {
  3. "locations": [
  4. {
  5. "publicUrl": "localhost:8080",
  6. "url": "localhost:8080"
  7. }
  8. ]
  9. }
  10. # 其他用法:
  11. # 你可以通过一个文件 id 来查找
  12. curl "http://localhost:9333/dir/lookup?volumeId=3,01637037d6"
  13. # 如果你知道 collection,指定collection会变得快一点。
  14. curl "http://localhost:9333/dir/lookup?volumeId=3&collection=turbo"

强制垃圾回收

如果你的系统有大量的文件删除。那些删除文件的空间不会同时被删除。

有一个后台任务在检查 volume 空间的使用率。如果空白的空间比率超过一定的额度(默认值是 0.3)时,该任务就会让 volume 变成只读,然后把没有存在的文件拷到另外一个新的 volume 中。

如果你觉得不耐烦,你可以通过该方法来回收那些不用的方法。

  1. curl "http://localhost:9333/vol/vacuum"
  2. curl "http://localhost:9333/vol/vacuum?garbageThreshold=0.4"

garbageThreshold 参数是可选的,并不会改变该默认值。你通可以通过在启动时添加 garbageThreshold 参数来指定该值。

提前创建 volumes

volume 只能同时写一个文件,如果你需要并发写,你可以提前创建多个 volume

  1. curl "http://localhost:9333/vol/grow?replication=000&count=4"
  2. {"count":4}
  3. # 指定collection
  4. curl "http://localhost:9333/vol/grow?collection=turbo&count=4"
  5. # 指定 data center
  6. curl "http://localhost:9333/vol/grow?dataCenter=dc1&count=4"

检查系统状态

  1. curl "http://10.0.2.15:9333/cluster/status?pretty=y"
  2. {
  3. "IsLeader": true,
  4. "Leader": "10.0.2.15:9333",
  5. "Peers": [
  6. "10.0.2.15:9334",
  7. "10.0.2.15:9335"
  8. ]
  9. }
  10. curl "http://localhost:9333/dir/status?pretty=y"
  11. {
  12. "Topology": {
  13. "DataCenters": [
  14. {
  15. "Free": 3,
  16. "Id": "dc1",
  17. "Max": 7,
  18. "Racks": [
  19. {
  20. "DataNodes": [
  21. {
  22. "Free": 3,
  23. "Max": 7,
  24. "PublicUrl": "localhost:8080",
  25. "Url": "localhost:8080",
  26. "Volumes": 4
  27. }
  28. ],
  29. "Free": 3,
  30. "Id": "DefaultRack",
  31. "Max": 7
  32. }
  33. ]
  34. },
  35. {
  36. "Free": 21,
  37. "Id": "dc3",
  38. "Max": 21,
  39. "Racks": [
  40. {
  41. "DataNodes": [
  42. {
  43. "Free": 7,
  44. "Max": 7,
  45. "PublicUrl": "localhost:8081",
  46. "Url": "localhost:8081",
  47. "Volumes": 0
  48. }
  49. ],
  50. "Free": 7,
  51. "Id": "rack1",
  52. "Max": 7
  53. },
  54. {
  55. "DataNodes": [
  56. {
  57. "Free": 7,
  58. "Max": 7,
  59. "PublicUrl": "localhost:8082",
  60. "Url": "localhost:8082",
  61. "Volumes": 0
  62. },
  63. {
  64. "Free": 7,
  65. "Max": 7,
  66. "PublicUrl": "localhost:8083",
  67. "Url": "localhost:8083",
  68. "Volumes": 0
  69. }
  70. ],
  71. "Free": 14,
  72. "Id": "DefaultRack",
  73. "Max": 14
  74. }
  75. ]
  76. }
  77. ],
  78. "Free": 24,
  79. "Max": 28,
  80. "layouts": [
  81. {
  82. "collection": "",
  83. "replication": "000",
  84. "writables": [
  85. 1,
  86. 2,
  87. 3,
  88. 4
  89. ]
  90. }
  91. ]
  92. },
  93. "Version": "0.47"
  94. }

上面操作会创建 4 个空白的 volume

volume 服务接口

上传文件到weedfs

  1. curl -F file=@/home/www/myphoto.jpg http://127.0.0.1:8080/3,01637037d6
  2. {"size": 43234}

返回的大小是文件保存在 weed-fs 的大小,有时候文件会根据文件类型自动压缩。

直接上传文件

  1. curl -F file=@/home/chris/myphoto.jpg http://localhost:9333/submit
  2. {"fid":"3,01fbe0dc6f1f38","fileName":"myphoto.jpg","fileUrl":"localhost:8080/3,01fbe0dc6f1f38","size":68231}

这 API 只是为了方便使用,master 服务会受到一个文件 id 并且把文件保存到正确的 volume 上,该接口不支持其他参数。

删除文件

  1. curl -X DELETE http://127.0.0.1:8080/3,01637037d6

在指定的 volume 服务创建指定的 volume

  1. curl "http://localhost:8080/admin/assign_volume?replication=000&volume=3"

该命令会创建 volume 3 在该 volume 服务上。

如果你使用了副本类型(replication),那么你需要在在其他 volume 服务上创建同样的镜像文件。

检查 volume 服务的状态

  1. curl "http://localhost:8080/status?pretty=y"
  2. {
  3. "Version": "0.34",
  4. "Volumes": [
  5. {
  6. "Id": 1,
  7. "Size": 1319688,
  8. "RepType": "000",
  9. "Version": 2,
  10. "FileCount": 276,
  11. "DeleteCount": 0,
  12. "DeletedByteCount": 0,
  13. "ReadOnly": false
  14. },
  15. {
  16. "Id": 2,
  17. "Size": 1040962,
  18. "RepType": "000",
  19. "Version": 2,
  20. "FileCount": 291,
  21. "DeleteCount": 0,
  22. "DeletedByteCount": 0,
  23. "ReadOnly": false
  24. },
  25. {
  26. "Id": 3,
  27. "Size": 1486334,
  28. "RepType": "000",
  29. "Version": 2,
  30. "FileCount": 301,
  31. "DeleteCount": 2,
  32. "DeletedByteCount": 0,
  33. "ReadOnly": false
  34. },
  35. {
  36. "Id": 4,
  37. "Size": 8953592,
  38. "RepType": "000",
  39. "Version": 2,
  40. "FileCount": 320,
  41. "DeleteCount": 2,
  42. "DeletedByteCount": 0,
  43. "ReadOnly": false
  44. },
  45. {
  46. "Id": 5,
  47. "Size": 70815851,
  48. "RepType": "000",
  49. "Version": 2,
  50. "FileCount": 309,
  51. "DeleteCount": 1,
  52. "DeletedByteCount": 0,
  53. "ReadOnly": false
  54. },
  55. {
  56. "Id": 6,
  57. "Size": 1483131,
  58. "RepType": "000",
  59. "Version": 2,
  60. "FileCount": 301,
  61. "DeleteCount": 1,
  62. "DeletedByteCount": 0,
  63. "ReadOnly": false
  64. },
  65. {
  66. "Id": 7,
  67. "Size": 46797832,
  68. "RepType": "000",
  69. "Version": 2,
  70. "FileCount": 292,
  71. "DeleteCount": 0,
  72. "DeletedByteCount": 0,
  73. "ReadOnly": false
  74. }
  75. ]
  76. }

 

Weed-FS 接口 master、volume 服务接口(转)的更多相关文章

  1. 第6章 服务模式 Service Interface(服务接口)

    Service Interface(服务接口) 上下文 您正在设计企业应用程序,并且需要能够通过网络使用其部分功能.此功能需要能够被各类系统使用,因此互操作性是设计的重要方面.除互操作性之外,可能还需 ...

  2. 010.Delphi插件之QPlugins,遍历服务接口

    这个DEMO注意是用来看一个DLL所拥有的全部服务接口 演示效果如下 代码如下: unit Frm_Main; interface uses Winapi.Windows, Winapi.Messag ...

  3. 开发FTP服务接口,对外提供接口服务

    注意:本文只适合小文本文件的上传下载,因为post请求是有大小限制的.默认大小是2m,虽然具体数值可以调节,但不适合做大文件的传输 最近公司有这么个需求:以后所有的项目开发中需要使用ftp服务器的地方 ...

  4. C# 用SoapUI调试WCF服务接口(WCF中包含用户名密码的验证)

    问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapU ...

  5. 《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  6. 使用jMeter测试Solr服务接口

    之前一直用ab做简单的服务接口测试,ab功能强悍,使用简单,但是没有生成专题图和表格等功能,因此,我们决定使用jmeter来作为我们测试工具.接下来,我们将详细介绍jmeter使用的步骤,主要包括:j ...

  7. WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误

    WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while ...

  8. 服务接口API限流 Rate Limit 续

    一.前言 上一篇文章中粗浅的介绍使用Redis和基于令牌桶算法进行对服务接口API限流,本文介绍另一种算法---漏桶算法的应用.Nginx想必大家都有所了解是一个高性能的 HTTP 和反向代理服务器, ...

  9. 服务接口API限流 Rate Limit

    一.场景描述 很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统. 也就是面对大流量时,如何进行流量控制? 服务接口的流量 ...

随机推荐

  1. Android知识点textview加横线的属性

    textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线 textView.getPaint().setAntiAlias(tr ...

  2. 提高modem的core dump级别

    zhangze@zhangze-OptiPlex-7040:~/e2_8939-E2-2104026-CTA/device/qcom/common$ git showcommit be2b5cb33a ...

  3. hive之权限问题AccessControlException Permission denied: user=root, access=WR

    问题描述:在集群上,用hive分析数据出现如下错误 FAILED: Execution Error, return code from org.apache.hadoop.hive.ql.exec.D ...

  4. vue和react动画区别

    触发动画 vue触发动画是 v-show,v-if ,动态组件或者组件的根节点 react 是CSSTransition上的属性 in 是true 或false触发动画

  5. three.js学习:纹理Texture之平面纹理

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  6. 安全测试8_Web安全实战2(暴力破解)

    1.暴力破解的概念 顾名思义,暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录.因为理论上来说,只要字典足够庞大,枚举总是能够成功的! 2.暴力破解的实战 在有了之 ...

  7. OSB格式(REST)转化(XML到JSON,JSON到XML)

    OSB转换项目操作手册 新建一个OSB项目 建立以下文件夹,以便更规范的管理工程 一.XML转JSON 1.导入wsdl文件 1)右键wsdl文件夹,选择import选项 2)在弹出框中选择Servi ...

  8. 最全spring boot视频系列,你值得拥有

    ================================== 从零开始学Spring Boot视频 ================================== àSpringBoot ...

  9. spring揭密学习笔记(1) --spring的由来

    1.spring起源于在EJB暴露出各种严重问题的情况应运而生. Spring是于2003年兴起的一个轻量级的Java开发框架, Spring倡导一切从实际出发,以实用的态度来选择适合当前开发场景的解 ...

  10. UiAutomator 代码记录 : 遍历桌面

    package test_one; import java.lang.*; import java.io.File; import com.android.uiautomator.core.UiDev ...