2 个版本

0.1.1-unstable2024年3月2日
0.1.0-unstable2024年2月26日

#23 in #http-post

每月49次下载

EUPL-1.2

75KB
1.5K SLoC

yeet/yoink — 文件存储和检索服务

WIP Latest version License Language Build Status Issues Dependency Status Code size

一个可以将文件上传到服务中以从其他地方检索的服务。这旨在简化具有可配置持久后端的集群本地文件共享。

这里的一个关键方面是,此类服务可以减轻与对象存储、数据库或其他系统的通信,从而使应用程序中的实际存储和检索简化为简单的HTTP POST和GET操作,前提是提供文件ID。

⚠️ 此服务处于开发中。

sequenceDiagram
    autonumber
    
    Alice->>Alice's yeyo: do yeet
    activate Alice;
    Note over Alice,Alice's yeyo: Alice stores a file
    activate Alice's yeyo;
    Alice's yeyo -) Storage Backend: take file;
    activate Storage Backend;
    deactivate Storage Backend;
    Alice's yeyo-->>Alice: okie #9829;
    deactivate Alice's yeyo;
    deactivate Alice;

    Bob->>Bob's yeyo: do yoink
    activate Bob;
    Note over Bob,Bob's yeyo: Bob needs the file
    activate Bob's yeyo;
    Bob's yeyo ->> Alice's yeyo: maybe yoink?
    activate Alice's yeyo;
    Note over Bob's yeyo,Alice's yeyo: Bob's yeyo attempts to fetch the file from the source
    
    alt has file
        Alice's yeyo --) Bob's yeyo: here file #9829;
        Note over Alice's yeyo,Bob's yeyo: If possible, Alice's yeyo returns the file directly
    else no file
        Alice's yeyo --) Bob's yeyo: sry no yoink
        Note over Alice's yeyo,Bob's yeyo: Eventually the file would be missing
        
        Bob's yeyo ->> Storage Backend: give file
        activate Storage Backend;
        Note over Bob's yeyo,Storage Backend: Bob's yeyo then talks directly to the Storage backend
        Storage Backend --) Bob's yeyo: here file
        deactivate Storage Backend;
    end
    deactivate Alice's yeyo;
    Bob's yeyo-->>Bob: here file
    deactivate Bob's yeyo;
    deactivate Bob;

HTTP API

存储文件

  • /yeet - 将文件交给服务进行存储并返回其ID。
    • ?file_name=... - 可选。允许指定文件的元数据名称。

检索文件

  • /yoink/:id - 根据其ID从存储中检索文件。

指标

  • /metrics - 以Prometheus/OpenMetrics格式生成指标。

健康检查

  • /startupz - 适用于Kubernetes启动探测。
  • /readyz - 适用于Kubernetes就绪探测。
  • /livez - 适用于Kubernetes生存探测。
  • /health - 适用于完整的健康检查(例如,由Google Cloud Load Balancer执行)。
  • /healthz - 适用于人工检查。

关闭

  • /stop - 启动优雅关闭。

依赖项

~19–31MB
~465K SLoC