Skip to content

Repository files navigation

Infra Protocol

中文 / English

Infra Protocol 面向各类个人基础设施(Personal Infra),提供一组中立、统一登记且可独立演进 的协议。当前正式包含的第一个协议是 Infra Discovery:服务声明自己实现了哪些协议版本,以及 可以通过哪些 binding 访问;消费者从中选择自己确实理解的组合,然后直接连接服务。

Infra Discovery 不是 daemon、代理、RPC 框架或通用数据模型,也不定义抽象的“能力”。类似的 业务能力可能由完全不同且互不兼容的协议提供,因此机器只按具体协议 ID、精确版本和 binding 判断兼容性。

当前稳定版本为 infra.discovery.registration@20260810.1

注册内容

一个注册清单只包含:

  • 稳定服务身份与每次启动都会变化的 generation;
  • 有期限的 lease;
  • 一组 (protocol, protocol versions, binding, endpoint) offer。

同一个 service.kind + service.instance_id 同时只能有一个发布者续租稳定 manifest;需要并行 发布的进程必须使用不同的 instance_id

发现完成后,消费者与发布者直接通信。请求、响应、状态机、错误和数据安全边界全部属于被选中 的应用协议,不属于 discovery。

默认运行根

部署类型 根目录
macOS 非沙箱 <_CS_DARWIN_USER_TEMP_DIR>/infra-protocol
Linux $XDG_RUNTIME_DIR/infra-protocol
Windows 非 packaged 桌面进程 <FOLDERID_LocalAppData>\Infra Protocol\Runtime

macOS 沙箱使用所有参与者共同拥有权限的 <App Group container>/infra-protocol,或者共同的绝对 INFRA_PROTOCOL_RUNTIME_DIR。 Windows packaged 进程以及其他默认目录被隔离的环境必须使用共同、可访问的绝对 override。 无法获得共同根时,discovery unavailable。

Unix Socket endpoint 使用最多 16 个安全 ASCII 字符的短 opaque ID。发布者和消费者都必须 按最终绝对路径的字节长度检查平台 sockaddr_un 上限;Schema 中的短名称限制不能替代这项 动态检查。

仓库导航

  • SPEC.md:canonical discovery 规范及两个本机 binding。
  • schemas/:注册清单 JSON Schema。
  • fixtures/:有效及无效注册样例。
  • conformance/:Schema 之外的租约、选择和文件系统语义检查。
  • MIGRATION.md:现有三方 observer 合同如何拆离 discovery。

observe.snapshoteventscontrol 当前均不由本版本定义。真正需要时,它们应作为独立 协议加入,而不是扩张 discovery。

验证

测试使用 Python 和 Draft 2020-12 jsonschema

python3 -m unittest discover -s tests -v

许可证:MIT

About

面向个人基础设施的中立协议集合,当前定义轻量级本机服务发现。Neutral protocols for personal infrastructure, currently defining lightweight local service discovery.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages