程序员学架构(一):一张图看懂 Java 后端架构:一个请求怎样从手机到数据库?

《程序员学架构:Java 后端与微服务》系列第 1 篇

本文定位:先建立一张 Java 后端系统的整体地图,不急着深入 Spring、Redis、MySQL 的底层原理。

我们每天都在写代码:

java 复制代码
Controller
Service
Mapper

也经常会接触:

text 复制代码
Spring Boot
MyBatis
Redis
MySQL
Nginx
Docker

但大家写代码的时候,有没有好奇过一个问题:

我们写的这些代码,放到整个系统里面到底处在什么位置?

比如用户打开手机 App 或小程序,点击一个按钮:

text 复制代码
查看空闲座位

前端发送了一个 HTTP 请求。

那么这个请求接下来去哪了?

text 复制代码
手机
  ↓
???
  ↓
Controller
  ↓
Service
  ↓
Mapper
  ↓
MySQL

它是怎么从用户的手机,通过互联网找到我们的服务器的?

为什么到了服务器以后,经常还要先经过 Nginx?

Spring Boot 又是怎么接收到这个请求的?

Controller、Service、Mapper 分别在整个链路的什么位置?

为什么有时候查 Redis,有时候查 MySQL?

数据库查询完成以后,数据又是怎样一层一层返回,最终重新变成用户手机屏幕上的内容?

如果把这些问题串起来,其实就是一条完整的:

系统请求链路。

这一篇我们暂时不深入某一个框架的底层原理。

先站得高一点,看清楚整个系统。

看看一个最普通的请求,是怎样完成下面这趟旅程的:

text 复制代码
用户点击手机
      ↓
发送 HTTP 请求
      ↓
经过互联网
      ↓
到达服务器 / Nginx
      ↓
进入 Spring Boot
      ↓
Controller
      ↓
Service
      ↓
Redis / MySQL
      ↓
查询并处理数据
      ↓
返回 JSON
      ↓
经过网络返回手机
      ↓
前端解析数据
      ↓
展示给用户

只要先把这条链路真正看懂,后面再学习 Spring、Redis、MySQL、Nginx、微服务、网关、负载均衡、消息队列,就不会只是一个个孤立的技术名词。

因为你会慢慢知道:

它们为什么会出现在系统里,又分别解决了整条请求链路上的什么问题。


一、从一个最普通的请求开始

假设用户在手机上打开你的系统,点击:

text 复制代码
查看某家门店今天还有哪些空闲座位

前端会发送一个 HTTP 请求,例如:

http 复制代码
GET /api/stores/1001/seats/available

很多时候我们写后端代码,是从 Controller 开始看的。

但实际上,对于用户来说,这个请求的旅程早在进入 Controller 之前就已经开始了。

它通常会经历:

text 复制代码
手机 / 浏览器
      ↓
发送 HTTP 请求
      ↓
互联网
      ↓
Nginx
      ↓
Spring Boot
      ↓
Controller
      ↓
Service
      ↓
Redis / MySQL
      ↓
处理结果
      ↓
Controller 返回 JSON
      ↓
Nginx
      ↓
互联网
      ↓
手机收到响应
      ↓
前端渲染页面

这就是我们接下来要一点点拆开的:

一个请求从手机出发,到数据库,再从数据库返回手机的完整链路。

相关推荐
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源
鶴哥只手遮天2 小时前
Spring AI 2.0.1 深度解析-第 13 章 MCP 客户端:传输、工具聚合与命名冲突
java·人工智能·开源