PGXN v2/服务处置

来自 PostgreSQL 维基
跳转到导航跳转到搜索

本文档概述了雄心勃勃的 PGXN v2 服务和架构,以及对现有服务的检查,并说明它们将如何逐步重构或替换以适应更新的平台。

TL;DR:我们打算使 PGXN v2 元数据标准尽可能地向后兼容当前的 元规范,以最大程度地减少接口更改并简化将一个服务替换为另一个服务的过程。这对于根注册中心及其客户端来说尤其重要。

为 PGXN v2 构建的服务

根注册中心 REST API
处理发布、索引、UX API、根注册中心管理和维护任务。需要身份验证和授权。
根注册中心
所有扩展的 rsync 可静态文件注册中心,以及列出所有扩展、用户等的列表。兼容并扩展 PGXN 根注册中心。由根注册中心 REST API 管理。只读,不需要身份验证。
用户管理 REST API
用于用户注册、管理和凭据(包括链接到经过批准的第三方身份提供者)、扩展权限、服务注册、API 令牌(OAuth2)和管理的 API。需要身份验证和授权。
根注册中心搜索 REST API
提供额外的 API 来服务 Web UX,包括文档生成和全文索引。只读,不需要身份验证。
交互
服务用于管理事件队列,发布注册客户端的 Webhook 请求,以及接受注册和授权客户端的请求以更新扩展的注册中心元数据。
外观?
外观服务,将所有这些 API 封装在一个域下?
Web UX
提供所有用户功能,包括只读公共搜索、浏览扩展、文档、用户、标签等,以及阅读 PGXN v2 本身的文档。还包括对用户注册和身份验证、配置文件编辑和扩展权限管理的支持,以及对管理员授权用户的系统管理任务(用户管理、镜像管理?、分类管理等)。
公告
交互 Webhook 监听器,发布发布公告。
仓库统计
交互 Webhook 监听器,通过 交互 统计 API 更新仓库统计信息。还定期更新统计信息(每周?)。
SDK
从源代码构建和安装扩展以供多个构建管道使用,工具用于创建新的扩展、管理元数据、在多个平台和 Postgres 版本上测试以及捆绑和发布。专为静态二进制 CLI 设计;可能用 Rust 或 Go 编写。
托管二进制构建农场
支持虚拟机、容器和裸机。使用构建 SDK 运行代码以处理构建。
二进制构建服务
交互 Webhook 调用触发,针对所有支持的平台将构建放入队列,并将新的二进制构建放入二进制注册中心。
二进制注册中心
包含所有支持平台的二进制包的只读静态文件服务。由 二进制构建服务 管理。
二进制注册中心的额外 REST API?
CLI
命令行客户端,使用 SDK 从源代码构建和安装、从二进制注册中心安装以及管理开发任务和发布任务。用支持跨编译的静态编译语言编写,以方便将代码发布到多个平台,可能是 Rust 或 Go。从 trunk CLI 和 pgrx 发展而来或借鉴其模式和逻辑。
CI/CD 插件
使用 CLI 在各种平台、架构、操作系统和 Postgres 版本上轻松编译、安装和测试扩展,以及在 PGXN 上捆绑和发布的模式。可能需要多个,但至少需要一个:一个 GitHub 操作。

现有服务处置

pgxn-manager
基本身份验证门控网站和 Postgres 数据库,用于上传扩展发布、更改密码、编辑权限和管理服务,以及一些静态文档页面。
处置
使用 绞杀者模式 逐步替换为 根注册中心 REST API用户管理 REST APIWeb UX 服务。目标是最终完全替换它,而无需数据迁移,通过从同一个数据库开始进行迭代。只有发布 API 是以编程方式使用的,虽然它将更改其身份验证协议,但它可以保持其现有接口。
pgxn-consumer
服务,在社交媒体上发布新发布的公告。
处置
继续运行,依靠来自根注册中心 Postgres 数据库的 NOTIFY 消息,但最终替换为 公告 服务,该服务依赖 交互 Webhook 调用。
master.pgxn.org
静态 JSON 和 zip 文件的根镜像。由 pgxn-manager 管理,包括用于某些维护任务的 CLI。
处置
保持原样,但将管理从 pgxn-manager 切换到新的 根注册中心 REST API。现有的文件位置、URL 模式和下载文件将保持原样,但随着时间的推移会添加更多文件和格式。重命名为 root.pgxn.org
pgxn-api
镜像 master.pgxn.org 并为 UX 索引新发布的版本,包括文档生成、扩展、文档、分发、用户和标签的全文索引,以及一些静态文档页面。
处置
替换为 根注册中心搜索 REST API。至少保持运行,直到 pgxn-site 和 pgxnclient 停止使用它,监控日志以查看使用情况。或者,如果继续有流量,则教新服务提供向后兼容的 API 并将其替换掉。
pgxn-site
围绕 pgxn-api 的薄 Web HTML UX 包装器。
处置
替换为新的 Web UX
pgxnclient
用于查找、下载、安装和启用扩展的 Python CLI。
处置
替换为新的 CLI。只要 pgxn-api 运行,它可能继续得到支持,除非新 API 提供客户端仍然可以使用的兼容 API。
pgxn-utils
用于为开发搭建扩展、管理元数据、捆绑和发布到 PGXN 的 Ruby CLI。目前不构建。
处置
替换为新的 CLI
pgxn-tools
用于在多个版本的 Postgres 上测试扩展的 Docker 镜像,以及用于捆绑和发布扩展到 PGXN 的简单 bash 脚本。目前不构建。
处置
重构为使用 CLI,但最终替换为 CI/CD 插件以提高平台兼容性。
trunk 注册中心
用于二进制扩展分发的数据库和 API。
处置
要么发展成 二进制注册中心,要么至少提供代码和模式供其采用。最终可能会重构为镜像 二进制注册中心,或者被它替换。
trunk CLI
为 trunk 注册中心构建二进制文件,以及从注册中心查找、下载和安装二进制文件。还带有一个命令来发布扩展,但目前受拉取请求限制。
处置
发展成或提供新的 CLI 的模式和逻辑,该 CLI 应该提供兼容或非常相似的接口,以最大程度地减少使用它的人(例如 Tembo Cloud)的迁移工作量。
pgt.dev
用于发现、浏览和下载二进制扩展包的网站。
处置
继续保持原样,直到准备好将人们重定向到新的 PGXN Web UX(其中将包括二进制包信息和链接、文档和分类)或者它可以更新为依赖 根注册中心 REST API根注册中心搜索 REST API 以提供其功能。