PGXN v2/服务配置

来自 PostgreSQL Wiki
跳转至导航跳转至搜索

对雄心勃勃构想中的 future PGXN 服务和架构进行总结,然后对现有服务以及它们将如何逐步重构或替换为已更新平台进行检查。

太长不看:我们打算让 PGXN v2 元数据标准尽可能向后兼容当前 元数据规范,以最大限度地减少界面更改,简化相互服务替换。这对于根注册表及其客户端来说尤其关键。

为 PGXN v2 构建服务

根注册表 REST API
处理发行版、索引、UX API、根注册表管理和维护任务。需要身份验证和授权。
根注册表
所有扩展的 registryrsync 静态文件、加上列出所有扩展、用户等的 files。兼容于 PGXN 根注册表并扩展了后者。由根注册表 REST API 管理。只读,无需身份验证。
用户管理 REST API
用于用户注册、管理和凭证(包括已批准的第三方身份提供商的链接)、扩展权限、服务注册、API 令牌(OAuth2)和管理的 API。需要身份验证和授权。
根注册表搜索 REST API
提供其他 API 来服务网页 UX,包括文档生成和全文索引。只读,无需身份验证。
交互
用于管理事件队列、发布注册客户端的 Webhook 请求的 service,并接受已注册并授权的客户端的请求来更新扩展的注册表元数据。
门面?
门面 service 来将所有这些 API 封装在单个域下?
网页 UX
提供所有用户功能,包括只读公共搜索、浏览扩展、文档、用户、标签等,以及为 PGXN v2 本身阅读文档。还包括对用户注册和身份验证、资料编辑和扩展权限管理的支持,以及对管理员授权用户开放的系统管理任务(用户管理员、镜像管理员?、分类管理员等)。
公告
用于发布发行版公告的交互 Webhook 侦听器。
仓库状态
通过 交互状态 API 更新仓库状态的交互 Webhook 侦听器。另定期(每周?)更新状态。
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 用户体验服务进行替换。目标是用相同的数据库进行迭代,最终完全取代它,无需进行数据迁移。只有版本 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 并为用户体验索引新版本,包括文档生成、扩展的全文索引、文档、分发、用户和标签,以及一些静态文档页面。
处理
替换为根注册表搜索 REST API。至少在 pgxn-site 和 pgxnclient 停止使用之前一直运行,并监控日志以进行使用情况。或者,如果流量持续存在,则教新服务提供向后兼容的 API 并予以替换。
pgxn-site
围绕 pgxn-api 的 Web HTML 用户体验封装。
处理
替换为新的Web UX
pgxnclient
用于查找、下载、安装和启用扩展的 Python CLI。
处理
替换为新的CLI。只要 pgxn-api 运行即可继续支持,除非新 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 --- 该 UX 将包括二进制包信息和链接、文档和分类 --- 或者直到它可以被更新为依赖于根注册表 REST API根注册表搜索 REST API以提供其功能。