<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>架构 on IT 运维小秋</title>
        <link>/tags/%E6%9E%B6%E6%9E%84.html</link>
        <description>Recent content in 架构 on IT 运维小秋</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>chenwx716@139.com</managingEditor>
        <webMaster>chenwx716@139.com</webMaster>
        <lastBuildDate>Sun, 15 Mar 2026 12:53:32 +0800</lastBuildDate><atom:link href="/tags/%E6%9E%B6%E6%9E%84/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>软件架构设计原则</title>
        <link>/p/soft-base-standardization-principle.html</link>
        <pubDate>Sun, 15 Mar 2026 12:53:32 +0800</pubDate>
        <author>chenwx716@139.com</author>
        <guid>/p/soft-base-standardization-principle.html</guid>
        <description>&lt;blockquote&gt;
&lt;p&gt;本文档使用AI工具将原始的手工笔记进行了整合, 并由AI进行评审后统一修正、重组与补全。&lt;/p&gt;
&lt;p&gt;本文档整合 12 份原始设计原则材料，修正错误并补充现代架构要点。遵循&amp;quot;精简为主，难点注解&amp;quot;原则。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;1-基础理论&#34;&gt;1. 基础理论&lt;/h2&gt;
&lt;h3 id=&#34;11-cap-定理&#34;&gt;1.1 CAP 定理&lt;/h3&gt;
&lt;p&gt;分布式系统最多同时满足以下两项：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;特性&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;C&lt;/strong&gt;onsistency（一致性）&lt;/td&gt;
          &lt;td&gt;所有节点同一时刻看到相同数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;A&lt;/strong&gt;vailability（可用性）&lt;/td&gt;
          &lt;td&gt;每个请求都能收到响应（不保证数据最新）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;P&lt;/strong&gt;artition Tolerance（分区容错）&lt;/td&gt;
          &lt;td&gt;网络分区时系统仍能运行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：网络分区（P）在分布式系统中&lt;strong&gt;必然发生&lt;/strong&gt;（网络不可靠），所以实际是在 C 和 A 之间做选择。微服务通常选 &lt;strong&gt;AP + 最终一致性&lt;/strong&gt;（如电商订单），金融核心系统可能选 &lt;strong&gt;CP&lt;/strong&gt;（如银行转账）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;12-base-理论&#34;&gt;1.2 BASE 理论&lt;/h3&gt;
&lt;p&gt;CAP 的延伸，强调&lt;strong&gt;基本可用、软状态、最终一致&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BA&lt;/strong&gt;sically &lt;strong&gt;A&lt;/strong&gt;vailable：系统出现故障时允许损失部分可用性（如降级为只读）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S&lt;/strong&gt;oft state：允许数据存在中间状态&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E&lt;/strong&gt;ventually consistent：不保证实时一致，但最终会一致&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;13-pacelc-定理&#34;&gt;1.3 PACELC 定理&lt;/h3&gt;
&lt;p&gt;CAP 的扩展，强调**延迟（Latency）**的权衡：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果存在分区（P），在可用性（A）和一致性（C）之间选择；&lt;br /&gt;
否则（E，即正常运行），在延迟（L）和一致性（C）之间选择。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：例如 DynamoDB 选 PA/EL（分区时保可用，正常时保低延迟），MongoDB 选 PC/EC（分区时保一致，正常时也保一致）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;14-康威定律conways-law&#34;&gt;1.4 康威定律（Conway&amp;rsquo;s Law）&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;设计系统的组织，其产生的设计等同于组织之内、组织之间的沟通结构。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;实践意义&lt;/strong&gt;：团队结构决定系统架构。微服务团队应为&amp;quot;两个披萨团队&amp;quot;（6~10 人），每个团队端到端负责一个服务。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;2-12-factor-app&#34;&gt;2. 12-Factor App&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;原始材料对 12-Factor 的翻译偏口语化，以下用精简技术语言重述。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;原则&lt;/th&gt;
          &lt;th&gt;核心要求&lt;/th&gt;
          &lt;th&gt;实践&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;代码库&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;一份代码库，多份部署&lt;/td&gt;
          &lt;td&gt;Git 单仓库，通过分支/标签区分环境&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;依赖&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;显式声明依赖&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;package.json&lt;/code&gt;、&lt;code&gt;pom.xml&lt;/code&gt;、&lt;code&gt;go.mod&lt;/code&gt;，禁止隐式依赖系统包&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;配置&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;配置与代码分离&lt;/td&gt;
          &lt;td&gt;环境变量、配置中心（Nacos/Consul/ConfigMap），禁止硬编码&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;后端服务&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;将数据库/缓存等视为附加资源&lt;/td&gt;
          &lt;td&gt;通过 URL 连接，可随时替换（如 MySQL → PostgreSQL）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;构建-发布-运行&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;严格分离三个阶段&lt;/td&gt;
          &lt;td&gt;构建（CI 产出制品）→ 发布（绑定配置）→ 运行（启动进程）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;进程&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;以一个或多个无状态进程运行应用&lt;/td&gt;
          &lt;td&gt;状态外置（Redis/DB），实例可任意启停和替换&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;端口绑定&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;通过端口暴露服务&lt;/td&gt;
          &lt;td&gt;自包含 HTTP 服务，不依赖外部 Web 服务器&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;并发&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;通过进程模型扩展&lt;/td&gt;
          &lt;td&gt;水平扩展（加实例）而非垂直扩展（升配置）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;易处理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;快速启动、优雅终止&lt;/td&gt;
          &lt;td&gt;启动 &amp;lt; 5s，SIGTERM 时完成当前请求再退出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;开发/生产等价&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;环境尽量一致&lt;/td&gt;
          &lt;td&gt;Docker 容器化，避免&amp;quot;在我机器上能跑&amp;quot;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;日志&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;日志作为事件流&lt;/td&gt;
          &lt;td&gt;输出到 stdout，由外部系统（ELK/Loki）收集，应用不管理日志文件&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;管理进程&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;后台管理任务作为一次性进程运行&lt;/td&gt;
          &lt;td&gt;数据迁移、报表生成等通过独立 Job 执行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：12-Factor 诞生于 2012 年 Heroku 时代，核心思想至今有效。现代演进为 &lt;strong&gt;15-Factor&lt;/strong&gt;（补充 API 优先、遥测、认证授权），但 12 条仍是基础。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;3-核心设计原则&#34;&gt;3. 核心设计原则&lt;/h2&gt;
&lt;p&gt;原始材料提炼为四字诀：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;原则&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
          &lt;th&gt;实践&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;缓存&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;复用数据，减少重复计算&lt;/td&gt;
          &lt;td&gt;CDN、Redis、本地缓存、浏览器缓存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;异步&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;避免阻塞，提升吞吐&lt;/td&gt;
          &lt;td&gt;消息队列、事件驱动、回调网关&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;前置&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;提前准备，缩短响应路径&lt;/td&gt;
          &lt;td&gt;CDN 预热、边缘计算、数据预加载&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;拆分&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;减少复杂度，隔离故障&lt;/td&gt;
          &lt;td&gt;微服务、DDD 限界上下文、读写分离&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;4-系统分层设计&#34;&gt;4. 系统分层设计&lt;/h2&gt;
&lt;p&gt;为什么要分层?&lt;/p&gt;
&lt;p&gt;当组织节点较多时调用关系和逻辑愈发复杂，好的分层设计可以带来以下好处：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;复用代码,&lt;/li&gt;
&lt;li&gt;解耦合&lt;/li&gt;
&lt;li&gt;屏蔽细节&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;分层带来的问题:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;请求处理时间可能会增加&lt;/li&gt;
&lt;li&gt;运维复杂性增加&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;41-物理分层请求流向&#34;&gt;4.1 物理分层（请求流向）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户 → 终端 → 边缘设备(CDN) → 网关 → 应用层 → 数据层 → 基础设施层
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;42-逻辑分层&#34;&gt;4.2 逻辑分层&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;层级&lt;/th&gt;
          &lt;th&gt;职责&lt;/th&gt;
          &lt;th&gt;示例&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;视图层&lt;/td&gt;
          &lt;td&gt;用户可见的界面&lt;/td&gt;
          &lt;td&gt;Web 页面、App UI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;网关层&lt;/td&gt;
          &lt;td&gt;路由、鉴权、限流&lt;/td&gt;
          &lt;td&gt;Spring Cloud Gateway、Kong、Envoy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;前端业务层&lt;/td&gt;
          &lt;td&gt;校验、数据准备&lt;/td&gt;
          &lt;td&gt;参数校验、DTO 组装&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;核心业务层&lt;/td&gt;
          &lt;td&gt;主业务逻辑&lt;/td&gt;
          &lt;td&gt;订单创建、支付处理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;基础业务层&lt;/td&gt;
          &lt;td&gt;通用后台功能&lt;/td&gt;
          &lt;td&gt;用户中心、支付中心、文件服务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;基础数据层&lt;/td&gt;
          &lt;td&gt;数据访问抽象&lt;/td&gt;
          &lt;td&gt;ORM、数据库中间件、缓存中间件&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：分层的本质是&lt;strong&gt;数据的移动&lt;/strong&gt;——同一数据在不同层以最优形式展现。代价是请求链路变长、运维复杂度增加。分层不是越多越好，通常 3~4 层足够。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;43-小前台大中台&#34;&gt;4.3 小前台、大中台&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;小前台&lt;/strong&gt;：前端系统尽量小，要求快速迭代和灵活响应业务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大中台&lt;/strong&gt;：将身份认证、交易、支付、消息等通用能力服务化，供多个前台复用&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：中台不是技术中台一个概念，还包括业务中台、数据中台、算法中台。中台建设最大的坑是&amp;quot;为了中台而中台&amp;quot;——先有小前台的真实复用需求，再沉淀中台能力，而非先建中台再找场景。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;44-前后端分离&#34;&gt;4.4 前后端分离&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;分离前&lt;/th&gt;
          &lt;th&gt;分离后&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;后端渲染 HTML&lt;/td&gt;
          &lt;td&gt;后端提供 API（JSON/XML），前端独立渲染&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;前端小改动需后端配合发布&lt;/td&gt;
          &lt;td&gt;前后端独立部署、独立迭代&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;代价&lt;/strong&gt;：SEO 不友好（SPA 需 SSR 解决）、沟通成本增加、团队技能要求分化。&lt;/p&gt;
&lt;h3 id=&#34;45-其它分层&#34;&gt;4.5 其它分层&lt;/h3&gt;
&lt;p&gt;数据服务层: 对不同业务单元的数据提供统一的访问形式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;屏蔽多种业务的数据库和缓存等逻辑&lt;/li&gt;
&lt;li&gt;提供统一的 API 接口，上层业务无需关注分库分表等细节&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;5-服务化与微服务&#34;&gt;5. 服务化与微服务&lt;/h2&gt;
&lt;h3 id=&#34;51-服务化抽象方向&#34;&gt;5.1 服务化抽象方向&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;抽象对象&lt;/th&gt;
          &lt;th&gt;服务化后&lt;/th&gt;
          &lt;th&gt;收益&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;数据库访问&lt;/td&gt;
          &lt;td&gt;数据访问服务（DAS）&lt;/td&gt;
          &lt;td&gt;屏蔽分库分表、缓存同步逻辑&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;缓存&lt;/td&gt;
          &lt;td&gt;缓存服务&lt;/td&gt;
          &lt;td&gt;统一缓存策略，替换组件（如 Memcached → Redis）不影响上层&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;用户数据&lt;/td&gt;
          &lt;td&gt;用户中心&lt;/td&gt;
          &lt;td&gt;统一用户画像、认证授权&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;52-服务化核心能力&#34;&gt;5.2 服务化核心能力&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;注册发现&lt;/strong&gt;：服务自注册到注册中心（Nacos/Consul/etcd），调用方动态发现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;容错路由&lt;/strong&gt;：熔断、限流、降级、重试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地短路&lt;/strong&gt;：部分服务优先本地调用（同机部署）以减少网络开销&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;调用方式&lt;/strong&gt;：同步、异步、并行调用按需选择&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;故障隔离&lt;/strong&gt;：核心/非核心服务分开部署，单服务故障不扩散&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;屏蔽细节&lt;/strong&gt;：屏蔽底层实现细节，只暴露必要的业务 API&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;53-高可靠性设计&#34;&gt;5.3 高可靠性设计&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;无状态设计&lt;/strong&gt;：状态外置（Redis/DB），实例可任意替换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注册中心集群&lt;/strong&gt;：即使注册中心宕机，已缓存的服务列表仍可继续运行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API 网关屏蔽故障节点&lt;/strong&gt;：健康检查自动剔除异常实例&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨机房路由&lt;/strong&gt;：异地多活，就近访问&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;6-依赖与耦合管理&#34;&gt;6. 依赖与耦合管理&lt;/h2&gt;
&lt;h3 id=&#34;61-反向依赖问题&#34;&gt;6.1 反向依赖问题&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：业务 A 变动，需要 B/C/D/F 配合修改。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;问题&lt;/th&gt;
          &lt;th&gt;解法&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;下游 IP 变更&lt;/td&gt;
          &lt;td&gt;上游硬编码 IP，需改配置重启&lt;/td&gt;
          &lt;td&gt;使用内网域名 + DNS，应用层具备重连机制&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;下游扩容&lt;/td&gt;
          &lt;td&gt;上游需同步调整连接池&lt;/td&gt;
          &lt;td&gt;引入注册中心或负载均衡器，上游无感知&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;公共库耦合&lt;/td&gt;
          &lt;td&gt;非共性功能沉淀在公共库&lt;/td&gt;
          &lt;td&gt;非共性上移；公共库改造为服务层，保持接口兼容&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;62-服务发现演进&#34;&gt;6.2 服务发现演进&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;硬编码IP → 配置文件 → 域名+hosts → 域名+DNS → 注册中心(etcd/Consul/Nacos) → K8s Service DNS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;优点&lt;/th&gt;
          &lt;th&gt;缺点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;域名 + DNS&lt;/td&gt;
          &lt;td&gt;IP 变动无需改应用&lt;/td&gt;
          &lt;td&gt;DNS 缓存更新慢（TTL），长连接不自动切换&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;注册中心&lt;/td&gt;
          &lt;td&gt;实时感知服务变化&lt;/td&gt;
          &lt;td&gt;引入新组件，需考虑自身高可用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;K8s Service DNS&lt;/td&gt;
          &lt;td&gt;云原生原生支持&lt;/td&gt;
          &lt;td&gt;绑定 K8s 生态&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;网关负载均衡&lt;/td&gt;
          &lt;td&gt;集中管理路由&lt;/td&gt;
          &lt;td&gt;额外引入组件，需考虑自身高可用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：DNS 缓存是服务发现中最容易被忽视的问题。Linux 默认 &lt;code&gt;nscd&lt;/code&gt; 缓存 5 分钟，JVM 缓存更久。生产环境建议 DNS TTL 设 10~30 秒，或应用层主动刷新。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;7-高可用设计&#34;&gt;7. 高可用设计&lt;/h2&gt;
&lt;h3 id=&#34;71-单点类型与消除&#34;&gt;7.1 单点类型与消除&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;单点类型&lt;/th&gt;
          &lt;th&gt;示例&lt;/th&gt;
          &lt;th&gt;消除方案&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;入口型&lt;/td&gt;
          &lt;td&gt;Nginx、负载均衡器&lt;/td&gt;
          &lt;td&gt;多节点 + Keepalived/VRRP 虚拟 IP&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;存储型&lt;/td&gt;
          &lt;td&gt;数据库、SFTP&lt;/td&gt;
          &lt;td&gt;主从复制、多副本、分布式存储&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;逻辑型&lt;/td&gt;
          &lt;td&gt;定时任务调度器&lt;/td&gt;
          &lt;td&gt;分布式锁（Redis/ZooKeeper）选举主节点&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：主备方案资源利用率仅 50%，现代架构倾向 &lt;strong&gt;多活（Active-Active）&lt;/strong&gt;——所有节点同时提供服务，故障时流量自动切换，利用率接近 100%。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;72-高可用机制&#34;&gt;7.2 高可用机制&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;机制&lt;/th&gt;
          &lt;th&gt;原理&lt;/th&gt;
          &lt;th&gt;适用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;副本机制&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;数据多份存储，一主多从&lt;/td&gt;
          &lt;td&gt;数据库、消息队列&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Leader 选举&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;主节点故障时自动选举新主&lt;/td&gt;
          &lt;td&gt;Redis Sentinel、Kafka Controller、etcd&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;纠删码（Erasure Coding）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;将数据分片编码存储，部分丢失可重建&lt;/td&gt;
          &lt;td&gt;对象存储（HDFS、Ceph、MinIO），节省存储成本&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：纠删码 vs 副本的权衡——3 副本存储开销 200%，纠删码（如 4+2）开销 50%，但纠删码计算开销大、恢复慢。热数据用副本，冷数据用纠删码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;73-断路器circuit-breaker&#34;&gt;7.3 断路器（Circuit Breaker）&lt;/h3&gt;
&lt;p&gt;当外部接口大面积错误时：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;限流降级&lt;/strong&gt;：减少请求量，只保留核心请求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;熔断断开&lt;/strong&gt;：直接拒绝请求，1~3 分钟后探测恢复&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速失败&lt;/strong&gt;：设置超时，避免长时间阻塞&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：断路器三态——关闭（正常）→ 打开（熔断）→ 半开（探测）。半开状态放少量请求试探，成功则关闭，失败继续保持打开。Hystrix 已停止开发，现代用 &lt;strong&gt;Resilience4j&lt;/strong&gt;（Java）或 &lt;strong&gt;Sentinel&lt;/strong&gt;（阿里，功能更丰富）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;8-容量与性能设计&#34;&gt;8. 容量与性能设计&lt;/h2&gt;
&lt;h3 id=&#34;81-容量评估四步法&#34;&gt;8.1 容量评估四步法&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;步骤&lt;/th&gt;
          &lt;th&gt;方法&lt;/th&gt;
          &lt;th&gt;注意&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1. 总访问量&lt;/td&gt;
          &lt;td&gt;业务方预估上线后总用户量&lt;/td&gt;
          &lt;td&gt;考虑交易特性（如电商大促）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2. 平均 QPS&lt;/td&gt;
          &lt;td&gt;总量 ÷ 总时间&lt;/td&gt;
          &lt;td&gt;按白天 12 小时 ≈ 4 万秒计算&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3. 高峰 QPS&lt;/td&gt;
          &lt;td&gt;根据历史曲线或业务特征预估&lt;/td&gt;
          &lt;td&gt;秒杀场景峰值可能是均值 10~100 倍&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4. 单机极限&lt;/td&gt;
          &lt;td&gt;压测得出单机最大 QPS&lt;/td&gt;
          &lt;td&gt;分层较多时先找到瓶颈层&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;最终资源 = 高峰 QPS ÷ 单机极限 QPS × 冗余系数（通常 1.5~2）&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;82-架构分离范式&#34;&gt;8.2 架构分离范式&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;分离方式&lt;/th&gt;
          &lt;th&gt;目的&lt;/th&gt;
          &lt;th&gt;实践&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;动静分离&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;静态资源走 CDN，动态请求走源站&lt;/td&gt;
          &lt;td&gt;页面/JS/CSS/图片/视频 上 CDN&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;读写分离&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;线性提升读性能&lt;/td&gt;
          &lt;td&gt;主库写、从库读，配合延迟监控&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;前后台分离&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;用户侧与运营侧解耦&lt;/td&gt;
          &lt;td&gt;前台保低延迟，后台容忍高延迟&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：动态页面静态化（如新闻首页、商城首页提前生成 HTML）是动静分离的进阶——数据量不大、更新频率低的页面，定时任务生成静态页，用户直接访问 CDN 上的 HTML，源站压力趋近于零。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;9-扩展性设计&#34;&gt;9. 扩展性设计&lt;/h2&gt;
&lt;h3 id=&#34;91-何时需要扩展&#34;&gt;9.1 何时需要扩展&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;业务量增 10~100 倍，数据量增数十 TB&lt;/li&gt;
&lt;li&gt;延迟要求更低，响应速度要求更快&lt;/li&gt;
&lt;li&gt;云化/容器化、新增数据中心&lt;/li&gt;
&lt;li&gt;引入新组件（大数据、AI）、接入公共服务（SSO）&lt;/li&gt;
&lt;li&gt;安全要求提升（双活多活、风控）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;92-扩展性设计要点&#34;&gt;9.2 扩展性设计要点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不要过度设计&lt;/strong&gt;：先满足当前 1~2 年需求，预留扩展接口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;功能开关（Feature Toggle）&lt;/strong&gt;：新功能通过开关控制，随时回退&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无状态化&lt;/strong&gt;：状态外置，扩容只需加实例&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;水平扩展优先&lt;/strong&gt;：加机器 &amp;gt; 升配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;接口兼容&lt;/strong&gt;：向后兼容，支持灰度升级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;故障隔离&lt;/strong&gt;：单组件故障不扩散，可独立降级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成本控制&lt;/strong&gt;：避免资源浪费，成本控制在可接受范围内&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;10-现代架构设计要点补充&#34;&gt;10. 现代架构设计要点（补充）&lt;/h2&gt;
&lt;p&gt;原始材料缺少以下现代架构核心内容，补充如下：&lt;/p&gt;
&lt;h3 id=&#34;101-云原生cloud-native&#34;&gt;10.1 云原生（Cloud Native）&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;要素&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
          &lt;th&gt;技术&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;容器化&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;应用打包为容器镜像，环境一致&lt;/td&gt;
          &lt;td&gt;Docker、containerd&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;编排&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;自动化部署、扩缩容、自愈&lt;/td&gt;
          &lt;td&gt;Kubernetes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;微服务&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;服务独立部署、独立扩展&lt;/td&gt;
          &lt;td&gt;Spring Cloud、Dubbo、gRPC&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;服务网格&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;基础设施层处理服务间通信&lt;/td&gt;
          &lt;td&gt;Istio、Linkerd&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;声明式 API&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;描述期望状态，系统自动达成&lt;/td&gt;
          &lt;td&gt;K8s YAML、Terraform&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：云原生的核心不是&amp;quot;用 K8s&amp;quot;，而是&lt;strong&gt;不可变基础设施&lt;/strong&gt;——服务器只读，任何变更通过重新部署实现，杜绝&amp;quot; snowflake server &amp;ldquo;（手工配置、无法复现的服务器）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;102-可观测性observability&#34;&gt;10.2 可观测性（Observability）&lt;/h3&gt;
&lt;p&gt;三大支柱 + 一个基础：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;支柱&lt;/th&gt;
          &lt;th&gt;内容&lt;/th&gt;
          &lt;th&gt;工具&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Metrics（指标）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;聚合数值，看趋势&lt;/td&gt;
          &lt;td&gt;Prometheus + Grafana&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Logging（日志）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;离散事件，查细节&lt;/td&gt;
          &lt;td&gt;ELK / Loki / Fluentd&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Tracing（追踪）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;请求链路，定位慢点&lt;/td&gt;
          &lt;td&gt;Jaeger / SkyWalking / Zipkin&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Profiling（剖析）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;代码级性能分析&lt;/td&gt;
          &lt;td&gt;Pyroscope / Parca / Arthas&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注解&lt;/strong&gt;：可观测性 ≠ 监控。监控是&amp;quot;我知道问题在哪，设个告警&amp;rdquo;；可观测性是&amp;quot;我不知道问题在哪，通过数据探索发现&amp;quot;。现代架构要求&lt;strong&gt;OpenTelemetry&lt;/strong&gt; 统一标准，避免各系统数据孤岛。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;103-安全设计security-by-design&#34;&gt;10.3 安全设计（Security by Design）&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;原则&lt;/th&gt;
          &lt;th&gt;实践&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;零信任（Zero Trust）&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;默认不信任任何请求，内外网一视同仁，全部认证授权&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;最小权限&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;服务只拥有完成工作所需的最小权限&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;安全左移&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;安全扫描前置到 CI 阶段（SAST/DAST/依赖扫描）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Secrets 管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;密码/密钥不硬编码，用 Vault / K8s Secret / 云 KMS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;mTLS&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;服务间通信双向 TLS 加密（Istio/Linkerd 自动实现）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;104-数据架构设计&#34;&gt;10.4 数据架构设计&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;CQRS&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;读写模型分离，读模型独立优化（ES/Redis）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Event Sourcing&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;审计要求高、需回放历史的场景&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Saga&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;长事务分布式场景，通过补偿回滚&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Outbox&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;保证数据库写入和消息发送原子性&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;105-sre-与可靠性工程&#34;&gt;10.5 SRE 与可靠性工程&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;概念&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;SLI&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;服务质量指标（如延迟 P99 &amp;lt; 200ms）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;SLO&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;服务质量目标（如可用性 99.99%）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;SLA&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;服务等级协议（违约赔偿条款）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Error Budget&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;允许的错误配额，用完则暂停发布&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Chaos Engineering&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;故意注入故障，验证系统恢复能力&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;106-finops云成本优化&#34;&gt;10.6 FinOps（云成本优化）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;资源标签化，按团队/项目追踪成本&lt;/li&gt;
&lt;li&gt;自动伸缩（HPA/VPA/Cluster Autoscaler）避免过度预留&lt;/li&gt;
&lt;li&gt;Spot/Preemptible 实例用于非关键负载&lt;/li&gt;
&lt;li&gt;存储分层（热数据 SSD、温数据 HDD、冷数据对象存储）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;11-架构设计-checklist&#34;&gt;11. 架构设计 Checklist&lt;/h2&gt;
&lt;h3 id=&#34;业务功能&#34;&gt;业务功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 需求理解 → 领域建模（DDD） → 数据结构设计&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 选择合适的技术栈（语言、框架、数据库）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;非业务功能&#34;&gt;非业务功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;安全性&lt;/strong&gt;：防攻击、密码安全、传输加密、访问控制&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;稳定性&lt;/strong&gt;：防崩溃、故障隔离、风险承受能力评估&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;高性能&lt;/strong&gt;：响应时间、吞吐量、资源利用率&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;灵活性&lt;/strong&gt;：敏捷性（快速引入/淘汰组件）、弹性（平滑扩缩容）&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;可维护性&lt;/strong&gt;：自动化部署、故障自愈、减少人工介入&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;成本&lt;/strong&gt;：物理成本、建设成本、维护成本、人员成本&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;易用性&lt;/strong&gt;：运营人员能否通过系统产出决策&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;生命周期&lt;/strong&gt;：满足上线时间、运行周期、平稳下线&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; &lt;strong&gt;外部依赖&lt;/strong&gt;：外部系统支撑能力弱时，是否有冗余/容错设计&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;架构验证&#34;&gt;架构验证&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 是否遵循 12-Factor / 云原生原则&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 是否消除单点故障&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 容量评估是否覆盖峰值（含秒杀场景）&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 是否具备熔断、限流、降级能力&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 是否具备可观测性（Metrics/Logging/Tracing）&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 是否设计功能开关，支持灰度发布&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 安全扫描是否集成到 CI 流水线&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34; /&gt; 是否具备混沌工程演练能力&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;文档版本&lt;/strong&gt;：v2.0&lt;br /&gt;
&lt;strong&gt;整合说明&lt;/strong&gt;：基于 12 份原始设计原则材料整合，修正了&amp;quot;频闭&amp;quot;等错别字、编号重复等问题，补充了 CAP/BASE/PACELC、云原生、可观测性、零信任安全、SRE、FinOps、CQRS/Event Sourcing/Saga 等现代架构设计要点。&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>软件系统架构设计</title>
        <link>/p/soft-base-standardization.html</link>
        <pubDate>Sun, 15 Mar 2026 12:53:32 +0800</pubDate>
        <author>chenwx716@139.com</author>
        <guid>/p/soft-base-standardization.html</guid>
        <description>&lt;h2 id=&#34;基本公式---三板斧&#34;&gt;基本公式 - 三板斧&lt;/h2&gt;
&lt;p&gt;性能优化&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;缓存&lt;/li&gt;
&lt;li&gt;异步&lt;/li&gt;
&lt;li&gt;并行&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一致性&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;raft 多数节点投票&lt;/li&gt;
&lt;li&gt;双写: 附加一致性校验 or 版本控制&lt;/li&gt;
&lt;li&gt;分布式事务 / 最终一致性&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;安全&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;隔离&lt;/li&gt;
&lt;li&gt;升级&lt;/li&gt;
&lt;li&gt;权限&lt;/li&gt;
&lt;li&gt;审计&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;高并发&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;队列&lt;/li&gt;
&lt;li&gt;分流&lt;/li&gt;
&lt;li&gt;熔断 / 降级&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;秒杀&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;限流&lt;/li&gt;
&lt;li&gt;队列&lt;/li&gt;
&lt;li&gt;锁: 避免超售&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;高可用&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;多副本&lt;/li&gt;
&lt;li&gt;自动故障转移&lt;/li&gt;
&lt;li&gt;自愈&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;高可用架构设计---基础设施&#34;&gt;高可用架构设计 - 基础设施&lt;/h2&gt;
&lt;h3 id=&#34;cap-定理&#34;&gt;CAP 定理&lt;/h3&gt;
&lt;p&gt;分布式环境中有一个不可能的三角 CAP 定理: 一致性, 可用性, 分区容错性;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C(Consistency)一致性: 所有节点在同一时刻看到相同的数据;&lt;/li&gt;
&lt;li&gt;A(Availability)可用性: 每个请求都能收到(非错误)响应, 但不保证数据是最新的;&lt;/li&gt;
&lt;li&gt;P(Partition tolerance)分区容错性: 系统在网络分区(节点间消息丢失或延迟)时仍能继续运行;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在分布式系统中, 当发生网络分区(P 必须满足)时, 无法同时保证 C 和 A, 只能在 C 和 A 之间做取舍;&lt;/p&gt;
&lt;p&gt;典型选择:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CP 系统: 放弃 A, 保证强一致性(如 Zookeeper, Etcd, HBase); 分区时可能拒绝服务;&lt;/li&gt;
&lt;li&gt;AP 系统: 放弃 C, 保证最终一致性(如 Cassandra, CouchDB, Eureka); 分区时允许读到旧数据;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大部分互联网业务(如商品库存, 用户信息)倾向于 AP + 最终一致性, 配合消息队列, 对账修复来弱化不一致窗口;&lt;br /&gt;
金融, 分布式锁等场景必须用 CP(如 Raft), 允许在分区时短暂不可用;&lt;/p&gt;
&lt;h3 id=&#34;多副本&#34;&gt;多副本&lt;/h3&gt;
&lt;p&gt;双中心&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;同城主备&lt;/li&gt;
&lt;li&gt;同城双活&lt;/li&gt;
&lt;li&gt;异地备份&lt;/li&gt;
&lt;li&gt;异地双活&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;两地三中心:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同城双中心&lt;/li&gt;
&lt;li&gt;异地灾备中心&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;云环境&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多 AZ&lt;/li&gt;
&lt;li&gt;混合云&lt;/li&gt;
&lt;li&gt;多 AZ + IDC 同城双活&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;延迟同步:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心数据可以附加延迟备份, 避免类似 DDL 语句造成全量数据影响;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相关有状态组件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据库&lt;/li&gt;
&lt;li&gt;缓存&lt;/li&gt;
&lt;li&gt;MQ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;多副本的核心问题&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一致性: 数据如何同步, 冲突如何解决&lt;/li&gt;
&lt;li&gt;流量如何选择入口&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;用户入口问题&#34;&gt;用户入口问题&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;DNS/CDN
&lt;ul&gt;
&lt;li&gt;DNS 配置多个地址, 随机取一条访问&lt;/li&gt;
&lt;li&gt;智能 DNS, 就近路由, 故障转移&lt;/li&gt;
&lt;li&gt;CDN 回源时, 按策略进入指定区域&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;网关重定向: 智能 DNS 解析到 任意区域网关服务, 由网关服务根据条件将用户请求重定向到合适区域&lt;/li&gt;
&lt;li&gt;前置: 客户端内置多个路径, 根据算法选择路径&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;多中心数据一致性&#34;&gt;多中心数据一致性&lt;/h4&gt;
&lt;p&gt;根据 CAP 和需求进行取舍;&lt;/p&gt;
&lt;p&gt;数据冲突&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;同时只有 1 个数据中心可写, 将冲突问题改为同步问题&lt;/li&gt;
&lt;li&gt;细化的全局锁, 获得锁的中心才能写数据, 同步完成才解锁&lt;/li&gt;
&lt;li&gt;raft 协议, leader 节点可写;&lt;/li&gt;
&lt;li&gt;数据拆分, 设计成不同中心写的数据完全不会冲突; 例如 uid 单双数进入不同中心;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;数据同步&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;异步复制; 网络分区时, 暂时使用旧数据, 后续进行数据补偿和修复;&lt;/li&gt;
&lt;li&gt;强同步, 只有对方机房同步成功, 本端才能成功;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;灾备设计&#34;&gt;灾备设计&lt;/h3&gt;
&lt;p&gt;传统的灾备只是单向同步数据, 日常没有流量; 导致在关键时刻没人有信心敢立即切流量过去;&lt;/p&gt;
&lt;p&gt;通常启用灾备中心并切换流量后, 都会伴随较多的人工操作和各种大小问题;&lt;/p&gt;
&lt;p&gt;所以正确的灾备中心设计, 不应该只做备, 而是日常就要有全业务的小比例流量, 才能保障在关键时刻能顶上;&lt;/p&gt;
&lt;p&gt;灾备设计重点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入口流量怎么过来&lt;/li&gt;
&lt;li&gt;数据一致性; 包括数据库, 中间件, 缓存等所有有状态数据节点的数据;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;自愈&#34;&gt;自愈&lt;/h3&gt;
&lt;p&gt;发生故障时的自我恢复能力, 应用程序有内部自愈和外部自愈两类;&lt;/p&gt;
&lt;p&gt;内部自愈: 核心是防止自己死了;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;例如当调用数据库不通时, 不再接收新业务请求, 等通了再接收新连接, 避免自己死掉&lt;/li&gt;
&lt;li&gt;自我监控内存信息, 当无可用内存时, 主动释放资源&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;外部自愈: 死了后能被拉起来&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;脚本循环检测, 发现死了重新拉起来, 并且重写加入集群;&lt;/li&gt;
&lt;li&gt;更多逻辑判断, 处理故障后再拉起来&lt;/li&gt;
&lt;li&gt;在程序故障之前提前进行处理, 如通过监控发现程序可能出现内存泄漏, 主动重启或告警&lt;/li&gt;
&lt;li&gt;参考 k8s 的 operator 模式, 由一个管理控制器来运维;&lt;/li&gt;
&lt;li&gt;可回滚, 例如新版本刚发布的场景, 能自动回滚;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;自动故障转移&#34;&gt;自动故障转移&lt;/h3&gt;
&lt;p&gt;一般来说特指将发往故障节点的流量, 转发到正确节点上去;&lt;/p&gt;
&lt;p&gt;相关策略&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例如 keepalived 的故障检测和 VIP 漂移&lt;/li&gt;
&lt;li&gt;对于网关服务, 参考 nginx 应该对上游有故障检测和屏蔽机制;&lt;/li&gt;
&lt;li&gt;微服务体系种, 故障检测和屏蔽能力 转移到了注册中心上去;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;高可用架构设计---应用服务&#34;&gt;高可用架构设计 - 应用服务&lt;/h2&gt;
&lt;p&gt;核心是避免外部流量冲垮自己&lt;/p&gt;
&lt;h3 id=&#34;服务降级&#34;&gt;服务降级&lt;/h3&gt;
&lt;p&gt;在高压力或某一块业务故障后, 进行服务降级; 屏蔽非核心业务, 以保障核心基础服务的可用;&lt;/p&gt;
&lt;p&gt;相关策略&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;降级开关集中化: 例如将开关放置在 nacos 配置内拉取, 或由运维平台内通过接口推送;&lt;/li&gt;
&lt;li&gt;开关前置化: 例如在网关层(nginx or gateway)配置降级策略, 直接响应某接口的请求, 或转移流量;&lt;/li&gt;
&lt;li&gt;次要功能可由同步改为延迟异步策略&lt;/li&gt;
&lt;li&gt;降低一致性需求, 比如点赞数, 可以降级为暂时只使用本地缓存, 不读数据库或 redis;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;限流&#34;&gt;限流&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;应对恶意流量&lt;/li&gt;
&lt;li&gt;应对突增的超出业务处理能力的流量&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;相关策略&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;网关层就进行限流拦截&lt;/li&gt;
&lt;li&gt;恶意请求: 使用 Nginx Deny 策略或者 iptables 或 waf 联动&lt;/li&gt;
&lt;li&gt;对于能穿透到数据库的核心请求做 limit 处理&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>网关</title>
        <link>/p/gateway.html</link>
        <pubDate>Tue, 11 Jul 2023 12:53:32 +0800</pubDate>
        <author>chenwx716@139.com</author>
        <guid>/p/gateway.html</guid>
        <description>&lt;h2 id=&#34;基础概念&#34;&gt;基础概念&lt;/h2&gt;
&lt;p&gt;一个物理或逻辑区域的入口或出口&lt;/p&gt;
&lt;h2 id=&#34;网关分类&#34;&gt;网关分类&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;网络层网关: 重点是网络数据包转发和访问控制&lt;/li&gt;
&lt;li&gt;API 网关: 属于业务网关, 主要附带身份认证、流控、安全等业务功能&lt;/li&gt;
&lt;li&gt;数据网关; 缓存, 数据库, 存储, 数据仓库&lt;/li&gt;
&lt;li&gt;安全网关: 隔离，鉴权&lt;/li&gt;
&lt;li&gt;管理网关&lt;/li&gt;
&lt;li&gt;边界网关: 逻辑概念, 区分不同区域&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;api-网关&#34;&gt;API 网关&lt;/h2&gt;
&lt;p&gt;将统一业务入口, 流控, 负载均衡, 鉴权, 安全等功能进行前置&lt;br /&gt;
黑白名单, 协议适配(tcp/udp/http), 容错可用能力&lt;/p&gt;
&lt;h3 id=&#34;主要用途&#34;&gt;主要用途&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;隔离: 作为企业系统边界, 隔离外网系统与内网系统, 隐藏内部细节&lt;/li&gt;
&lt;li&gt;解耦: 使得各业务系统之间 或 微服务系统 之间能够独立, 自由, 高效, 灵活地调整;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;常用方式&#34;&gt;常用方式&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;nginx+lua&lt;/li&gt;
&lt;li&gt;traefix&lt;/li&gt;
&lt;li&gt;Spring Cloud Gateway&lt;/li&gt;
&lt;li&gt;业务自建&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;通用api网关设计要点&#34;&gt;通用api网关设计要点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;高性能&lt;/li&gt;
&lt;li&gt;安全性: 身份认证、权限认证&lt;/li&gt;
&lt;li&gt;高可用: 无状态设计原则&lt;/li&gt;
&lt;li&gt;可扩展: 支持插件, 脚本 等扩展功能&lt;/li&gt;
&lt;li&gt;运维友好&lt;/li&gt;
&lt;li&gt;隔离性：某个类型的后端服务异常时不影响其它类型服务&lt;/li&gt;
&lt;li&gt;动态变更: 负载规则变更时，不影响其它服务&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;api-网关设计要点&#34;&gt;API 网关设计要点&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;API标准化: 无标准不平台&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持 API接口测试: 即可以方便地对接口进行测试, 或者方便区分或隔离测试流量和生产流量&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全生命周期管理&lt;br /&gt;
覆盖 API 的定义、测试、发布的整个生命周期管理，&lt;br /&gt;
便捷的日常管理、版本管理，支持热升级和快速回滚&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;协议主流化&lt;br /&gt;
http, https, xml, json, grpc&lt;br /&gt;
提供 java php python 等SDK&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;业务-api-网关设计&#34;&gt;业务 API 网关设计&lt;/h1&gt;
&lt;h2 id=&#34;接口命名&#34;&gt;接口命名&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;风格统一 (都为英文小写)&lt;/li&gt;
&lt;li&gt;模式固定 (xx.xx.xx.xx)&lt;/li&gt;
&lt;li&gt;简洁明了&lt;/li&gt;
&lt;li&gt;有扩展性&lt;/li&gt;
&lt;li&gt;分类与分层&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;举例：suning.custom.order.get&lt;/p&gt;
&lt;p&gt;格式：suning. 业务分类. 模块简称. 操作符&lt;/p&gt;
&lt;h2 id=&#34;文档规范化&#34;&gt;文档规范化&lt;/h2&gt;
&lt;p&gt;API文档组成&lt;br /&gt;
简介、接口描述、公共参数、请求参数、响应参数、请求示例&lt;br /&gt;
业务异常码、公共异常码、响应示例、FAQ、异常示例、API工具&lt;/p&gt;
&lt;h2 id=&#34;异常码标准化&#34;&gt;异常码标准化&lt;/h2&gt;
&lt;p&gt;统一风格，分类，唯一性，有利于监控、告警、问题排查&lt;br /&gt;
有条件的情况，除返回异常码外，还要有中文描述&lt;/p&gt;
&lt;h2 id=&#34;api管理&#34;&gt;API管理&lt;/h2&gt;
&lt;p&gt;可以开关、流量控制和限流&lt;br /&gt;
安全管理、&lt;br /&gt;
接口分流: 不同的分类对应不同的后端服务&lt;br /&gt;
服务降级: 进行快速错误&lt;/p&gt;
&lt;h2 id=&#34;api监控&#34;&gt;API监控&lt;/h2&gt;
&lt;p&gt;日志&lt;br /&gt;
接口统计&lt;br /&gt;
告警&lt;br /&gt;
存储监控数据&lt;/p&gt;
&lt;hr /&gt;
</description>
        </item>
        
    </channel>
</rss>
