<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>云原生 on Snow</title>
        <link>https://SymphonyW.github.io/zh-cn/tags/%E4%BA%91%E5%8E%9F%E7%94%9F/</link>
        <description>Recent content in 云原生 on Snow</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>Snow</copyright>
        <lastBuildDate>Mon, 28 Sep 2026 20:17:30 +0800</lastBuildDate><atom:link href="https://SymphonyW.github.io/zh-cn/tags/%E4%BA%91%E5%8E%9F%E7%94%9F/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>互联网架构演进：从单机到云原生，一篇讲清楚</title>
        <link>https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/</link>
        <pubDate>Mon, 28 Sep 2026 20:17:30 +0800</pubDate>
        
        <guid>https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/</guid>
        <description>&lt;img src="https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/bg.svg" alt="Featured image of post 互联网架构演进：从单机到云原生，一篇讲清楚" /&gt;&lt;h1 id=&#34;互联网架构演进从单机到云原生一篇讲清楚&#34;&gt;互联网架构演进：从单机到云原生，一篇讲清楚
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;这篇文章基于视频《互联网架构就这？1个故事讲清楚》整理，并加入了一些工程化解释。它不是逐字稿，而是把视频里最有价值的那条线拎出来：&lt;strong&gt;架构不是一开始设计出来的，而是业务规模一步步逼出来的。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;






    


&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe src=&#34;https://player.bilibili.com/player.html?as_wide=1&amp;amp;high_quality=1&amp;amp;page=1&amp;bvid=BV1M15Q6eEhL&#34;
            scrolling=&#34;no&#34;
            frameborder=&#34;no&#34;
            framespacing=&#34;0&#34;
            allowfullscreen=&#34;true&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/bg.svg&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/bg.svg&#34; alt=&#34;互联网架构演进封面&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;很多人学架构时会被一堆名词砸晕：负载均衡、读写分离、缓存、分库分表、RPC、注册中心、消息队列、微服务、Kubernetes……如果只背概念，很容易知道“有什么”，却不知道“为什么会出现”。&lt;/p&gt;
&lt;p&gt;更好的理解方式是：把一个网站想象成从 0 开始长大。每次流量变大、数据变多、团队变大，原来的方案就会暴露一个瓶颈。于是架构升级一步，解决一个主要矛盾，同时引入新的复杂度。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/evolution-roadmap.svg&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/evolution-roadmap.svg&#34; alt=&#34;从单机到云原生的演进路线图&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&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;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;应用、数据库、文件都放一台机器&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;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;Nginx / HAProxy + 多应用节点&lt;/td&gt;
&lt;td&gt;Session、部署一致性要处理&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;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、CDN&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;td&gt;跨库查询、分布式事务、全局 ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CDN 与反向代理&lt;/td&gt;
&lt;td&gt;跨地域访问慢，后端暴露风险高&lt;/td&gt;
&lt;td&gt;CDN、Nginx、WAF、SSL 卸载&lt;/td&gt;
&lt;td&gt;缓存刷新和边缘一致性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;搜索与 NoSQL&lt;/td&gt;
&lt;td&gt;SQL 不适合全文检索和多变结构&lt;/td&gt;
&lt;td&gt;Elasticsearch、MongoDB、HBase 等&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;RPC、注册中心、消息队列&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;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;Docker、Kubernetes、CI/CD、云平台&lt;/td&gt;
&lt;td&gt;平台建设和学习成本&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;核心脉络&#34;&gt;核心脉络
&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;当前瓶颈在哪里？&lt;/td&gt;
&lt;td&gt;是 CPU 不够、数据库扛不住、网络太远，还是团队协作卡住了&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;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;单机时代的价值是快。一个小网站、一个后台系统、一个 MVP，最开始完全可以用一台机器跑应用和数据库。这个阶段追求的是低成本验证，而不是提前把 Kubernetes、服务网格、消息队列全搬进来。&lt;strong&gt;能用简单方案解决的问题，就不要过早分布式。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当流量变大，最先撞到的是资源竞争：应用在吃 CPU 和内存，数据库在吃磁盘 I/O 和缓存，两者混在一台机器上互相拖累。把应用和数据库拆到不同机器，是第一次非常自然的升级。&lt;/p&gt;
&lt;p&gt;接下来，应用层通常比数据库层更容易横向扩容。多加几台应用服务器，再用 Nginx 或 HAProxy 做负载均衡，请求就能被分摊出去。这里会遇到第一个“分布式味道”的问题：用户 Session 不能只放在某台应用机器上，否则用户下一次请求被转发到另一台机器时就可能丢状态。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/traffic-path.svg&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/traffic-path.svg&#34; alt=&#34;典型读请求链路：从用户到缓存再到数据库&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;读流量继续增长后，数据库会成为核心瓶颈。多数互联网业务是读多写少，比如浏览商品、看文章、查资料、刷列表。于是主库负责写，从库负责读，读请求可以横向扩展。但这也意味着主从复制存在延迟：刚写完的数据，马上读从库时可能还没同步过去。&lt;/p&gt;
&lt;p&gt;缓存是下一次大提速。浏览器缓存减少重复下载，CDN 把静态资源放到离用户更近的边缘节点，本地缓存减少进程外调用，Redis 这类分布式缓存挡住大部分热点读请求。缓存的本质是用空间换时间，但它不是免费午餐：缓存失效、脏数据、热点 Key、穿透和雪崩都需要设计。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;数据层怎么长大&#34;&gt;数据层怎么长大
&lt;/h2&gt;&lt;p&gt;数据库的演进可以单独看成一条线：从一台主库，到主从复制，再到分片，再到多种存储协作。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/data-scale.svg&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/data-scale.svg&#34; alt=&#34;数据层扩展：主从、分片与专用存储&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&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;/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;Redis / 本地缓存 / CDN&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;用户库、商品库、订单库、支付库&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;全文检索&lt;/td&gt;
&lt;td&gt;Elasticsearch&lt;/td&gt;
&lt;td&gt;商品搜索、站内搜索、日志检索&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;灵活结构&lt;/td&gt;
&lt;td&gt;MongoDB / 文档库&lt;/td&gt;
&lt;td&gt;内容、配置、埋点、可变属性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;海量写入&lt;/td&gt;
&lt;td&gt;HBase / Cassandra / 时序库&lt;/td&gt;
&lt;td&gt;监控、IoT、行为日志&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;分库分表不是“数据库优化的高级形态”，而是单库单表确实扛不住后的手段。它能把数据分散出去，也会带来跨库 Join 难、跨分片事务难、分页统计难、扩容迁移难等问题。&lt;/p&gt;
&lt;p&gt;一个比较稳妥的经验是：先优化索引、SQL、缓存和读写分离；只有当数据量、写入量或单表维护成本真的压上来，再进入分库分表。架构升级要被证据推动，而不是被焦虑推动。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;从单体到服务化&#34;&gt;从单体到服务化
&lt;/h2&gt;&lt;p&gt;当系统功能越来越多，单体应用会从“简单”慢慢变成“沉重”。所有模块共用一套代码、一套数据库、一条发布流水线，一个小功能也要跟整个系统一起上线。团队变大后，代码冲突、发布排队、故障影响面都会变得很难受。&lt;/p&gt;
&lt;p&gt;服务化的第一步是按业务边界拆开：用户服务、商品服务、订单服务、支付服务、库存服务、推荐服务。拆开之后，每个服务可以独立开发、独立部署、独立扩容。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/service-governance.svg&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/service-governance.svg&#34; alt=&#34;微服务治理：网关、注册中心、消息队列与可观测性&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;
&lt;/p&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;/td&gt;
&lt;td&gt;注册中心与服务发现&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;服务之间要高效调用&lt;/td&gt;
&lt;td&gt;RPC / HTTP API / gRPC&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;tr&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;/tr&gt;
&lt;tr&gt;
&lt;td&gt;对外入口越来越乱&lt;/td&gt;
&lt;td&gt;API 网关、认证、限流、路由&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;消息队列是服务化里非常关键的一块。它把同步调用变成异步事件，让订单创建、库存扣减、积分发放、短信通知、搜索索引更新等动作不必全部堵在一个请求里完成。代价是系统从“立即一致”变成“最终一致”，业务上要能接受中间状态。&lt;/p&gt;
&lt;p&gt;微服务不是单体的反面，也不是架构的终点。它适合业务边界稳定、团队规模较大、部署节奏不同、局部扩容需求明显的系统。如果项目还小，团队也小，强行微服务反而会把工程复杂度提前引爆。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;云原生解决的是交付问题&#34;&gt;云原生解决的是交付问题
&lt;/h2&gt;&lt;p&gt;当服务数量来到几十、上百个，真正痛苦的往往不只是代码，而是交付和运维：环境不一致、发布步骤多、机器资源浪费、扩容靠人工、故障恢复慢。&lt;/p&gt;
&lt;p&gt;Docker 先把应用和依赖打成标准镜像，解决“在我机器上能跑”的问题。Kubernetes 再把镜像调度到集群里，通过声明式配置维持期望状态：副本少了就补，节点挂了就迁，版本升级按策略滚动。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/cloud-native-delivery.svg&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/internet-architecture-evolution/cloud-native-delivery.svg&#34; alt=&#34;云原生交付链路：从代码到镜像再到集群&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;
&lt;/p&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;/td&gt;
&lt;td&gt;CI/CD、镜像仓库、GitOps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;运行与调度&lt;/td&gt;
&lt;td&gt;Docker、containerd、Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;配置与密钥&lt;/td&gt;
&lt;td&gt;ConfigMap、Secret、配置中心&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;弹性伸缩&lt;/td&gt;
&lt;td&gt;HPA、自动扩缩容、弹性云资源&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;tr&gt;
&lt;td&gt;可观测性&lt;/td&gt;
&lt;td&gt;Metrics、Logs、Tracing、告警&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;云原生并不是“把应用放进容器”这么简单。它更像是一套围绕自动化交付、弹性扩缩容和故障自愈建立起来的平台能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;常见误区&#34;&gt;常见误区
&lt;/h2&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;/td&gt;
&lt;td&gt;小系统先单体，等边界和压力清楚后再拆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;上了 Redis 就不会慢&lt;/td&gt;
&lt;td&gt;缓存命中率、淘汰策略、热点 Key 和回源保护同样重要&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;tr&gt;
&lt;td&gt;MQ 能保证绝对一致&lt;/td&gt;
&lt;td&gt;MQ 更多是解耦和削峰，常见结果是最终一致&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kubernetes 会自动让系统高可用&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;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;单机 CPU / 内存 / I/O 长期打满&lt;/td&gt;
&lt;td&gt;应用与数据库分离，或垂直扩容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;应用层 QPS 扛不住&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;/tr&gt;
&lt;tr&gt;
&lt;td&gt;热点数据重复查询&lt;/td&gt;
&lt;td&gt;多级缓存、CDN&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;tr&gt;
&lt;td&gt;搜索体验差&lt;/td&gt;
&lt;td&gt;Elasticsearch 等搜索引擎&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;tr&gt;
&lt;td&gt;服务太多、部署混乱&lt;/td&gt;
&lt;td&gt;容器化、Kubernetes、CI/CD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;互联网架构演进不是一条炫技路线，而是一条不断处理主要矛盾的路线：&lt;/p&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;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先跑起来
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 扛住更多请求
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 保护数据库
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 拆开数据与业务边界
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 让服务独立交付
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 让平台自动化运行
&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;p&gt;如果只记一句话：&lt;strong&gt;架构升级的本质，是在业务增长带来的新瓶颈面前，用可接受的复杂度换取性能、可用性、可扩展性和交付效率。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;真正好的架构师，不是把所有热门技术都塞进系统里，而是知道此刻最应该解决哪个问题，也知道每个方案会带来什么代价。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原视频：&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1M15Q6eEhL/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;互联网架构就这？1个故事讲清楚&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;辅助整理：&lt;a class=&#34;link&#34; href=&#34;https://jishuzhan.net/article/2060519174396522497&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;互联网架构演进精读：从单机到云原生&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;B 站视频嵌入使用本站已有 &lt;code&gt;bilibili&lt;/code&gt; shortcode；本文配图为基于内容重新绘制的本地 SVG。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
