Doker背景——服务器技术架构演进之路
目录概述常见概念基本概念应用/系统模块Module/ 组件Component分布式Distributed集群Cluster主Master/ 从Slave中间件Middleware容器Docker容器编排K8S评价指标可用性Availability响应时长Response Time RT吞吐Throughputvs 并发Concurrent架构演进单机架构应用数据分离架构应用服务集群架构读写分离 / 主从分离架构引入缓存 —— 冷热分离架构垂直分库微服务架构容器化引入——容器编排架构概述在进行技术学习过程中由于大部分读者没有经历过一些中大型系统的实际经验导致无法从全局理解一些概念所以本文以一个 电子商务 应用为例介绍从一百个到千万级并发情况下服务端的架构的演进过程同时列举出每个演进阶段会遇到的相关技术让大家对架构的演进有一个整体的认知方便大家对后续知识做深入学习时有一定的整体视野常见概念基本概念应用/系统为了完成一整套服务的一个程序或者一组相互配合的程序群。生活例子类比为了完成一项任务而搭建的由一个人或者一群相互配的人组成的团队我们叫做一个系统模块Module/ 组件Component当应用较复杂时为了分离职责将其中具有清晰职责的、内聚性强的部分抽象出概念便于管理或维护。生活例子类比军队中为了进行某据点的攻克将人员分为突击小组、爆破小组、掩护小组、通信小组等。分布式Distributed一个系统中的多个模块被部署于不同服务器之上即可以将该系统称为分布式系统。如 Web 服务器与数据库分别工作在不同的服务器上或者多台 Web 服务器被分别部署在不同服务器上。生活例子类比为了更好的满足现实需要一个在同一个办公场地的工作小组被分散到多个城市的不同工作场地中进行远程配合工作完成目标。跨主机之间的模块之间的通信基本要借助网络支撑完成。集群Cluster被部署于多台服务器上的、为了实现特定目标的一个特定的组件整个整体被称为集群。比如多个 MySQL 工作在不同服务器上共同提供数据库服务目标可以被称为一组数据库集群。生活例子类比为了解决军队攻克防守坚固的大城市的作战目标指挥部将大批炮兵部队集中起来形成一个炮兵打击集群。分布式 vs 集群。通常不用太严格区分两者的细微概念细究的话分布式强调的是物理形态即工作在不同服务器上并且通过网络通信配合完成任务而集群更在意逻辑形态即是否为了完成特定服务目标。主Master/ 从Slave集群中通常有一个程序需要承担更多的职责被称为主其他承担附属职责的被称为从。比如 MySQL 集群中只有其中一台服务器上数据库允许进行数据的写入增/删/改其他数据库的数据修改全部要从这台数据库同步而来则把那台数据库称为主库其他数据库称为从库。中间件Middleware一类提供不同应用程序用于相互通信的软件即处于不同技术、工具和数据库之间的桥梁。生活例子类比一家饭店开始时会每天去市场挑选买菜但随着饭店业务量变大成立一个采购部由采购部专职于采买业务称为厨房和菜市场之间的桥梁。容器DockerDocker 是一个开源的应用容器引擎让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中然后发布到任何流行的 Linux 或 Windows 操作系统的机器上也可以实现虚拟化。可以理解为一个集装箱集装箱里面是每个用户的货物整体打包。容器编排K8Skubernetes简称 K8s是用 8 代替名字中间的 8 个字符“ubernete”而成的缩写。是一个开源的用于管理云平台中多个主机上的容器化的应用Kubernetes 的目标是让部署容器化的应用简单并且高效。可以理解为一个货船安装集装箱的大小货物情况合理的来组织集装箱完成整体货物的搬运。评价指标可用性Availability考察单位时间段内系统可以正常提供服务的概率/期望。例如 年化系统可用性 系统正常提供服务时长 / 一年总时长。这里暗含着一个指标即如何评价系统提供无法是否正常我们就不深入了。平时我们常说的 4 个 9 即系统可以提供 99.99% 的可用性5 个 9 是 99.999% 的可用性以此类推。我们平时只是用高可用HighAvailability HA这个非量化目标简要表达我们系统的追求。响应时长Response Time RT指用户完成输入到系统给出用户反应的时长。例如点外卖业务的响应时长 拿到外卖的时刻 - 完成点单的时刻。通常我们需要衡量的是最长响应时长、平均响应时长和中位数响应时长。这个指标原则上是越小越好但很多情况下由于实现的限制需要根据实际情况具体判断吞吐Throughputvs 并发Concurrent吞吐考察单位时间段内系统可以成功处理的请求的数量。并发指系统同一时刻支持的请求最高量。例如一条 2 车道高速公路一分钟可以通过 20 辆车则并发是 2 一分钟的吞吐量是 20。实践中并发量往往无法直接获取很多时候都是用极短的时间段比如 1 秒的吞吐量做代替。我们平时用高并发Hight Concurrnet这个非量化目标简要表达系统的追求。架构演进单机架构初期我们需要利用我们精干的技术团队快速将业务系统投入市场进行检验并且可以迅速响应变化要求。但好在前期用户访问量很少没有对我们的性能、安全等提出很高的要求而且系统架构简单无需专业的运维团队所以选择单机架构是合适的技术案例用户通过访问DNS服务器获得我们服务器的ip地址然后由浏览器/APP去我们的服务器中获取响应的数据单机架构的优缺点优点部署简答成本较低缺点却在严重的瓶颈限制数据库和应用服务抢夺资源应用数据分离架构随着系统的上线我们不出意外地获得了成功。市场上出现了一批忠实于我们的用户使得系统的访问量逐步上升逐渐逼近了硬件资源的极限同时团队也在此期间积累了对业务流程的一批经验。面对当前的性能压力我们需要未雨绸缪去进行系统重构、架构挑战以提升系统的承载能力。但由于预算仍然很紧张我们选择了将应用和数据分离的做法可以最小代价的提升系统的承载能力和之前架构的主要区别在于将数据库服务独立部署在同一个数据中心的其他服务器上应用服务通过网络访问数据。技术案例用户通过访问DNS服务器获得我们服务器的ip地址然后由浏览器/APP去我们的应用服务器中获取响应当需要访问数据时则由应用服务器和存储服务器进行通信来进行数据交换应用数据分离架构优缺点优点成本相对可控相对于单机架构提高了性能降低了资源竞争数据库有单独隔离缺点硬件成本较高性能存在瓶颈应用服务集群架构我们的系统受到了用户的欢迎并且出现了爆款单台应用服务器已经无法满足需求了。我们的单机应用服务器首先遇到了瓶颈摆在我们技术团队面前的有两种方案大家针对方案的优劣展示了热烈的讨论垂直扩展 / 纵向扩展 Scale Up。通过购买性能更优、价格更高的应用服务器来应对更多的流量。这种方案的优势在于完全不需要对系统软件做任何的调整但劣势也很明显硬件性能和价格的增长关系是非线性的意味着选择性能 2 倍的硬件可能需要花费超过 4 倍的价格其次硬件性能提升是有明显上限的。水平扩展 / 横向扩展 Scale Out。通过调整软件架构增加应用层硬件将用户流量分担到不同的应用层服务器上来提升系统的承载能力。这种方案的优势在于成本相对较低并且提升的上限空间也很大。但劣势是带给系统更多的复杂性需要技术团队有更丰富的经验。经过团队的学习、调研和讨论最终选择了水平扩展的方案来解决该问题但这需要引入一个新的组件 ——负载均衡为了解决用户流量向哪台应用服务器分发的问题需要一个专门的系统组件做流量分发。实际中负载均衡不仅仅指的是工作在应用层的甚至可能是其他的网络层之中。同时流量调度算法也有很多种这里简单介绍几种较为常见的Round-Robin 轮询算法。即非常公平地将请求依次分给不同的应用服务器。Weight-Round-Robin 轮询算法。为不同的服务器比如性能不同赋予不同的权重weight能者多劳。一致哈希散列算法。通过计算用户的特征值比如 IP 地址得到哈希值根据哈希结果做分发优点是确保来自相同用户的请求总是被分给指定的服务器。也就是我们平时遇到的专项客户经理服务技术案例用户通过访问DNS服务器获得我们服务器的ip地址然后由浏览器/APP去我们的应用服务器中获取响应当需要访问数据时则由应用服务器和存储服务器进行通信来进行数据交换但是当我们的流量过大时我们一个应用可以能会扛不住如此巨大的流量所以我们让多个应用服务器来为我们服务但是我们如何安排这些服务器的工作就是一个难题我们引入Nginx来帮助我们实现负载均衡如何流量巨大还可以利用LVS等负载均衡器来帮我们进一步的分发任务应用服务集群架构优缺点优点应用服务高可用具备一定的高性能具有一定的横向扩展能力缺点数据库存在瓶颈硬件成本较高读写分离 / 主从分离架构上一节提到我们把用户的请求通过负载均衡分发到不同的应用服务器之后可以并行处理了并且可以随着业务的增长可以动态扩张服务器的数量来缓解压力。但是现在的架构里无论扩展多少台服务器这些请求最终都会从数据库读写数据到一定程度之后数据的压力称为系统承载能力的瓶颈点。我们可以像扩展应用服务器一样扩展数据库服务器么答案是否定的因为数据库服务有其特殊性如果将数据分散到各台服务器之后数据的一致性将无法得到保障。所谓数据的一致性此处是指针对同一个系统无论何时何地我们都应该看到一个始终维持统一的数据。想象一下银行管理的账户金额如果收到一笔转账之后一份数据库的数据修改了但另外的数据库没有修改则用户得到的存款金额将是错误的。我们采用的解决办法是这样的保留一个主要的数据库作为写入数据库其他的数据库作为从属数据库。从库的所有数据全部来自主库的数据经过同步后从库可以维护着与主库一致的数据。然后为了分担数据库的压力我们可以将写数据请求全部交给主库处理但读请求分散到各个从库中。由于大部分的系统中读写请求都是不成比例的例如 100 次读 1 次写所以只要将读请求由各个从库分担之后数据库的压力就没有那么大了。当然这个过程不是无代价的主库到从库的数据同步其实是由时间成本的。技术案例用户通过访问DNS服务器获得我们服务器的ip地址然后由浏览器/APP去我们的应用服务器中获取响应当需要访问数据时则由应用服务器和存储服务器进行通信来进行数据交换但是当我们的流量过大时我们一个应用可以能会扛不住如此巨大的流量所以我们让多个应用服务器来为我们服务但是我们如何安排这些服务器的工作就是一个难题我们引入Nginx来帮助我们实现负载均衡如何流量巨大还可以利用LVS等负载均衡器来帮我们进一步的分发任务当我们获得任务之后如果当前需要写入增、删、改数据那么我们需要区主数据库中进行但是如果只需要读数据的话我们只需去从数据库中读取大大减少了数据库的压力主从分离架构优缺点优点数据库读取性能提高数据库可用性提高间接提高了数据库写的性能缺点热点数据的频繁读写会加剧数据库负担服务器成本进一步加大引入缓存 —— 冷热分离架构随着访问量继续增加发现业务中一些数据的读取频率远大于其他数据的读取频率。我们把这部分数据称为热点数据与之相对应的是冷数据。针对热数据为了提升其读取的响应时间可以增加本地缓存并在外部增加分布式缓存缓存热门商品信息或热门商品的 html 页面等。通过缓存能把绝大多数请求在读写数据库前拦截掉大大降低数据库压力。其中涉及的技术包括使用memcached 作为本地缓存使用Redis 作为分布式缓存还会涉及缓存一致性、缓存穿透/击穿、缓存雪崩、热点数据集中失效等问题。技术案例该技术对于主从分离架构主要就是增加了Redis缓存将经常访问的数据加入缓存中当我们访问数据资源时可以去Redis缓存中去看看是否存在存在就不需要去数据库中查询了大大增加了服务速度冷热分离架构优缺点优点对于热点数据的访问速度大大提升缺点存在缓存击穿缓存失效等问题服务器成本增高垂直分库随着业务的数据量增大大量的数据存储在同一个库中已经显得有些力不从心了所以可以按照业务将数据分别存储。比如针对评论数据可按照商品 ID进行hash路由到对应的表中存储针对支付记性能。其中前面提到的 Mycat也支持在大表拆分为小表情况下的访问控制。这种做法显著的增加了数据库运维的难度对 DBA的要求较高。数据库设计到这种结构时已经可以称为分布式数据库但是这只是一个逻辑的数据库整体数据库里不同的组成部分是由不同的组件单独来实现的如分库分表的管理和请求分发由 Mycat实现SQL 的解析由单机的数据库实现读写分离可能由网关和消息队列来实现查询结果的汇总可能由数据库接口层来实现等等这种架构其实是 MPP大规模并行处理架构的一类实现技术案例当我们去访问数据库时我们会选择去哪一个数据库每一个数据库中都相当于有一个主从架构的服务器我们访问的数据可能在多个表中这样大大提高了并发微服务架构随着人员增加业务发展我们将业务分给不同的开发团队去维护每个团队独立实现自己的微服务然后互相之间对数据的直接访问进行隔离可以利用 Gateway、消息总线等技术实现相互之间的调用关联。甚至可以把一些类似用户管理等业务提成公共服务。微服务架构的本质也就是将我们的一个应用系统分模块分装成为了多个子系统这些子系统之间相互联系但是不会影响各方面的功能。容器化引入——容器编排架构随着业务增长然后发现系统的资源利用率不高很多资源用来应对短时高并发平时又闲置需要动态扩缩容还没有办法直接下线服务器而且开发、测试、生产每套环境都要隔离的环境运维的工作量变的非常大。容器化技术的出现给这些问题的解决带来了新的思路。目前最流行的容器化技术是Docker最流行的容器管理服务是Kubernetes(K8S)应用/服务可以打包为Docker镜像通过K8S来动态分发和部署镜像。Docker镜像可理解为一个能运行你的应用/服务的最小的操作系统里面放着应用/服务的运行代码运行环境根据实际的需要设置好。把整个“操作系统”打包为一个镜像后就可以分发到需要部署相关服务的机器上直接启动 Docker镜像就可以把服务起起来使服务的部署和运维变得简单。服务通常会有生产和研发 k8s集群一般不会公用而研发集群通过命名空间来完成应用隔离有的公司按照研发目的划分为研发和测试集群有的公司通过组织架构完成部门间的资源复用

相关新闻

400分钟短剧交付周期怎么估:AI译配全流程效率拆解短剧出海赶档期:为什么批量产能比单集处理速度更重要

400分钟短剧交付周期怎么估:AI译配全流程效率拆解短剧出海赶档期:为什么批量产能比单集处理速度更重要

AI短剧译配为什么不能只比低价:成本、质量和返工率一起算,看起来像一个价格或排期问题,实际是在问短剧出海团队能不能把内容生产做成可复制的流程。低价是预算表里最显眼的数字,但它不一定代表低成本。短剧译配的最终目标是可发布…

2026/7/23 22:47:43阅读更多 →
不想做千篇一律综合商城?水果生鲜电商毕设项目好上手、答辩有亮点!

不想做千篇一律综合商城?水果生鲜电商毕设项目好上手、答辩有亮点!

最近好多准备课设、毕设的学弟学妹都在发愁选题,通用百货商城、校园管理系统遍地都是,答辩很容易撞款,老师看多了没新意;网上随便下的源码大多缺数据库、没有完整论文,光是排查各种bug就要熬好几个通宵。我当初做实训踩…

2026/7/23 22:47:43阅读更多 →
每天60秒读懂世界|2026年7月23日:50℃极端高温、引力一号一箭9星与全球经贸新变化

每天60秒读懂世界|2026年7月23日:50℃极端高温、引力一号一箭9星与全球经贸新变化

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/7/23 22:45:43阅读更多 →
影刀RPA 自动化舆情监控:关键词预警与报告生成

影刀RPA 自动化舆情监控:关键词预警与报告生成

影刀RPA 自动化舆情监控:关键词预警与报告生成 作者:林焱 写在前面 品牌负面舆情一旦爆发,几个小时内可能蔓延全网。靠人工每天刷微博、知乎、新闻,根本来不及。影刀可以帮你搭一套724小时的舆情监控系统:定时采集多…

2026/7/24 0:12:08阅读更多 →
ArkUI Provider 和 Consumer 乱用怎么办:中式美食同类多层筛选页为什么别一路传参数

ArkUI Provider 和 Consumer 乱用怎么办:中式美食同类多层筛选页为什么别一路传参数

先把相关概念说清楚知识点在这个问题里怎么看自定义组件冻结功能用来写多页面栈、TabContent、LazyForEach 和 BuilderNode 混用时的刷新边界状态管理 V1 向 V2 迁移用来拆 State 到 Local、Param、Once、Event 的迁移判断Provider / Consumer用来解释跨层级双向同步&#xff0…

2026/7/24 0:12:08阅读更多 →
【K8S 运维实战】11-资源管理Requests与Limits

【K8S 运维实战】11-资源管理Requests与Limits

资源管理:Requests/Limits 与 QoS 分级 一句话定位:为什么设了 Limits 还是被 OOM QoS 三级怎么用 ResourceQuota 实战。 写在前面 “我明明设了 memory limit 4G,Pod 还是 OOMKilled 了,这是什么玄学?”——这是我遇到过最经典的资源管理困惑。还有一类:“节点资源没用满,…

2026/7/24 0:12:08阅读更多 →
《你别回头找我》为何能成为可传播的试听入口

《你别回头找我》为何能成为可传播的试听入口

《你别回头找我》写的是一种状态:《你别回头找我》把“你别”写成可听见的状态:拒绝有时是对自己的保护。听的人多半不是旁观,而是刚好走在同类路口,更适合的播放场是关掉通知、拒绝一次聚会、把话说断的路口。场景立住&#xff0…

2026/7/24 0:12:08阅读更多 →
业务分析岗位适合考哪些证书?懂业务也要懂工具和AI

业务分析岗位适合考哪些证书?懂业务也要懂工具和AI

业务分析岗位的核心价值是“把业务问题翻译成数据问题,再把数据结论翻译回业务决策”。以下五类证书,对应业务分析不同维度的能力需求。一、数据分析类认证——指标、报表和业务洞察业务分析的基础是“看懂数据”。CDA认证是国内参与人数最多的数据分析认…

2026/7/24 0:10:08阅读更多 →
OpenClaw+Kimi K2.5+Moltbook企业级AI工作流部署指南

OpenClaw+Kimi K2.5+Moltbook企业级AI工作流部署指南

1. OpenClawKimi K2.5Moltbook部署方案概述这个组合堪称当前最强大的AI工作流解决方案之一。OpenClaw作为自动化控制中枢,Kimi K2.5提供核心AI能力,Moltbook则负责交互界面呈现。三者的结合可以打造出一个智能程度极高的工作助手系统。我在实际部署过程中…

2026/7/24 0:10:08阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →