42 张图带你后端技术都要学啥?
作者 | L的存在
来源 | 我是程序员小贱(ID:Lanj1995Q)
在编程世界的江湖里,后端技术栈庞杂繁复,总有一堆听起来高大上的「关键词」,让初学者望而生畏。你是否也曾感到困惑:从学校项目到工业级系统,到底需要掌握哪些核心“内功”?今天,我们就用42张精华图解,为你拨开迷雾,一次性讲透后端架构的演进脉络与核心战术!

核心知识地图
分布式:从单兵作战到分布式军团的进化论
校内的练手项目,单台服务器即可搞定,性能“够用就行”。但一到面试,为何人人都把“秒杀系统”作为简历标配?第一个灵魂拷问来了:你为何必须采用分布式方案?
当几十个用户访问,系统响应飞快,你信心满满。可当面试官追问:“项目并发量多少?压测性能如何?”你是否瞬间语塞?
用户激增,系统资源(CPU、内存、带宽、磁盘)迅速耗尽,服务器崩溃,服务停摆。怎么办?
垂直伸缩(纵向升级)
提升单机战力。换上更强的CPU、更快的网卡、更大的硬盘,如同将摩托车升级为跑车。这在金融、电信领域常见,但烧钱且终有性能天花板,运维也愈发复杂。
水平伸缩(横向扩展)
一台不够,就上集群!用多台廉价服务器组成分布式军团,合力扛压。记住:所有技术架构,均由需求驱动。
回顾系统的成长史:最初的单体应用,服务少量用户。

单体架构
随着产品走红,用户量暴涨,单机不堪重负,用户体验下滑。必须升级!第一板斧:将数据库与应用程序分离部署。

数据库与应用分离
分离后性能提升,用户量呈指数级增长,服务器再次告急!引入缓存:将热点数据暂存于内存,避免每次都直连磁盘数据库。缓存分本地缓存与分布式缓存(集群化缓存服务)。
缓存的好处?应用不再频繁访问数据库,响应飞速。系统持续火爆,应用服务器也升级为集群。

应用集群化
缓存架构:后端系统的CPU加速器
缓存是软件界的王牌加速器,无处不在。从CPU到虚拟机,从程序Buffer到网络架构,都在用它。缓存主要分两类:通读缓存与旁路缓存。
通读缓存
应用请求数据,缓存若有则直接返回;若无则向数据源索取,同时存入缓存。典型代表:CDN与反向代理。

通读缓存原理
以CDN为例:你在成都网购,商品若在本地仓,半日即达,体验极佳。CDN就是将内容分发到离用户最近的节点,提速并节省带宽。
旁路缓存
应用需主动将数据从源读取后写入缓存。后续请求则直接由缓存响应。

旁路缓存原理
缓存的核心优势
数据存于内存,比硬盘或网络获取快得多,性能飙升;CDN等能显著降低源站负载;缓存命中直接返回结果,避免了重复的CPU密集计算。
缓存的挑战:数据一致性
源数据更新,缓存可能变“脏”。如何应对?
过期失效:写入时设有效期,读取时检查并刷新。
失效通知:更新源数据时,主动通知清理缓存。
所有数据都该缓存吗?
并非如此!只有热点数据(如当日爆款、热门新闻)缓存才有高价值,命中率才高。

缓存主要优化了“读”,而“写”的压力如何化解?数据通常需持久化到数据库,直接写入可能成为瓶颈。
假设系统A强依赖系统B,若B故障,A必受牵连。如何解耦并提升吞吐?答案是:消息队列(事件驱动)。
同步调用下,应用阻塞等待服务返回,CPU闲置,资源浪费。

同步调用的阻塞
例如发送邮件,远程服务队列若长,线程将长时间阻塞。这会占用系统资源,无法快速响应用户。现实中,如用户注册后的激活邮件,我们无需等待发送结果即可响应。如何实现?

消息队列异步模型
调用者发送消息至队列后立即返回,应用快速响应并释放资源。专门消费者程序从队列取消息处理。下游故障不影响上游。

消息队列角色
模型三要素:生产者、消息队列、消费者。消费模式有二:
点对点:多生产者对多消费者,一条消息仅被一个消费者处理。

点对点模式
发邮件即典型点对点,服务间互不干扰。
发布/订阅:生产者向主题发布消息,多个消费者订阅同一主题,各取所需,并行处理。

发布/订阅模式
如用户注册,信息发布到“用户”主题,短信服务、营销服务等不同消费者可同时获取并处理。

用户注册场景应用
异步模型的战略价值
快速响应:生产者无需等待耗时处理。削峰填谷:系统访问有高低峰。消息队列可暂存洪峰请求,让消费者按能力处理,高峰时减压,低谷时消化,提升资源利用率。降低耦合:服务间通过消息通信,代码依赖解除,独立部署升级更灵活。
主流消息队列(如Kafka, RabbitMQ, RocketMQ)如何选型?其优劣是高频率面试题。

单机难扛,集群来帮。如何将海量请求合理分摊?需要一位智能调度官——负载均衡。分发策略是关键。
从硬到软的演进之路早期靠硬件设备(如F5),昂贵。后出现软件负载均衡服务器。
HTTP重定向负载均衡
负载均衡服务器计算得到真实服务器地址,通过HTTP 302响应告知浏览器重定向。

HTTP重定向
优点:实现简单。缺点:增加请求耗时(两次握手);暴露后端IP,有安全风险。
DNS负载均衡
利用域名解析。用户请求时,DNS返回不同IP地址,导向不同服务器。

DNS负载均衡
结合本地缓存,减少解析压力。工程中常配合使用:DNS解析到负载均衡集群,再由其转发给应用服务器,隐藏后端IP。
反向代理负载均衡
典型如Nginx。请求直达反向代理,它作为流量入口,进行缓存和分发。

反向代理负载均衡
IP负载均衡
在网络层操作。负载均衡服务器修改数据包目标IP地址,转发给应用服务器。

IP负载均衡
内核级别,性能高,但大流量时可能成为瓶颈。
数据链路层负载均衡
解决带宽瓶颈。不改IP,只改MAC地址。应用服务器与负载均衡器共用虚拟IP。

数据链路层负载均衡
负载均衡算法是核心,常见有:轮询、随机、最少连接、加权等,需根据场景选择。

数据是公司的核心资产。如何保障其高可用与海量存储?
主从复制
使用主备数据库。主库更新写入Binlog,从库读取Binlog并重放(Relay Log),实现数据同步。

MySQL主从复制
实现读写分离,提升读性能。一主多从可做高可用。但主库故障怎么办?可考虑主主复制。但这不解决存储容量问题,需分库分表。
数据库分片
将一张大表水平切分,存储在不同服务器。
硬编码分片:直接在代码中指定规则,如按ID奇偶分存。缺点:增减服务器需改代码。

硬编码分片
哈希取模分片:根据主键ID与服务器数量取模,确定存储位置。更常用,但扩容时数据迁移仍是挑战。

如何在海量网页中瞬间找到答案?背后是强大的搜索引擎技术。
网络爬虫遍历互联网,抓取并存储网页。

爬虫工作原理
对网页内容分词,构建倒排索引:记录每个词出现在哪些文档中。

分词与矩阵

倒排索引结构
搜索时,直接定位到单词对应的文档列表。
结果众多,如何排序?经典算法PageRank:通过网页间的链接关系计算权重,链接即投票。权重高的结果更靠前。

PageRank算法示意
还有其他排序因子,如词频(TF),衡量搜索词与文档的相关性。

词频(TF)计算
微服务:拆解巨石系统,构建灵活舰队
单体架构痛点:代码合并地狱、新增功能困难、数据库连接耗尽。微服务应运而生:将巨型应用拆分为独立部署、协同作战的小型服务舰队。
核心是服务注册与发现。服务提供者向注册中心报到,消费者从注册中心查找并调用。

注册中心模式
以Dubbo为例,客户端通过代理获取服务列表,经负载均衡选择后,进行远程调用。微服务需关注:服务治理、监控、链路追踪、配置中心等。

微服务技术栈
切记:技术为业务服务,切勿为了“微服务”而微服务!

高可用目标:一台机器宕机,用户无感知。标准常以“几个9”衡量,如99.99%(四个9),意味着年停机时间不超过52分钟。
故障原因千奇百怪:硬件损坏、数据库崩溃、BUG、甚至光缆被挖断。如何构建防线?
冗余备份:关键服务均有备份,支持快速切换。
负载均衡:配合健康检查,自动剔除故障节点,将流量导向健康实例。

负载均衡与故障转移
限流降级:流量洪峰时,果断丢弃部分非核心请求,保全主干业务。暂时关闭非关键功能(如商品评价),确保下单流程畅通。
异地多活:在多地部署数据中心,通过智能DNS解析将用户导流至最近可用机房,抵御地域性灾难。

安全是底线。从数据泄露到服务攻击,防护必须前置。
数据加解密三大手段:
单向散列加密:如MD5,不可逆。但可通过彩虹表破解。对策:加盐(Salt)。常用于密码存储。

单向散列加密(加盐)

密码存储与验证流程
对称加密:加解密使用同一密钥,速度快。用于加密存储敏感信息(如银行卡号)。

对称加密
非对称加密:公钥加密,私钥解密。HTTPS即其典型应用,用于安全交换对称加密的密钥。

非对称加密
Web攻击与防护
SQL注入:攻击者提交恶意SQL片段。防护:使用PreparedStatement预编译,杜绝SQL拼接。

SQL注入攻击示意
XSS攻击:跨站脚本攻击,注入恶意脚本在用户浏览器执行。防护:对用户输入进行严格过滤和转义,或部署Web应用防火墙(WAF)。

安全防御体系
大数据:海量数据的挖掘与计算引擎
大数据技术聚焦于海量数据存储与批量计算,旨在从数据中挖掘价值。
分布式文件系统HDFS:由NameNode(管理元数据)和多个DataNode(存储数据块)组成。
MapReduce经典计算框架:分Map(映射)和Reduce(归约)两阶段。以词频统计为例:

MapReduce词频计算过程
集群中由JobTracker调度,多个TaskTracker执行任务。

MapReduce任务执行流程
Hive:让大数据分析用上SQLHive将SQL语句自动翻译成MapReduce任务,降低使用门槛。

Hive SQL示例

逻辑执行计划

转化为MapReduce任务
Spark与Flink:新一代计算引擎Spark:基于内存计算,迭代效率远超MapReduce。提供更丰富的算子(不限于Map/Reduce),并集成MLlib等库。
Flink:真正的流处理引擎,以事件驱动和低延迟著称,在大数据领域迅速崛起。
附一张去年技术会议的纪念品。

技术会议纪念马克杯
写在最后:你的后端修炼图谱从C/C++转向后端开发的我,最初同样感到迷茫。后端技术浩瀚如海,希望这42张图解和梳理,能为你绘制一张清晰的“修炼地图”。技术之路,知方向而后求精深。利用好搜索引擎,结合实践,每一步都算数!
互动时刻:以上八大核心模块,哪个是你当前最想攻克的难关?或者你对哪个技术点有独特的见解?欢迎在评论区留言交流!如果这份“图谱”对你有帮助,也请分享给更多正在后端路上探索的伙伴。我们下期再见!



点分享


相关问答
web后端需要学什么?
Web后端是一个系统工程,需掌握服务端语言(如Java/Go)、数据库、缓存、消息队列、分布式架构、API设计、安全防护及性能优化等一整套技术栈。
web后端如何使用数据库?
Web后端通过ORM框架或直接驱动连接数据库,执行CRUD操作。需根据业务复杂度决定,简单场景可用文件存储,复杂业务则需关系型或NoSQL数据库,并考虑分库分表、主从复制等方案。
以后想学大数据做web前端还是后端?
大数据与后端技术联系更紧密。后端开发涉及数据存储、处理管道搭建,是进入大数据领域的天然路径。当然,前端也可通过可视化等方向切入。
web前端开发、后端开发、java程序员和移动端开发有什么区别和要求?
前端聚焦界面与交互(HTML/CSS/JS);后端专注业务逻辑、数据与系统架构;Java程序员是后端的一种具体技术实现;移动端则专攻手机App。技术要求各有侧重,但全栈趋势下界限正变得模糊。
没有IT背景的人,怎么系统的学习web后端开发?
建议选择一门主流语言(如Java或Python)入门,从基础语法、数据库操作学起,然后逐步深入Web框架、系统设计原理。多动手做项目,并善用在线课程与开源社区资源。
Django开发后端,真的比SpringBoot要省事吗?
Django开箱即用,适合快速构建原型。SpringBoot生态更庞大、企业应用更广泛,在复杂系统、微服务架构中更具优势。省事与否取决于项目规模、团队技能栈和长期维护需求。
C++后端开发所需全部技术有哪些?
C++后端技术栈涵盖语言特性、操作系统原理、网络编程、高性能服务设计、分布式系统概念及协程/内存管理等。关键在于深刻理解计算机系统,并能在特定领域(如游戏、高频交易)发挥其性能优势。
web后端开发语言排行?
主流后端语言包括Java(企业级稳定)、Python(开发效率高)、Go(高并发友好)、C(.NET生态)、Node.js(全栈统一)等。排行随领域变化,选择应贴合业务场景与团队能力。
web后端开发是青春饭吗?
绝非如此。后端开发深度与经验成正比,资深架构师越发珍贵。关键在于持续学习,从编码者成长为系统设计者与技术决策者,职业生涯可长远发展。
python写web后端怎么样?
Python(配合Django/Flask等框架)非常适合快速开发、原型验证及数据密集型应用。其开发效率高,生态丰富,但在超高并发、计算密集型场景下,性能可能不及Go或Java。




