
聊 Palantir 的架构前面几篇我们把 Foundry、Ontology、AIP 都过了一遍。这些东西看起来各自独立但有个问题我一直没正面回答它们到底跑在哪一个客户在 AWS 上跑着 Foundry另一头部队的单兵终端里跑着 AIP还有一批政府系统彻底断网、物理隔离在机房里。这三处的网络条件、硬件、合规要求天差地别但 Palantir 的说法是同一套软件栈都能上。这不可能是巧合背后一定有一层被有意藏在产品光环下面的东西在兜底。这一层就是Rubix。它不出现在任何产品的对外宣传里不卖单独的 license但你用的每一个 Palantir 产品都坐在它上面。我的看法是理解 Rubix 才算真正理解 Palantir 为什么能进国防部、能上战车、能进银行核心机房理解不了这层前面几篇讲的东西你都只在云上 demo 里成立。第一层Rubix 到底是个什么用一句话说Rubix 是 Palantir 全系产品的运行底座。Foundry、AIP、Gotham以及管它们的 Apollo全都是部署在 Rubix 之上的一组工作负载而不是自己各自带一套操作系统和集群管理能力。这里有个容易绕进去的弯。我们习惯把基础设施底座想成 Kubernetes 或者某个云厂商的托管服务。Rubix 确实构建在 Kubernetes 之上但它干的事比 K8s 多一层K8s 解决的是在一堆机器上把容器调度起来Rubix 解决的是在任何一堆机器上用同一套语义把 Palantir 的软件一致地调度、隔离、监控、保护起来。机器可以是 AWS 的 EC2可以是某涉密机房的裸金属可以是装在一辆战术车辆里的加固服务器也可以是一台断网的笔记本。机器差异被 Rubix 吞掉上层的产品感知不到。所以 Palantir 的架构分层从下往上是这样的最底下是 Rubix 这一层运行与管理底座往上是数据存储与计算平面再往上是 Ontology 语义层最上面才是 Foundry、AIP 这些对外的应用。Rubix 是所有东西的根它不出镜但它一旦出问题上面几层全部失灵。为什么说它不出镜很关键因为客户买的是 AIP 的能力不是 Rubix 的能力。Rubix 是 Palantir 作为一个公司能持续把自己的软件塞进各种极端环境的根本竞争力但它本身不是一个能单独讲出故事的产品。它是那种你感觉不到它但它一直在的底层。第二层为什么非要一套底座跑遍所有环境如果你只服务云端客户这事根本不需要。在 AWS 上你有一整套托管的网络、身份、密钥、监控直接用能跑就行。Palantir 的麻烦在于它的客户里有一大批根本不在云上或者只在部分时间在云上。把这个光谱拉直了看一端是完全连接的商用公有云中间是私有云、本地数据中心再过去是战术边缘最远端是彻底物理隔离、连一根网线都没有的air-gapped环境。每一段对基础设施的要求是互相冲突的连接性上云上随时能拉取镜像、回传遥测边缘经常是断断续续的卫星链路air-gapped 一字网络不通。算力上云上可以堆上千核战车上的加固机可能只有几十核还要留出冗余跑火控。合规上银行要你证明数据不出特定可用区情报系统要你证明连 Rubix 自身的管理通道都不会把数据带出去。传统做法是什么针对每种环境重新搞一套部署方案。云上用这套 CI/CD本地用另一套脚本边缘再雇人手工装。结果就是同一份产品代码到了不同环境行为不一致bug 在各处表现不同安全审计每次都要重做一遍。这种环境分裂在普通 SaaS 公司只是交付成本问题在国防和金融监管场景下是致命的因为断网那端的系统一旦行为异常你可能连日志都拿不回来。Rubix 的答案很朴素把环境的差异收敛到一个抽象里。无论底下是云还是战车Rubix 暴露给上层的是同一组原语声明式地描述我要跑什么、要多少资源、要怎么隔离Rubix 负责在这个具体环境里把它变成现实。上层产品写一次处处成立。第三层Rubix 的核心机制是声明式控制面加运行面具体怎么做到写一次处处成立核心是一套声明式的期望状态desired state机制。你不是去某个边缘节点上敲命令装软件而是向 Rubix 提交一份声明这套 Foundry 的某个版本、配上某份 Ontology 配置、跑在这些节点上、彼此之间这样隔离。Rubix 自己会去比对当前实际状态和你要的状态把差异reconciled掉。这听起来和 K8s 的声明式 API 很像本质上也确实同源但 Rubix 把这套语义抬到了产品部署的粒度而不是单个容器的粒度。对 Rubix 来说一个可声明的最小单元是一整个 Palantir 产品栈的正确运行形态包括它的多个微服务、它们之间的拓扑、依赖的配置版本、以及安全约束。它做的是产品级的状态协调不是单纯的容器编排。这里还有一层很多人没意识到的设计Rubix 把节点自身的底座也当成不可变immutable的版本化产物来管理。节点的基础操作系统不是一个随时能 apt upgrade 的活系统而是一份经过签名、带版本号的镜像。要升级不是在原地打补丁而是把整张基础镜像换掉、重启到新版本。这个看似偏执的做法直接决定了它敢不敢进 air-gapped 机房你离线运进去的是一整张完整、可校验的镜像而不是一个跑到一半可能失败的增量脚本。节点永远不可能停留在补了一半、状态不一致的中间态。配合前面说的期望状态机制Rubix 还会持续比对本节点实际跑的东西和声明是否一致一旦发现漂移drift就按策略要么自动拉回声明状态要么标记并阻断不让一台悄悄变样的节点继续混在集群里。控制面和环境无关是另一件关键的事。在云上控制面通过 API 实时下发指令在断网环境同一份期望状态被打包成离线载体通过物理介质运过去Rubix 在本地照着同一套语义把状态追平。底下承载的通道千差万别但声明本身是同一份、同构的。这就是一套底座的技术本质不是代码一样而是语义一致、协调逻辑一致。还要提一句可观测性。Rubix 对每个节点、每个工作负载都有统一的遥测与自愈逻辑。节点挂了它重新调度工作负载不健康它拉起重启安全策略被绕过它告警并阻断。这些能力在云上靠的是丰富的中间件在边缘靠的是 Rubix 自己内建的轻量实现。它保证不管环境多瘦基本的活着、可控、能告警这条底线都在。第四层安全隔离与机密计算零信任不是挂在嘴上到了国防和情报场景安全不是附加项是准入门槛。Rubix 在这块做的几件事值得单独拎出来说因为它直接决定了这玩意能不能进涉密机房。最底层是硬件信任根hardware root of trust。Rubix 在启动阶段就做可信启动和硬件证明attestation从固件到内核到运行时一层层校验确保跑起来的不是被篡改过的底座。这一关过了后面的隔离才有意义否则你在一个已经被种了东西的机器上做再多逻辑隔离都是空中楼阁。在这之上做的是微隔离microsegmentation和软件定义边界。传统做法是靠网络层画 VLAN、配防火墙但 Rubix 把隔离下沉到了工作负载之间用身份而不是 IP 来定义谁能访问谁。一个跑机密分析的任务和跑普通 ETL 的任务即便在同一台物理机上彼此之间也是零信任的默认不通需要显式的、带身份凭证的授权才放行。这在多租户、多密级的场景下是刚需一台机器上同时跑不同密级的工作负载而不串味靠的就是这一层。多租户隔离还有个常被忽视的层次资源与故障域。Rubix 不仅要保证 A 租户看不到 B 租户的数据还要保证 A 租户的一颗疯掉的进程不会把整台机器的 CPU 或内存吃光、拖垮 B 租户。它通过 cgroup 级别的资源配额、独立的加密卷、以及把关键租户的工作负载排布到隔离的故障域里把噪声邻居问题在底座里就压住。这一点在政府或银行那种一台大机器上塞好多部门的场景里尤其值钱因为你不希望某部门的批量作业半夜把另一个部门的实时服务挤瘫。再往上是机密计算confidential computing。Rubix 可以利用 CPU 的加密内存区域enclave让敏感计算在内存里也是加密的哪怕有人能物理插手这台机器、把内存 dump 出来拿到的也是密文。这对数据不动计算动、以及在不可完全信任的硬件上跑高密级任务的场景是真正的护城河。这套能力不是开了开关就完事它有一套闭环的信任链条。一个机密工作负载在拿到密钥和数据之前Rubix 会先对 enclave 做远程证明attestation把运行时加载代码的度量哈希交给验证方只有当这个哈希落在白名单里、证明跑的就是那份被批准的代码时密钥才会被释放进加密区域。换句话说数据访问是被代码身份绑定而不是被机器身份绑定的。哪怕有人换了一块被污染的硬件、甚至拿到了机器只要跑的代码不对就取不到数据。这个代码即身份的模型是把零信任真正推到了计算执行的那一瞬。我的判断是Rubix 的安全模型之所以被军方认可不在于它发明了什么新密码学而在于它把这些本该分散由不同团队拼凑的能力做成了底座出厂即带、且和环境无关的一致实现。客户不必在每个环境里重新论证一遍安全底座到哪都长一样。第五层断网续运air-gapped 与边缘自治这一节是 Rubix 最硬核、也最容易被云原生工程师忽略的能力。前面几篇我们默认系统一直在线但在 Palantir 的相当一部分部署里在线才是例外。air-gapped 环境意味着没有任何入站和出站的外部网络连接没有镜像仓库可拉没有云端遥测可回传连 NTP 都可能没有。在这种环境里你没法指望kubectl apply 一下就能更新系统。Rubix 的做法是把一切可移动的东西打包成离线载体软件镜像、配置、安全策略、甚至监控数据的导出全部做成可以装进加密硬盘、通过人肉sneakernet带进去的离线包。到了隔离机房Rubix 读取这个包按和联网环境完全一致的语义把期望状态追平。这里 Apollo 和 Rubix 的配合就显出来了。Apollo 负责生成这次要变成什么样的那份期望状态配置它本来在云端工作这份配置连同所需产物被打包物理运抵隔离区后Rubix 在本地把它落地。也就是说断网并不改变谁决定、谁执行的分工只是把传递通道从网络换成了硬盘。这个离线包本身也不是一个随手拷过去的文件夹。它是按内容寻址、带签名的一整份产物集合Rubix 在应用之前会先验签名、比对哈希确认这一包确实来自可信来源、且没在运输途中被改过才会动手落地。这把离线带来的供应链风险兜住了你不会因为介质在半路被人动过手脚就把一套被篡改的东西灌进涉密网络。等链路恢复本地积累的数据和状态再按既定策略回传合并。边缘自治是另一个维度。在战术边缘链路时断时续甚至长期断联前线的 AIP 节点必须能自己做推理、自己做数据对齐、自己维持 Ontology 的本地视图而不能每次动作都等后方回指令。Rubix 给边缘节点提供了完整的本地运行面它不依赖后方活着才能工作后方只是偶尔同步状态的另一端。等链路恢复本地积累的数据和状态再按既定策略回传合并。这套能离线跑、能离线更新、能本地自治、能事后对账的能力组合是 Rubix 区别于普通 Kubernetes 发行版的根本。K8s 可以断网跑但它没有把如何在断网下交付一次原子化、可验证、可回滚的整套产品更新做成一等公民。Rubix 做了。第六层Rubix 与 Apollo 到底怎么分工到这里必须把两个名字的边界划清楚因为它们经常被混为一谈甚至被外面写成同一个东西。我的表述是Apollo决定应该跑什么、怎么配置Rubix负责真的把它跑起来并维持住。Apollo 是 Palantir 的持续交付与配置编排产品它源自 Palantir 给自己内部部署用的工具链最早就是为美军那种要把软件持续推到全球各地、还经常断联的节点的场景打磨出来的。Apollo 维护的是每个部署的期望状态哪个产品的哪个版本、配哪份设置、安全基线是什么。它回答的是现在这个站点应该长什么样。Rubix 是承载这些工作负载、并对照期望状态做实际协调与运行的底座。它回答的是我怎么在这个具体环境里把那个样子真正造出来并且守住。Apollo 的指令落到 Rubix 上Rubix 去调度容器、隔离网络、加载密钥、拉起服务并持续保证实际状态不漂移。一个容易混淆的点Apollo 自己也是跑在 Rubix 上的。所以关系是分层的不是平行的。Apollo 作为控制面它的控制面实例本身也由 Rubix 承载它向下管理的是更多的 Rubix 节点。控制面与运行面之间通过一个与环境无关的交付通道通信联网时走网络断网时走离线包对上层透明。这个分工的妙处在于解耦。Palantir 的产品团队可以专心在 Rubix 上把某个功能写好交付团队可以通过 Apollo 把它推到全球几千个形态各异的节点而没有任何一方需要关心另一端具体是云还是战车。Rubix 吞掉环境差异Apollo 吞掉规模与连通性差异两者一合就是 Palantir 能一套软件卖给从银行到战场的真实底座。第七层从云端到战车一个真实的部署拓扑长什么样把前面几层拼起来看一个最常见的组合拓扑。后方是一个连接云端的 Foundry 主站点数据治理、Ontology 建模、批量计算都在这里发生它坐在云上的 Rubix 上。前线是一组战术边缘的 AIP 节点装在车辆或便携设备里跑在轻量化的 Rubix 上本地就能做模型推理和实时决策。这两端靠同一套 Ontology 对齐语义。后方定义的本体和对象类型通过 Apollo 把对应的配置与模型产物以联网同步或离线包的方式推到前线 Rubix 节点前线在本地用自己的 Rubix 拉起对应的 AIP 工作负载。数据可以因为带宽和密级只同步增量但运行底座同源、安全模型同源、协调语义同源。我特别想点破的一件事很多人以为边缘 AI的难点是模型小、延迟低。对 Palantir 这种把全套企业级平台搬到边缘的玩法来说真正的难点从来不是模型而是让一个原本为云数据中心设计的庞杂软件栈在断网、低算力、不可信硬件的边缘环境里行为仍然一致、安全仍然可信、更新仍然可控。Rubix 解决的就是这个它不是把 AIP 砍薄了塞进边缘而是让完整的底座能力在边缘也成立。这也是为什么我说Rubix是 Palantir 架构里最被低估的一层。前面几篇讲的 Ontology、AIP 都是看得见的能力客户愿意为它们付钱。但真正让这些能力能够跨越从商业云到战术边缘这个巨大光谱、还能保持一致的是底下这套不出镜的底座。它不炫但它是 Palantir 能把同一个平台卖给两种极端客户的前提。理解 Rubix你就理解了 Palantir 部署能力的边界在哪里也就理解了为什么它的竞争对手在想进国防和监管核心场景时往往卡在的不是一个算法而是缺这一层能跨环境的底座。