第十三板块:Android 综合架构与未来演进 | 第三十一篇:Android 架构演进与 Fuchsia OS 的挑战

第十三板块:Android 综合架构与未来演进 | 第三十一篇:Android 架构演进与 Fuchsia OS 的挑战

所属板块:第十三板块 --- Android 综合架构与未来演进

前置知识:第十二板块全系列(Init、Zygote、System Server、Binder、SELinux、电源管理、图形渲染、多媒体、网络体系)

本篇定位 :这是 Android 系统知识的终极俯瞰与未来预言 。我们将跳出具体的代码实现,站在操作系统设计哲学 的高度,审视 Android 从 Linux 宏内核到微内核(Microkernel) 的艰难转型。本篇将彻底拆解 Android 架构的历史包袱Linux 宏内核的先天缺陷Fuchsia OS 的 Capability-Based Security(基于能力的权限)模型Zircon 微内核的 IPC 性能博弈。我们将揭示 Google 为何要抛弃成熟的 Linux,以及 Fuchsia 将如何重塑下一代万物互联的计算平台。全程无产品展望、无商业分析,仅保留操作系统架构的底层定义与演进逻辑。


1. 核心结论先行(Thesis Statement)

Android 的演进是一场在兼容性与现代性之间走钢丝的战争。

  • Android 的本质运行在宏内核(Monolithic Kernel)上的沙盒王国 。Linux 内核提供了强大的硬件驱动支持,但也带来了权限爆炸安全边界模糊的问题。Android 不得不通过 SELinux、沙箱、Binder 等层层叠加的"补丁"来维持秩序。
  • Fuchsia 的本质面向万物互联的原生微内核操作系统 。它抛弃了 Linux,使用自研的 Zircon 内核 ,旨在通过 Capability-Based Security 从根本上解决权限滥用问题,并天然支持 Component-Based Software(组件化软件),以适应从嵌入式设备到桌面终端的全场景覆盖。
  • 核心冲突性能 vs 安全 。宏内核的函数调用(Function Call)极快,但一旦内核态出错,系统崩溃;微内核的 IPC 通信较慢,但内核极小,稳定性极高,且能通过 Capability 精确控制权限。
  • 终极挑战生态迁移。Fuchsia 最大的敌人不是技术,而是 Android 百万亿级的存量应用生态。

2. Android 架构的历史包袱与演进

2.1 宏内核(Monolithic Kernel)的困境

Android 基于 Linux,Linux 是典型的宏内核。

架构特性 学术定义 对 Android 的影响
代码规模 内核代码庞大(千万行级) 攻击面巨大,漏洞难以穷尽。
权限边界 内核态拥有最高权限 驱动漏洞(如 WiFi 驱动)可直接攻破内核,绕过 SELinux。
进程隔离 依赖 MMU 硬件隔离 应用间隔离强,但内核与驱动间无隔离。
实时性 软实时(Soft Real-time) 难以满足自动驾驶、工业机器人等硬实时需求。

2.2 Android 的"补丁式"安全进化

为了弥补宏内核的缺陷,Android 被迫不断增加安全层:
#mermaid-svg-kNOBEmZ5wYq611zL{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kNOBEmZ5wYq611zL .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kNOBEmZ5wYq611zL .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kNOBEmZ5wYq611zL .error-icon{fill:#552222;}#mermaid-svg-kNOBEmZ5wYq611zL .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kNOBEmZ5wYq611zL .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kNOBEmZ5wYq611zL .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kNOBEmZ5wYq611zL .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kNOBEmZ5wYq611zL .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kNOBEmZ5wYq611zL .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kNOBEmZ5wYq611zL .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kNOBEmZ5wYq611zL .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kNOBEmZ5wYq611zL .marker.cross{stroke:#333333;}#mermaid-svg-kNOBEmZ5wYq611zL svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kNOBEmZ5wYq611zL p{margin:0;}#mermaid-svg-kNOBEmZ5wYq611zL .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kNOBEmZ5wYq611zL .cluster-label text{fill:#333;}#mermaid-svg-kNOBEmZ5wYq611zL .cluster-label span{color:#333;}#mermaid-svg-kNOBEmZ5wYq611zL .cluster-label span p{background-color:transparent;}#mermaid-svg-kNOBEmZ5wYq611zL .label text,#mermaid-svg-kNOBEmZ5wYq611zL span{fill:#333;color:#333;}#mermaid-svg-kNOBEmZ5wYq611zL .node rect,#mermaid-svg-kNOBEmZ5wYq611zL .node circle,#mermaid-svg-kNOBEmZ5wYq611zL .node ellipse,#mermaid-svg-kNOBEmZ5wYq611zL .node polygon,#mermaid-svg-kNOBEmZ5wYq611zL .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kNOBEmZ5wYq611zL .rough-node .label text,#mermaid-svg-kNOBEmZ5wYq611zL .node .label text,#mermaid-svg-kNOBEmZ5wYq611zL .image-shape .label,#mermaid-svg-kNOBEmZ5wYq611zL .icon-shape .label{text-anchor:middle;}#mermaid-svg-kNOBEmZ5wYq611zL .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kNOBEmZ5wYq611zL .rough-node .label,#mermaid-svg-kNOBEmZ5wYq611zL .node .label,#mermaid-svg-kNOBEmZ5wYq611zL .image-shape .label,#mermaid-svg-kNOBEmZ5wYq611zL .icon-shape .label{text-align:center;}#mermaid-svg-kNOBEmZ5wYq611zL .node.clickable{cursor:pointer;}#mermaid-svg-kNOBEmZ5wYq611zL .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kNOBEmZ5wYq611zL .arrowheadPath{fill:#333333;}#mermaid-svg-kNOBEmZ5wYq611zL .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kNOBEmZ5wYq611zL .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kNOBEmZ5wYq611zL .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kNOBEmZ5wYq611zL .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kNOBEmZ5wYq611zL .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kNOBEmZ5wYq611zL .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kNOBEmZ5wYq611zL .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kNOBEmZ5wYq611zL .cluster text{fill:#333;}#mermaid-svg-kNOBEmZ5wYq611zL .cluster span{color:#333;}#mermaid-svg-kNOBEmZ5wYq611zL div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kNOBEmZ5wYq611zL .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kNOBEmZ5wYq611zL rect.text{fill:none;stroke-width:0;}#mermaid-svg-kNOBEmZ5wYq611zL .icon-shape,#mermaid-svg-kNOBEmZ5wYq611zL .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kNOBEmZ5wYq611zL .icon-shape p,#mermaid-svg-kNOBEmZ5wYq611zL .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kNOBEmZ5wYq611zL .icon-shape .label rect,#mermaid-svg-kNOBEmZ5wYq611zL .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kNOBEmZ5wYq611zL .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kNOBEmZ5wYq611zL .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kNOBEmZ5wYq611zL :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Android 安全层
Linux 内核 (宏内核)
漏洞利用
拦截
限制
通信
硬件驱动 (漏洞高发区)
SELinux (强制访问控制)
应用沙箱 (UID/GID)
Binder (IPC 隔离)
HWASan (内存错误检测)
应用进程

学术定义

  • 防御性编程 :Android 的安全机制大多是被动防御。它假设内核可能失守,因此在用户态层层设防。

3. Fuchsia OS 与 Zircon 微内核

3.1 微内核(Microkernel)的复兴

Fuchsia 的核心是 Zircon。Zircon 是一个微内核,其核心功能极其精简。

组件 宏内核 (Linux) 微内核 (Zircon)
进程/线程管理 内核 内核
内存管理 内核 内核
IPC 机制 内核 (Binder/Socket) 内核 (Channels)
文件系统 内核 (VFS/Ext4) 用户态 (Blobfs/Memfs)
网络协议栈 内核 (TCP/IP) 用户态
设备驱动 内核 用户态 (Driver Host)

学术定义

  • 最小特权原则:Zircon 只保留最基础的功能在内核态。驱动、文件系统、网络栈全部运行在用户态,即使驱动崩溃,内核依然存活。
  • 微内核优势:极高的稳定性和安全性,易于模块化更新。

3.2 Capability-Based Security(基于能力的权限)

这是 Fuchsia 对 Android 的降维打击

学术定义

  • Capability (能力):一个不可伪造的令牌(Token),代表对某个对象的特定操作权限。
  • 对比
    • Android (ACL) :问"我是谁?"(UID 10001),系统查表看 UID 10001 能不能访问文件。root 可以访问一切。
    • Fuchsia (Capability) :问"我有什么令牌?"。如果你想访问文件,你必须持有该文件的 Handle (句柄)Rights (权限位)。即使你是系统进程,没有令牌也访问不了。

示例

在 Fuchsia 中,一个应用想要录音:

  1. Audio 服务持有麦克风驱动的 Handle。
  2. 应用向 Audio 服务请求录音。
  3. Audio 服务检查应用是否有权限,然后**派生(Duplicate)**一个带有"只读"权限的 Handle 给应用。
  4. 应用只能通过这个 Handle 录音,无法访问驱动的其他功能。

这从根本上消灭了 Android 的"权限滥用"问题。


4. 组件化软件与 FIDL

4.1 Component Manifest(组件清单)

Fuchsia 的应用不是 APK,而是 Component(组件)

学术定义

  • Component:一个独立的、沙盒化的、通过 Capability 与外界交互的程序。
  • Manifest (.cml) :声明组件需要什么 Capability(如 fuchsia.logger.LogSink),以及提供什么服务。

4.2 FIDL (Fuchsia Interface Definition Language)

Fuchsia 使用 FIDL 代替 Binder。

特性 Binder (Android) FIDL (Fuchsia)
传输介质 内核驱动 (ioctl) 内核 Channel
数据类型 Parcel (序列化) 强类型结构体
错误处理 状态码 Result (Ok/Err)
版本兼容 脆弱 (字段顺序) 健壮 (Ordinal 标识)
性能 极高 (共享内存 mmap) 高 (IPC 拷贝,但设计更优)

学术定义

  • 强类型:FIDL 在编译期检查类型,Binder 在运行期检查。
  • 版本演化:FIDL 允许接口平滑升级,旧客户端可以与新服务端通信,反之亦然。

5. Android 与 Fuchsia 的全景对比

5.1 架构对比图

#mermaid-svg-JTRnSZembibuJEH4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JTRnSZembibuJEH4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JTRnSZembibuJEH4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JTRnSZembibuJEH4 .error-icon{fill:#552222;}#mermaid-svg-JTRnSZembibuJEH4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JTRnSZembibuJEH4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JTRnSZembibuJEH4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JTRnSZembibuJEH4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JTRnSZembibuJEH4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JTRnSZembibuJEH4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JTRnSZembibuJEH4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JTRnSZembibuJEH4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JTRnSZembibuJEH4 .marker.cross{stroke:#333333;}#mermaid-svg-JTRnSZembibuJEH4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JTRnSZembibuJEH4 p{margin:0;}#mermaid-svg-JTRnSZembibuJEH4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JTRnSZembibuJEH4 .cluster-label text{fill:#333;}#mermaid-svg-JTRnSZembibuJEH4 .cluster-label span{color:#333;}#mermaid-svg-JTRnSZembibuJEH4 .cluster-label span p{background-color:transparent;}#mermaid-svg-JTRnSZembibuJEH4 .label text,#mermaid-svg-JTRnSZembibuJEH4 span{fill:#333;color:#333;}#mermaid-svg-JTRnSZembibuJEH4 .node rect,#mermaid-svg-JTRnSZembibuJEH4 .node circle,#mermaid-svg-JTRnSZembibuJEH4 .node ellipse,#mermaid-svg-JTRnSZembibuJEH4 .node polygon,#mermaid-svg-JTRnSZembibuJEH4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JTRnSZembibuJEH4 .rough-node .label text,#mermaid-svg-JTRnSZembibuJEH4 .node .label text,#mermaid-svg-JTRnSZembibuJEH4 .image-shape .label,#mermaid-svg-JTRnSZembibuJEH4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-JTRnSZembibuJEH4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-JTRnSZembibuJEH4 .rough-node .label,#mermaid-svg-JTRnSZembibuJEH4 .node .label,#mermaid-svg-JTRnSZembibuJEH4 .image-shape .label,#mermaid-svg-JTRnSZembibuJEH4 .icon-shape .label{text-align:center;}#mermaid-svg-JTRnSZembibuJEH4 .node.clickable{cursor:pointer;}#mermaid-svg-JTRnSZembibuJEH4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-JTRnSZembibuJEH4 .arrowheadPath{fill:#333333;}#mermaid-svg-JTRnSZembibuJEH4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JTRnSZembibuJEH4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JTRnSZembibuJEH4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JTRnSZembibuJEH4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-JTRnSZembibuJEH4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JTRnSZembibuJEH4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-JTRnSZembibuJEH4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JTRnSZembibuJEH4 .cluster text{fill:#333;}#mermaid-svg-JTRnSZembibuJEH4 .cluster span{color:#333;}#mermaid-svg-JTRnSZembibuJEH4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JTRnSZembibuJEH4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-JTRnSZembibuJEH4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-JTRnSZembibuJEH4 .icon-shape,#mermaid-svg-JTRnSZembibuJEH4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JTRnSZembibuJEH4 .icon-shape p,#mermaid-svg-JTRnSZembibuJEH4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-JTRnSZembibuJEH4 .icon-shape .label rect,#mermaid-svg-JTRnSZembibuJEH4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JTRnSZembibuJEH4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-JTRnSZembibuJEH4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-JTRnSZembibuJEH4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Fuchsia (微内核)
Handle
Handle
Component A
FIDL IPC
Component B
System Abstraction
Zircon Kernel
Driver Host (User Mode)
Hardware
Android (宏内核)
请求
请求
App A
Binder IPC
App B
Framework (Java)
HAL (C/C++)
Linux Kernel
Hardware

5.2 关键指标对比

维度 Android (Linux) Fuchsia (Zircon) 学术评价
安全性 优秀(层层加固) 卓越(天生免疫) Fuchsia 的 Capability 是降维打击。
性能 极致(无 IPC 拷贝) 优秀(IPC 优化) Android 的 Binder mmap 仍有微弱优势。
稳定性 一般(驱动崩溃致系统崩) 极高(驱动崩溃无影响) 微内核的天然优势。
生态 统治级(千万应用) 空白(从零开始) Fuchsia 最大的死穴。
实时性 软实时 硬实时(潜力) Fuchsia 适合物联网和汽车。

6. Google 的战略意图与迁移挑战

6.1 为什么 Google 要做 Fuchsia?

  1. 摆脱 Linux 版权束缚:Linux 使用 GPL 协议,要求开源修改。Fuchsia 使用 BSD/MIT 协议,允许闭源。
  2. 统一生态:用一套系统打通手机、平板、笔记本、车机、智能家居。
  3. 技术债务清零:Android 积累了 15 年的技术债务(Dalvik, ART, HIDL, AIDL),Fuchsia 可以推倒重来。

6.2 迁移 Android 应用:Starnix

Google 不可能让所有应用重写。因此,Fuchsia 引入了 Starnix

学术定义

  • Starnix :一个运行在 Fuchsia 用户态的 Linux ABI 兼容层。它模拟 Linux 内核的系统调用(syscall),让未经修改的 Android 应用以为自己运行在 Linux 上,实际上运行在 Fuchsia 内核上。
  • 挑战:性能损耗、兼容性黑洞、安全边界模糊(又回到了原点?)。

7. 关键源码与架构解析(Fuchsia)

7.1 Zircon 的 Channel IPC

cpp 复制代码
// Zircon 内核对象
zx_handle_t channel0, channel1;
zx_channel_create(0, &channel0, &channel1);

// 发送消息
zx_channel_write(channel0, 0, &msg, sizeof(msg), nullptr, 0);

// 接收消息
zx_channel_read(channel1, 0, &buf, nullptr, sizeof(buf), 0, nullptr);

学术定义

  • Handle 即 Capabilitychannel0channel1 就是两个 Handle。持有它们才能通信。

7.2 FIDL 接口定义

fidl 复制代码
// echo.fidl
library fuchsia.examples;

protocol Echo {
    /// 回声服务
    EchoString(struct {
        value string;
    }) -> (struct {
        response string;
    });
};

8. 本篇总结(Knowledge Closure)

关键点 纯学术定义
Android 的本质 运行在宏内核上的沙盒王国,通过层层补丁弥补安全缺陷。
Fuchsia 的本质 面向万物互联的微内核操作系统,通过 Capability 实现原生安全。
Capability Security 基于令牌的权限控制,从根本上消灭权限滥用。
微内核优势 极高的稳定性和模块化,适合碎片化物联网场景。
最大挑战 生态迁移。Starnix 兼容层是权宜之计,原生组件化才是未来。

9. 第十三板块结语

至此,第十三板块:Android 综合架构与未来演进 的第一篇已完成。

我们从 Android 宏内核的历史包袱 出发,深入 Fuchsia 微内核的 Capability 安全模型 ,探索 FIDL 的强类型接口 ,最终抵达 生态迁移的战略博弈

我们揭示了操作系统演进的终极逻辑:用复杂性换取功能性,再用架构革新抹平复杂性。

下一篇预告第十三板块:Android 综合架构与未来演进 | 第三十二篇:Android 内存管理与 LMK 机制的深度剖析

相关推荐
aqi002 小时前
一文速览 HarmonyOS 6.1.1 推出的十个新特性
android·华为·harmonyos·鸿蒙·harmony
咚为2 小时前
Claude Code 深度定制指南:从分层架构到 AI 参谋系统的高级搭建实践
人工智能·架构
matrixmind12 小时前
aiomysql:异步场景下的 MySQL 驱动
android·数据库·mysql·其他
随遇丿而安2 小时前
第8周:弹窗 / 提示组件全功能与弹窗优化
android
zh_xuan2 小时前
诡异Bug:输入框删除字符,却越删越多
android·bug
X54先生(人文科技)2 小时前
X54先生与“启”关于涌现对话
人工智能·架构·开源·零知识证明
“码”力全开2 小时前
云边端协同架构:基于 Docker 与边缘计算的 GB28181/RTSP 异构视频 AI 管理平台设计(附源码交付)
人工智能·docker·架构
TheRouter2 小时前
LLM 应用的 Guardrails 工程:5 层安全防护架构,为什么一层不够
安全·ai·架构
搞点AI2 小时前
深入理解 vLLM 的 Block 机制
架构