
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Ditto是Event Store的集群复制工具。它通过订阅源集群的特定流,并将这些流复制到目标集群来实现功能。该工具设计为可通过Docker作为独立应用运行,使用Event Store订阅组订阅源服务器/集群。
大部分代码基于事件消费者模板,自动处理Event Store连接管理,并通过Serilog进行日志记录。应用配置为本地使用Seq,生产环境使用Datadog。
appsettings.json)或环境变量进行配置适用于需要在Event Store集群间进行流复制的场景,特别是:
Docker镜像托管于https://hub.docker.com/r/benfoster/ditto%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%E6%8B%89%E5%8F%96%EF%BC%9A
bashdocker pull benfoster/ditto
应用可通过JSON文件(appsettings.json)或环境变量进行配置,具体参数如下:
| JSON设置 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| SourceEventStoreConnectionString | Ditto_Settings__SourceEventStoreConnectionString | 源Event Store连接字符串 | |
| DestinationEventStoreConnectionString | Ditto_Settings__DestinationEventStoreConnectionString | 目标Event Store连接字符串 | |
| PersistentSubscriptionBufferSize | Ditto_Settings__PersistentSubscriptionBufferSize | 10 | 订阅缓冲区大小,对于大型、频繁更新的流应增大此值 |
| ReplicationThrottleInterval | Ditto_Settings__ReplicationThrottleInterval | 0 | 事件间等待间隔(毫秒),可用于减轻源服务器负载 |
| SkipVersionCheck | Ditto_Settings__SkipVersionCheck | false | 是否跳过流复制时的版本检查,部分复制流而非从头读取时可能需要启用 |
| Subscriptions | Ditto_Settings__Subscriptions | 用于复制的持久化订阅数组 |
幂等性
事件将无修改地复制。Event Store基于流和事件标识符提供尽力而为的幂等性。如果启用版本检查(见上文),则Event Store保证幂等性。更多信息。
指标以Prometheus格式暴露在http://localhost:5000/metrics。
Ditto最初设计用于复制$all系统流,但这会导致复制许多不需要的内部流/事件。由于https://github.com/EventStore/EventStore/issues/718%E5%BF%BD%E7%95%A5%E7%B3%BB%E7%BB%9F%E6%B5%81%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%BB%BA%E8%AE%AE%E6%98%BE%E5%BC%8F%E6%8C%87%E5%AE%9A%E8%A6%81%E5%A4%8D%E5%88%B6%E7%9A%84%E6%B5%81%E3%80%82
通常订阅类别流(如$ce-emails),然后在目标集群上填充原始流,例如:
!Ditto工作流程
要运行示例,克隆仓库并执行:
bashdocker-compose -f docker-compose.yml -f docker-compose.apps.yml up --build
这将启动:
Docker设置会自动在源Event Store中植入"customer"事件,可在http://localhost:2113/web/index.html#/streams/$ce-customer查看,并为$ce-customer类别流设置持久化订阅。
Ditto将连接到持久化订阅并开始消费事件。
测试复制
使用Event Store HTTP API在源上创建客户事件:
bashcurl --location --request POST 'http://localhost:2113/streams/customer-6d3d4dca-9889-416b-a266-4bf760261f01' \ -u admin:changeit \ -H 'Content-Type: application/vnd.eventstore.events+json' \ --data-raw '[ { "eventId": "ab932527-5b9a-4868-82f3-42194bbfd022", "eventType": "customer_registered", "data": { "first_name": "John", "last_name": "Smith", "phone_number": "0111111111111" }, "metadata": { "source": "ditto" } } ]'
然后可在http://localhost:2113/web/index.html#/streams/customer-6d3d4dca-9889-416b-a266-4bf760261f01查看流,并在http://localhost:2113/web/index.html#/streams/$ce-customer查看$ce-customer类别流中的事件。
Ditto会将此事件复制到目标服务器/集群,stdout和SEQ中会显示类似以下输出:
Replicating customer_registered #0 from customer-cbea713f-b396-46f4-8c67-81e04b37d334 (Original Event: #16) completed in 17.7 ms
最后可在目标服务器的http://localhost:4113/web/index.html#/streams/customer-6d3d4dca-9889-416b-a266-4bf760261f01查看相同流。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务