1.1 网络服务是如何运作的呢?
你好!大家每天都会用手机发KakaoTalk,看YouTube,还在Coupang购物吧?但是你们有没有好奇这些应用是如何运作的呢?
今天我们将揭开我们每天都在使用的网络服务的秘密!
网络服务就像是一栋三层楼
我来比喻一下网络服务就像是一栋三层楼。每层楼都住着不同工作的人。
┌─────────────────────────────────────┐
│ 3楼: 数据库 (Database) │
│ 存储所有信息的仓库 │
│ - 会员信息,商品信息,订单记录 │
├─────────────────────────────────────┤
│ 2楼: 后端 (Backend) │
│ 看不见的工人们 │
│ - 计算,处理,业务逻辑 │
├─────────────────────────────────────┤
│ 1楼: 前端 (Frontend) │
│ 我们看到的漂亮界面 │
│ - 按钮,图片,用户界面 │
└─────────────────────────────────────┘
1楼: 前端 - 我们看到的漂亮界面
1楼是前端(Frontend)。这里是我们可以直接看到和触摸的地方。
- 智能手机应用界面: 按钮,图片,文字等
- 网站界面: Naver首页,YouTube视频界面
- 设计: 漂亮的颜色,字体,动画
如果用房子来比喻的话,就像是前门和客厅。这是客人(用户)最先看到的地方!
2楼: 后端 - 看不见的工人们
2楼是后端(Backend)。这里是真正发生事情的地方,但我们的眼睛看不到。
- 计算和处理: 登录确认,商品搜索,支付处理
- 业务逻辑: "这个用户可以购买这个商品吗?","需要应用折扣吗?"
- 交通整理: 按顺序处理众多用户的请求
如果用房子来比喻的话,就像是厨房。这里做着美味的菜肴(数据处理),但客人不能直接进来!
3楼: 数据库 - 存储一切的仓库
3楼是数据库(Database)。这里所有信息都整齐地存储着。
- 会员信息: 姓名,电子邮件,密码,地址
- 商品信息: 价格,库存,描述,图片
- 记录: 订单记录,支付信息,发货状态
如果用房子来比喻的话,就像是仓库和书房。所有重要的物品和记录都被系统地保存着!
实际例子: 在Coupang上订购"无线耳机"
现在让我们跟随你们在Coupang上订购无线耳机的过程,看看每层楼发生了什么!
数据的旅程: "无线耳机"搜索过程
用户 网络服务 3层楼
┌─────────────────────────┐
"无线耳机" │ 3楼: 数据库 │
搜索! ──────┐ │ SELECT * FROM 商品 │
│ │ WHERE 商品名 LIKE │
↓ │ │ '%无线耳机%'... │
│ ├─────────────────────────┤
显示在屏幕上 │ │ 2楼: 后端 │
结果 ←─────┘ │ • 搜索处理 │
│ • 排序 & 过滤 │
│ • 折扣计算 │
├─────────────────────────┤
│ 1楼: 前端 │
│ • 搜索框 │
│ • 加载界面 │
│ • 结果界面 │
└─────────────────────────┘
1阶段: 在搜索框中输入"无线耳机"!
前端(1楼)中:
- 你们点击搜索框
- 输入"无线耳机"
- 点击搜索按钮
- 屏幕显示"稍等,正在查找搜索结果..."的加载界面
2阶段: 后端努力工作!
后端(2楼)中:
后端: "哦,有人在找无线耳机!"
后端: "数据库啊,能找到无线耳机商品吗?"
后端: "哦,还要为这个用户挑选合适的商品!"
后端: "按照价格从低到高排序!"
3阶段: 数据库回答了!
数据库(3楼)中:
```sql
数据库: "稍等,我来找找..."
SELECT 商品名, 价格, 图片, 评分, 库存数量
FROM 商品列表
WHERE 商品名 LIKE '%无线耳机%'
AND 库存数量 > 0
ORDER BY 价格 ASC;
数据库: "找到了!总共有347个商品!"
```
4阶段: 后端精心包装结果!
后端(2楼)中:
后端: "347个太多了。只挑选热门的20个商品"
后端: "计算折扣信息,确认运费..."
后端: "根据用户位置计算预计送达日期!"
后端: "好了,现在发送到1楼!"
5阶段: 在漂亮界面展示!
前端(1楼)中:
- 商品列表漂亮地排序显示
- 每个商品的照片,价格,评分显示
- 有"火箭发货","免费送货"等标签
- 滚动页面会显示更多商品
6阶段: 点击商品加入购物车!
这个过程也是按照1楼→2楼→3楼→2楼→1楼的顺序进行的!
用户 网络服务处理过程
┌─────────────────────┐
"加入购物车" │ 3楼: 数据库 │
点击! ──────1──→ │ UPDATE 库存 SET │
│ 数量 = 数量 - 1 │
↓ │ INSERT INTO 购物车 │
├─────────────────────┤
"已添加!" ←──5── │ 2楼: 后端 │
显示消息 │ • 库存确认 ←──3─┘│
│ • 权限确认 ──4──→│
│ • 优惠券计算 │
├─────────────────────┤
│ 1楼: 前端 │
│ • 按钮点击检测 ──2─┘│
│ • 成功消息显示 │
└─────────────────────┘
- 1楼: 点击"将AirPods Pro加入购物车"按钮
- 2楼: "这个用户可以购买这个商品吗?库存够吗?"
- 3楼: "减少1个库存,添加到购物车表中!"
- 2楼: "检查是否有折扣券,计算总金额!"
- 1楼: "已添加到购物车!"
为什么要这样复杂地划分呢?
你可能会想:"为什么不只做一个程序呢?" 但是这样划分是有原因的!
1. 分工提高效率!
- 设计师: 在1楼(前端)制作漂亮的界面
- 后端开发人员: 在2楼实现业务逻辑
- 数据库专家: 在3楼设计数据结构
每个人专注于自己的领域,结果更好!
2. 出现问题也能快速解决!
如果界面变慢了?
- 是1楼(前端)的问题吗?
- 是2楼(后端)的问题吗?
- 是3楼(数据库)的问题吗?
可以轻松找到并修复!
3. 易于扩展!
如果用户增加了?
- 增加更多2楼(后端)服务器
- 将3楼(数据库)更换为更快的数据库
- 保持1楼(前端)不变!
只需升级需要的部分。
4. 安全性更强!
- 重要信息(密码,支付信息)只保存在2楼和3楼
- 1楼只显示必要信息
- 即使遭受黑客攻击,也能最小化损失
后端开发人员做什么?
那么后端开发人员具体做些什么呢?
1. 创建API
制定与前端交流的规则。
"获取用户信息" → GET /user/123
"帮我搜索商品" → GET /products?search=无线耳机
"下订单" → POST /orders
2. 实现业务逻辑
if (用户是VIP客户) {
折扣率 = 20%;
} else if (首次购买客户) {
折扣率 = 10%;
} else {
折扣率 = 0%;
}
3. 与数据库交互
-- 创建订单
INSERT INTO 订单 (客户ID, 商品ID, 数量, 总金额)
VALUES (123, 456, 1, 89000);
-- 减少库存
UPDATE 商品 SET 库存数量 = 库存数量 - 1 WHERE 商品ID = 456;
4. 优化性能
- 找到慢的部分并加快速度
- 使得能够承受多用户同时访问
- 节省服务器成本
5. 管理安全性
- 仅允许登录用户访问
- 防止黑客攻击
- 对个人信息进行加密
总结一下...
网络服务就像是一栋三层楼:
- 1楼前端: 我们看到的漂亮界面
- 2楼后端: 实际发生事情的地方 (我们看不到)
- 3楼数据库: 存储所有信息的仓库
这三层相互交流,才能制作出我们使用的精彩应用和网站!
而你们正在阅读这本书...意味着你们正在为成为这个美妙世界的一部分做准备!
接下来的部分,我们将特别探讨为什么数据库如此重要,为什么它是必不可少的。准备好了吗?