
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://coveralls.io/repos/github/Financial-Times/publish-carousel/badge.svg?branch=master](https://coveralls.io/github/Financial-Times/publish-carousel?branch=master)
一个负责持续从原生存储重新发布内容和注释的微服务。
参见Swagger YML 此处 或API Blueprint 此处。
下载源代码、依赖项并构建二进制文件:
bashgo get github.com/Financial-Times/publish-carousel cd $GOPATH/src/github.com/Financial-Times/publish-carousel go build -mod=readonly .
要测试项目,请使用:
bashgo test -mod=readonly -race ./...
存在MongoDB和Etcd集成测试,需要本地运行的MongoDB和Etcd实例。可以通过以下命令跳过这些测试(以及长时间运行的测试):
bashgo test -race -short ./...
要连接MongoDB实例,请使用环境变量MONGO_TEST_URL,例如export MONGO_TEST_URL=localhost:27017。要连接Etcd实例,请使用环境变量ETCD_TEST_URL,例如export ETCD_TEST_URL=http://localhost:2379。
服务的动态环境配置可以从etcd或文件系统获取。
要从etcd读取这些配置,请将ETCD_PEERS环境变量设置为etcd节点。
对于基于文件系统的环境配置,ETCD_PEERS必须设置为值:NOT_AVAILABLE。
无论是etcd还是基于文件的选项,都支持配置的动态更新。
根据配置选项,需要etcd或配置文件 - 参见配置来源和动态更新
要在本地运行Carousel,请使用以下命令查看需要设置的命令行参数:
bash./publish-carousel --help
请注意,如果连接到UPP集群,必须连接到主Mongo实例。
Publish Carousel在优雅关闭时会向S3写入元数据文件。此功能(执行关闭钩子)在Windows的Git Bash中无法工作,但在命令提示符中可以正常工作。在Mac上可正常工作。
以下包的职责明确:
cms包:负责以所需格式向cms-notifier发出POST请求。etcd包:负责检索和监视etcd中的键。native包:负责从Mongo中的native-store查找和读取文档。resources包:提供服务的HTTP端点。s3包:提供用于读写Amazon S3文件的高级(可重用)包。scheduler和tasks包负责Carousel的整体操作:
tasks包:提供从native-store加载原生内容并POST到cms-notifier的抽象,便于扩展支持其他需要Mongo UUID的任务。scheduler包:负责Carousel的运行管理。代码核心概念包括调度器(Scheduler)、周期(Cycle) 和周期元数据(CycleMetadata)。每个周期可处于多种状态之一。
调度器管理所有配置的周期,提供添加、删除、启停、重置单个周期及关闭所有周期的功能。
周期负责持续迭代native-store中的部分原生内容,完成一次内容子集的重新发布即完成一次迭代。
迭代整个native-store集合(如methode、wordpress),按配置的节流间隔(如每15秒)重新发布内容。
迭代配置时间窗口内(如过去一小时)的所有结果,动态调整节流以在窗口结束前完成发布。有最小节流限制,若无法在窗口内完成,将延长下一个窗口以避免遗漏。
示例:最小节流为1分钟,需发布65个项目时,将花费1小时5分钟,下一个窗口延长5分钟。
类似FixedWindow,但同时有最小和最大节流限制。周期完成后,下一次迭代从上次结束位置开始,可能导致极短的时间窗口。若窗口无内容,将进入冷却期(如5分钟)。
示例:最大节流为1分钟,5个项目需5分钟完成发布。
周期迭代过程中收集的元数据包括:
total:迭代项目总数completed:已完成数量progress:进度百分比errors:错误总数iteration:当前迭代次数currentUuid:当前发布的UUIDwindowStart/windowEnd:时间窗口起止(仅时间窗口类型)states:周期状态数组停止时,元数据(目前仅ThrottledWholeCollection类型)保存到S3;重启时尝试恢复,恢复后将跳过已完成项目继续发布。
在Active/Passive发布集群中运行,默认在被动区域禁用。通过etcd键/ft/config/publish-carousel/enable(或文件配置的/configs/toggle)控制模式,切换时将相应启停。故障转移时不会自动启动,避免集群过载。
toggle:布尔值,启用/禁用carousel,默认trueactive-cluster:布尔值,指示是否在主动集群运行,默认truename:周期名称type:类型(ThrottledWholeCollection/ScalingWindow/FixedWindow)origin:POST到cms-notifier的源系统IDcollection:native-store集合名称coolDown:迭代间隔时间throttle(每次发布间隔)timeWindow(时间窗口)、minimumThrottle(最小节流)maximumThrottle(最大节流)您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务