轩辕镜像
轩辕镜像专业版
个人中心搜索镜像
交易
充值流量我的订单
工具
工单支持镜像收录Run 助手IP 归属地密码生成Npm 源Pip 源
帮助
常见问题我要吐槽
其他
关于我们网站地图

官方QQ群: 13763429

轩辕镜像
镜像详情
samply/beam-broker
官方博客使用教程热门镜像工单支持
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。
轩辕镜像 - 国内开发者首选的专业 Docker 镜像下载加速服务平台 - 官方QQ群:13763429 👈点击免费获得技术支持。
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

beam-broker Docker 镜像下载 - 轩辕镜像

beam-broker 镜像详细信息和使用指南

beam-broker 镜像标签列表和版本信息

beam-broker 镜像拉取命令和加速下载

beam-broker 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

beam-broker
samply/beam-broker

beam-broker 镜像详细信息

beam-broker 镜像标签列表

beam-broker 镜像使用说明

beam-broker 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

Samply.Beam分布式通信引擎(代理)
0 次下载activesamply镜像
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源
中文简介版本下载
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源

beam-broker 镜像详细说明

beam-broker 使用指南

beam-broker 配置说明

beam-broker 官方文档

Samply.Beam 分布式通信引擎

!Logo

镜像概述和主要用途

Samply.Beam是一个分布式任务代理,专为在严格的网络环境中进行高效通信而设计。它提供跨严格网络边界的常用通信模式、端到端加密和签名,以及基于易用REST API的证书管理和验证功能。

核心功能和特性

  • 分布式通信层:提供可靠、高性能的跨网络通信能力
  • 网络边界穿透:优化在严格网络环境(如医院内网)中的通信
  • 安全特性:
    • 端到端加密和签名
    • 证书管理和验证
    • 基于BeamId的身份识别和认证
  • 通信模式:支持常见分布式计算通信模式
  • API接口:简单易用的REST API
  • 灵活的任务处理:
    • 任务失败策略(重试、丢弃)
    • 任务过期时间(TTL)管理
    • 结果状态跟踪(已认领、成功、临时失败、永久失败)
  • 高级通信功能:
    • 长轮询(Long Polling)支持
    • 服务器发送事件(SSE)支持(实验性)
  • 健康检查:内置健康状态监控接口

使用场景和适用范围

Samply.Beam特别适合以下场景:

  • 高安全性网络环境:如医院内网、金融机构网络等严格受限环境
  • 分布式计算系统:需要跨节点可靠通信的联邦应用
  • 限制性网络边界:存在严格防火墙规则、禁止入站连接或使用特殊HTTP代理的网络
  • 多机构协作:不同组织或站点间需要安全通信的场景
  • 替代复杂解决方案:作为消息队列、***覆盖网络等复杂方案的轻量级替代

系统架构

!Architecture Schema

Samply.Beam由两个中央运行组件和每个分布式节点上的一个代理组成:

  • Samply.Broker:中央组件,负责促进连接、存储和转发任务与消息,并与中央证书机构通信
  • Samply.Proxy:本地代理,处理与broker的所有通信,以及身份验证、加密和签名
  • 证书机构:基于Hashicorp Vault的实例,管理所有用于签名和加密有效负载所需的证书

身份标识:BeamId

系统中的每个组件都通过其分层的BeamId唯一标识:

app3.proxy2.broker1.samply.de
<--------------------------->
            AppId
     <---------------------->
             ProxyId
            <--------------->
                 BrokerId
  • BrokerId:必须是可通过DNS解析的FQDN(完全限定域名)
  • ProxyId:通过代理证书表示,格式为CN=proxy2.broker2.samply.de
  • AppId:通过与代理通信时使用的API密钥确定

使用方法和配置说明

基本概念

Samply.Beam基于任务和结果的通信模型:

  • 任务(Task):由应用创建,包含要执行的工作描述
  • 结果(Result):由任务接收方创建,包含任务执行状态和结果

数据对象结构

任务(Task)

{
  "id": "70c0aa90-bfcf-4312-a6af-42cbd57dc0b8",
  "from": "app7.proxy-hd.broker-project1.samply.de",
  "to": [
    "app1.proxy-hd.broker-project1.samply.de",
    "app5.proxy-ma.broker-project1.samply.de"
  ],
  "body": "需要完成的工作描述",
  "failure_strategy": {
    "retry": {
      "backoff_millisecs": 1000,
      "max_tries": 5
    }
  },
  "ttl": "30s",
  "metadata": "代理可读取并使用此字段,例如代表应用应用过滤器"
}

字段说明:

  • id:任务的UUID标识符
  • from:提交应用的BeamID(由Proxy根据身份验证信息自动设置)
  • to:允许检索任务并提交结果的工作者BeamID列表
  • body:工作描述,Broker不解释此内容
  • failure_strategy:建议客户端如何处理失败,可选值:discard(丢弃)、retry(重试)
  • failure_strategy.retry:重试策略,max_tries(最大重试次数)和backoff_millisecs(重试间隔毫秒数)
  • ttl:生存时间,超时后Broker将删除任务及其结果
  • metadata:代理可读取的关联数据,可为任意类型

结果(Result)

{
  "from": "app1.proxy-hd.broker-project1.samply.de",
  "to": [
    "app7.proxy-hd.broker-project1.samply.de"
  ],
  "task": "70c0aa90-bfcf-4312-a6af-42cbd57dc0b8",
  "status": "succeeded",
  "body": "成功完成的结果数据",
  "metadata": ["任意", "数据", "类型", "都是", "允许的"]
}

字段说明:

  • from:提交结果的客户端BeamID
  • to:结果的预期接收者BeamID
  • task:关联任务的UUID
  • status:工作结果状态,允许值:claimed(已认领)、tempfailed(临时失败)、permfailed(永久失败)、succeeded(成功)
  • body:结果负载,除claimed状态外,所有状态都需要此字段
  • metadata:代理可读取的关联数据,可为任意类型且不加密

API使用说明

创建任务

创建新任务,由指定的工作者处理。当前body大小限制为10MB。

  • 方法: POST
  • URL: /v1/tasks
  • 请求体: 任务对象
  • 认证头: Authorization: ApiKey <BeamID> <ApiKey>

示例:

curl -k --json '{"body":"生命、宇宙和一切的终极问题的答案是什么?","failure_strategy":{"retry":{"backoff_millisecs":1000,"max_tries":5}},"from":"app.proxy1.broker.example.de","id":"70c0aa90-bfcf-4312-a6af-42cbd57dc0b8","metadata":"代理可读取此字段","to":["app.proxy2.broker.example.de"],"ttl":"60s"}' \
  -H "Authorization: ApiKey app.proxy1.broker.example.de AppKey" \
  [***]

响应:

HTTP/1.1 201 Created
Location: /tasks/70c0aa90-bfcf-4312-a6af-42cbd57dc0b8
Content-Length: 0

注意:服务器可能忽略提交的id属性并自动生成自己的ID,应使用响应中Location头指定的URL来引用任务。

获取任务

工作者定期调用此端点来检索提交的任务。

  • 方法: GET
  • URL: /v1/tasks
  • 参数:
    • from (可选): 仅获取由此ID创建的任务
    • to (可选): 仅获取定向到此ID的任务
    • filter (可选): 仅获取满足指定过滤条件的任务
      • filter=todo: 匹配要由查询客户端处理的未完成任务
  • 认证头: Authorization: ApiKey <BeamID> <ApiKey>

示例:

curl -k -H "Authorization: ApiKey app.proxy2.broker.example.de AppKey" \
  [***]

响应:

[
  {
    "id": "70c0aa90-bfcf-4312-a6af-42cbd57dc0b8",
    "from": "app.proxy1.broker.example.de",
    "to": ["app.proxy2.broker.example.de"],
    "body": "生命、宇宙和一切的终极问题的答案是什么?",
    "failure_strategy": {"retry":{"backoff_millisecs":1000,"max_tries":5}},
    "ttl": "60s",
    "metadata": "代理可读取此字段"
  }
]

创建结果

创建或更新任务的结果。当前body大小限制为10MB。

  • 方法: PUT
  • URL: /v1/tasks/<task_id>/results/<app_id>
  • 请求体: 结果对象
  • 认证头: Authorization: ApiKey <BeamID> <ApiKey>

示例:

curl -k -X PUT --json '{"from":"app.proxy2.broker.example.de","metadata":["任意","数据类型","都是","允许的"],"status":"succeeded","body":"答案是42","task":"70c0aa90-bfcf-4312-a6af-42cbd57dc0b8","to":["app.proxy1.broker.example.de"]}' \
  -H "Authorization: ApiKey app.proxy2.broker.example.de AppKey" \
  [***]

响应:

HTTP/1.1 204 No Content
Content-Length: 0

获取结果

任务提交者调用此端点来检索结果。

  • 方法: GET
  • URL: /v1/tasks/<task_id>/results
  • 认证头: Authorization: ApiKey <BeamID> <ApiKey>

示例:

curl -k -H "Authorization: ApiKey app.proxy1.broker.example.de AppKey" \
  [***]

响应:

[
  {
    "from": "app.proxy2.broker.example.de",
    "to": ["app.proxy1.broker.example.de"],
    "task": "70c0aa90-bfcf-4312-a6af-42cbd57dc0b8",
    "status": "succeeded",
    "body": "答案是42",
    "metadata": ["任意","数据类型","都是","允许的"]
  }
]

长轮询API访问

所有读取端点都支持长轮询,作为常规(重复)轮询的高效替代方案。

  • 参数:
    • wait_count: API调用将阻塞,直到有这么多结果可用
    • wait_time: 阻塞的最长时间(如果未指定单位,默认为秒)

示例:

# 阻塞直到有1个结果可用或30秒过去
curl -k -H "Authorization: ApiKey app.proxy1.broker.example.de AppKey" \
  [***]

服务器发送事件(SSE) API (实验性)

为了更好地支持异步用例,开发版本支持服务器发送事件(Server-Sent Events)用于结果检索。

  • 方法: GET
  • URL: /v1/tasks/<task_id>/results?wait_count=3
  • 头: Accept: text/event-stream
  • 参数: 与长轮询相同的参数

示例:

curl -k -H "Accept: text/event-stream" \
  -H "Authorization: ApiKey app.proxy1.broker.example.de AppKey" \
  [***]

响应:

event: new_result
data: {"body":"答案是42","from":"app.proxy2.broker.example.de","metadata":["任意","数据类型","都是","允许的"],"status":"succeeded","task":"70c0aa90-bfcf-4312-a6af-42cbd57dc0b8","to":["app.proxy1.broker.example.de"]}

健康检查

监控Samply.Beam组件的运行状态。

  • 方法: GET
  • URL: /v1/health

Proxy响应:

HTTP/1.1 200 OK
Content-Length: 0

Broker响应:

{
  "summary": "healthy",
  "vault": {
    "status": "ok"
  }
}

Docker部署方案

开发环境

开发环境包含一个broker和两个proxy:

# 启动开发环境
./dev/beamdev start

# 或在后台运行服务
./dev/beamdev start_bg
docker-compose logs -f

Docker Run示例

启动Broker

docker run -d \
  --name beam-broker \
  -p 8080:8080 \
  -e RUST_LOG=info \
  -e BROKER_ID=broker.example.de \
  -e VAULT_ADDR=[***] \
  -e VAULT_TOKEN=your-vault-token \
  samply/beam-broker:latest

启动Proxy

docker run -d \
  --name beam-proxy \
  -p 8081:8080 \
  -e RUST_LOG=info \
  -e PROXY_ID=proxy1.broker.example.de \
  -e BROKER_URL=[***] \
  -v ./privkey.pem:/app/privkey.pem \
  -v ./rootcert.pem:/app/rootcert.pem \
  samply/beam-proxy:latest

Docker Compose示例

version: '3.8'

services:
  vault:
    image: hashicorp/vault:latest
    ports:
      - "8200:8200"
    environment:
      - VAULT_DEV_ROOT_TOKEN_ID=dev-root-token
      - VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200
    cap_add:
      - IPC_LOCK
    command: server -dev

  broker:
    image: samply/beam-broker:latest
    depends_on:
      - vault
    ports:
      - "8080:8080"
    environment:
      - RUST_LOG=info
      - BROKER_ID=broker.example.de
      - VAULT_ADDR=[***]
      - VAULT_TOKEN=dev-root-token
    restart: unless-stopped

  proxy1:
    image: samply/beam-proxy:latest
    depends_on:
      - broker
    ports:
      - "8081:8080"
    environment:
      - RUST_LOG=info
      - PROXY_ID=proxy1.broker.example.de
      - BROKER_URL=[***]
      - ROOTCERT_FILE=/app/rootcert.pem
      - PRIVKEY_FILE=/app/privkey.pem
    volumes:
      - ./proxy1/privkey.pem:/app/privkey.pem
      - ./proxy1/rootcert.pem:/app/rootcert.pem
    restart: unless-stopped

  proxy2:
    image: samply/beam-proxy:latest
    depends_on:
      - broker
    ports:
      - "8082:8080"
    environment:
      - RUST_LOG=info
      - PROXY_ID=proxy2.broker.example.de
      - BROKER_URL=[***]
      - ROOTCERT_FILE=/app/rootcert.pem
      - PRIVKEY_FILE=/app/privkey.pem
    volumes:
      - ./proxy2/privkey.pem:/app/privkey.pem
      - ./proxy2/rootcert.pem:/app/rootcert.pem
    restart: unless-stopped

配置参数和环境变量

Broker环境变量

环境变量描述默认值
BROKER_IDBroker的BeamIDbroker.example.de
VAULT_ADDRHashicorp Vault地址`[***]
查看更多 beam-broker 相关镜像 →
apache/beam_go_sdk logo
apache/beam_go_sdk
by The Apache Software Foundation
Apache Beam Go SDK的工作器容器镜像,用于运行Beam批处理和流处理数据并行处理管道的工作节点,支持在多种分布式后端执行。
51M+ pulls
上次更新:5 天前
pactfoundation/pact-broker logo
pactfoundation/pact-broker
by Pact Foundation
开源Pact契约管理工具的Docker镜像分发版本,用于存储和管理契约文件,支持消费者驱动契约测试的协作。
1950M+ pulls
上次更新:3 个月前
apache/beam_java11_sdk logo
apache/beam_java11_sdk
by The Apache Software Foundation
暂无描述
21M+ pulls
上次更新:5 天前
apache/beam_java8_sdk logo
apache/beam_java8_sdk
by The Apache Software Foundation
提供Apache Beam Java 8软件开发工具包环境,支持使用Java 8开发统一的批处理与流处理数据管道。
2100K+ pulls
上次更新:5 个月前
apache/beam_python3.8_sdk logo
apache/beam_python3.8_sdk
by The Apache Software Foundation
Apache Beam SDK Python 3.8镜像,提供统一编程模型支持,用于开发批处理和流处理数据管道的Python 3.8开发环境。
91M+ pulls
上次更新:1 年前

常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像免费版与专业版有分别支持哪些镜像?

免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

轩辕镜像下载加速使用手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

🔐

登录方式进行 Docker 镜像下载加速教程

通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤

🐧

Linux Docker 镜像下载加速教程

在 Linux 系统上配置轩辕镜像源,支持主流发行版

🖥️

Windows/Mac Docker 镜像下载加速教程

在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统

📦

Docker Compose 镜像下载加速教程

在 Docker Compose 中使用轩辕镜像加速,支持容器编排

📋

K8s containerd 镜像下载加速教程

在 k8s 中配置 containerd 使用轩辕镜像加速

🔧

宝塔面板 Docker 镜像下载加速教程

在宝塔面板中配置轩辕镜像加速,提升服务器管理效率

💾

群晖 NAS Docker 镜像下载加速教程

在 Synology 群晖NAS系统中配置轩辕镜像加速

🐂

飞牛fnOS Docker 镜像下载加速教程

在飞牛fnOS系统中配置轩辕镜像加速

📱

极空间 NAS Docker 镜像下载加速教程

在极空间NAS中配置轩辕镜像加速

⚡

爱快路由 ikuai Docker 镜像下载加速教程

在爱快ikuai系统中配置轩辕镜像加速

🔗

绿联 NAS Docker 镜像下载加速教程

在绿联NAS系统中配置轩辕镜像加速

🌐

威联通 NAS Docker 镜像下载加速教程

在威联通NAS系统中配置轩辕镜像加速

📦

Podman Docker 镜像下载加速教程

在 Podman 中配置轩辕镜像加速,支持多系统

📚

ghcr、Quay、nvcr、k8s、gcr 等仓库下载镜像加速教程

配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤

🚀

专属域名方式进行 Docker 镜像下载加速教程

无需登录即可使用轩辕镜像加速服务,更加便捷高效

需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429

商务:17300950906
|©2024-2025 源码跳动
商务合作电话:17300950906|Copyright © 2024-2025 杭州源码跳动科技有限公司. All rights reserved.