网络 服务 是 怎么 运作 的?

請了解Web服務的運作方式。解決前端、後端、數據庫的角色和疑問。

• bamchi • 5,645
目录

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. 1楼: 点击"将AirPods Pro加入购物车"按钮
  2. 2楼: "这个用户可以购买这个商品吗?库存够吗?"
  3. 3楼: "减少1个库存,添加到购物车表中!"
  4. 2楼: "检查是否有折扣券,计算总金额!"
  5. 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楼数据库: 存储所有信息的仓库

这三层相互交流,才能制作出我们使用的精彩应用和网站!

而你们正在阅读这本书...意味着你们正在为成为这个美妙世界的一部分做准备!

接下来的部分,我们将特别探讨为什么数据库如此重要,为什么它是必不可少的。准备好了吗?

评论

发表评论

您的邮箱不会公开,仅用于回复通知。

继续阅读

获取新文章通知

Bamchi Blog 发布新内容时,我们会通过邮件通知您。

您的邮箱仅用于新文章通知。