<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="680" viewBox="0 0 1200 680">
  <rect width="1200" height="680" fill="#f8fafc"/>
  <defs>
    <marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M2,2 L10,6 L2,10 Z" fill="#0f766e"/></marker>
    <filter id="shadow" x="-10%" y="-10%" width="120%" height="120%"><feDropShadow dx="0" dy="8" stdDeviation="8" flood-color="#0f172a" flood-opacity="0.12"/></filter>
  </defs>
  <g font-family="Arial, 'Microsoft YaHei', sans-serif">
    <text x="72" y="74" font-size="30" font-weight="700" fill="#0f172a">备份恢复闭环</text>
    <text x="72" y="108" font-size="17" fill="#475569">把快照、校验、离线保管、恢复演练和复盘改进串成可重复流程</text>

    <circle cx="600" cy="350" r="190" fill="#ecfeff" stroke="#99f6e4" stroke-width="2"/>
    <circle cx="600" cy="350" r="86" fill="#ffffff" stroke="#14b8a6" stroke-width="3" filter="url(#shadow)"/>
    <text x="600" y="335" text-anchor="middle" font-size="24" font-weight="700" fill="#115e59">etcd</text>
    <text x="600" y="365" text-anchor="middle" font-size="16" fill="#0f766e">键值数据</text>
    <text x="600" y="390" text-anchor="middle" font-size="16" fill="#0f766e">集群状态源</text>

    <rect x="455" y="132" width="290" height="86" rx="18" fill="#ccfbf1" stroke="#0f766e" stroke-width="2" filter="url(#shadow)"/>
    <text x="600" y="165" text-anchor="middle" font-size="21" font-weight="700" fill="#134e4a">1 快照生成</text>
    <text x="600" y="194" text-anchor="middle" font-size="15" fill="#0f766e">定时任务 / 变更前 / 升级前</text>

    <rect x="788" y="258" width="280" height="92" rx="18" fill="#fff7ed" stroke="#f97316" stroke-width="2" filter="url(#shadow)"/>
    <text x="928" y="292" text-anchor="middle" font-size="21" font-weight="700" fill="#9a3412">2 完整性校验</text>
    <text x="928" y="320" text-anchor="middle" font-size="15" fill="#c2410c">状态、哈希、大小和元数据</text>

    <rect x="755" y="463" width="305" height="98" rx="18" fill="#eef2ff" stroke="#4f46e5" stroke-width="2" filter="url(#shadow)"/>
    <text x="908" y="498" text-anchor="middle" font-size="21" font-weight="700" fill="#3730a3">3 多副本保管</text>
    <text x="908" y="527" text-anchor="middle" font-size="15" fill="#4338ca">隔离存储、权限控制、保留周期</text>

    <rect x="145" y="463" width="305" height="98" rx="18" fill="#f0fdf4" stroke="#16a34a" stroke-width="2" filter="url(#shadow)"/>
    <text x="298" y="498" text-anchor="middle" font-size="21" font-weight="700" fill="#166534">4 恢复演练</text>
    <text x="298" y="527" text-anchor="middle" font-size="15" fill="#15803d">隔离环境恢复，记录耗时和缺口</text>

    <rect x="132" y="258" width="285" height="92" rx="18" fill="#fef2f2" stroke="#ef4444" stroke-width="2" filter="url(#shadow)"/>
    <text x="275" y="292" text-anchor="middle" font-size="21" font-weight="700" fill="#991b1b">5 验证与复盘</text>
    <text x="275" y="320" text-anchor="middle" font-size="15" fill="#b91c1c">API 可用、对象一致、Runbook 更新</text>

    <path d="M600 226 C675 226 746 252 804 294" fill="none" stroke="#0f766e" stroke-width="4" marker-end="url(#arrow)"/>
    <path d="M1004 356 C1005 404 973 442 932 458" fill="none" stroke="#0f766e" stroke-width="4" marker-end="url(#arrow)"/>
    <path d="M750 524 C640 586 497 585 392 532" fill="none" stroke="#0f766e" stroke-width="4" marker-end="url(#arrow)"/>
    <path d="M271 455 C228 418 215 378 234 344" fill="none" stroke="#0f766e" stroke-width="4" marker-end="url(#arrow)"/>
    <path d="M333 255 C382 204 423 182 447 178" fill="none" stroke="#0f766e" stroke-width="4" marker-end="url(#arrow)"/>

    <rect x="70" y="602" width="1060" height="42" rx="21" fill="#ffffff" stroke="#cbd5e1"/>
    <text x="600" y="628" text-anchor="middle" font-size="16" fill="#334155">闭环重点：不是只保存快照，而是持续证明快照能在受控场景中恢复出可用控制平面</text>
  </g>
</svg>
