编辑
2026-03-24
全栈之路
00

目录

后端体系入门
1. 应用服务器 & web服务器
1. 1 为什么会有 webserver?
1.2 Apache、Nginx、Tomcat和Node.js四者的区别是什么?
1.3 web服务器载体
1.4 docker 虚拟机与物理机
2.负载均衡器:load balancer
3. 域名解析系统 DNS
4. HTTPS/SSL 证书
5. 数据库 Database
5.1 数据库种类
5.2 数据库部署
5.3 数据库基础方案
6. Blob 文件存储
7. 内容分发网络 CDN
8. 缓存服务:caching service
9. 消息队列:Message queue

后端体系入门

参考:

  1. https://github.com/roger-hiro/BlogFN/blob/master/%E3%80%8C%E7%9C%9F%C2%AE%E5%85%A8%E6%A0%88%E4%B9%8B%E8%B7%AF%E3%80%8DWeb%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E7%9A%84%E5%90%8E%E7%AB%AF%E6%8C%87%E5%8D%97.md

1. 应用服务器 & web服务器

  • web server
    • 处理HTTP协议,接受请求后从磁盘找到一个静态文件丢给浏览器 | 转发给application server
    • keyword:反向代理、负载均衡、缓存
    • 内容:静态资源 (HTML/JS/Image)
    • 资源消耗:较低(主要消耗 IO 和带宽)
    • 示例:nginx,Apache HTTP Server
  • application server(狭义后端)
    • 托管业务代码,处理业务逻辑
    • keyword:分布式事务、连接池、业务算法
    • 内容:动态数据 (JSON/XML/生成的页面)
    • 资源消耗:较高(主要消耗 CPU 和内存)
    • 示例:tomcat(java),nodejs

1. 1 为什么会有 webserver?

  1. 快速重定向请求无需后端处理(404页面等)
  2. 静态资源返回更快
  3. 某些语言没有内置生产级web服务器,需要专用web进程

1.2 ApacheNginxTomcatNode.js四者的区别是什么?

工具本质身份擅长干什么对应的“语言”
Nginx高效代理/分发器静态资源、负载均衡、反向代理不限(通过转发)
Apache模块化 Web 服务器稳定、兼容性好、直接处理 PHP主要 PHP (通过模块)
TomcatJava 应用容器运行 Java Web 程序 (.war/.jar)只能 Java
Node.jsJS 运行环境高并发 IO、实时应用 (Socket)只能 JS

1.3 web服务器载体

  • 物理服务器
    • 自己的电脑
  • 虚拟专用服务器-VPS操作系统级
    • 大的操作系统化单间
    • 采用容器虚拟化,大家共用一个内核,邻居流量过大会通过内核影响到你
  • 托管虚拟机实例-VM硬件级
    • 大机器通过硬件仿真,模拟几台独立电脑
    • 采用硬件级别虚拟化,每个虚拟机有自己的独立内核,隔离性很好
  • PaaS平台即服务
    • 不用管装修,直接放代码就可以跑

1.4 docker 虚拟机与物理机

  • docker
    • 所有容器跑在宿主机内核,利用Linux 的 Namespace(空间隔离)和 Cgroups(资源限制)技术,给进程画了个圈。
  • 虚拟机
    • 硬件模拟,跑一个完整操作系统
  • 物理机
    • 自己的机子本体

2.负载均衡器:load balancer

高可用网络基础架构的一个组成部分。

有了负载均衡,我们可以把我们的应用服务器部署多台,通过负载均衡将用户的请求分发到不同不同服务器,提高服务性能可靠性。

  1. 分成两类:
  • 第四层(传输层)
    • 硬件负载均衡
    • 根据网络与传输层协议(IP,TCP,FTP,UDP)对数据进行操作
    • 不认识http协议,对标其他 tcp 应用,例如:基于C/S开发的ERP系统
    • 如F5负载均衡器
  • 第七层(应用层)
    • 软件负载均衡
    • 根据应用层协议(http)中数据分发请求
    • 只认识http协议,对标众多网站等,例如:基于B/S开发的系统
    • 如Ngnix,LVS,HAproxy

两种都会收到请求,并根据配置的算法将这些请求分发到特定的服务器。

  1. 一些分发算法:
  • 轮询调度,Round robin,RR

  • 加权轮询,Weighted round robin,WRB

  • 最少连接数,Least connections

  • 最短的响应时间,Least response time

  1. web应用程序使用负载均衡器好处:
  • 降低单个服务器压力,帮助维持一致相应时间,平均到每个请求会慢一点。
  • 高可用性。如服务器崩溃一个,后端请求会被路由到建康的服务器,用户无感知。

3. 域名解析系统 DNS

用户在地址栏输入url,浏览器获得url域部分,并调用DNS。dns解析发回对应ip地址。

  • 如果web应用使用负载均衡器,则应域名配置为指向负载均衡器

大多域名注册服务都提供dns管理控制台。

4. HTTPS/SSL 证书

https提供服务确保安全。

  1. 安装证书

    一般都需要在后端安装ssl证书,任何服务器(负载均衡器,cdn服务器,应用程序服务器)都需要安装。

  • 你可以使用LetsEncrypt免费生成证书。
  • 如果你使用的是云基础架构,则可以使用托管服务,例如AWS Certificate Manager。这允许你创建并自动续订SSL证书并将其分发到应用程序服务器,负载平衡器和CDN服务器。
  • 只有中大型的HTTPS证书授权中心才会被浏览器承认,否则会显示为不安全,需要手动信任。
  1. ssl证书类型
  • 域名型SSL证书,简称DV SSL
  • 企业型SSL证书,简称OV SSL
  • 增强型SSL证书,简称EV SSL。
  • 它们之间都有一定的区别,认证级别也都不同,各自适合不同规模类型的网站安装。

5. 数据库 Database

数据库工作是将数据可靠地永久保存到存储器里,允许查询检索数据,可围绕存储地数据结构强制执行一些规则约束

5.1 数据库种类

早期流行3种:层次式数据库,网络式数据库,关系型数据库

如今主要是2种,关系型SQL数据库 | 非关系型NoSQL数据库

  • 关系数据库(例如MySql,Postgres,SQLServer,Oracle,SQLite)已经存在了40多年,并且一直是大多数Web应用程序的支柱。
  • 而在过去十年左右的时间里,NoSQL数据库(例如MongoDB,Cassandra,CouchDB,DynamoDB)在Web应用程序中变得越来越普遍,主要是因为它们具有可扩展性优势数据结构灵活性

5.2 数据库部署

  1. 一般在多台服务器部署(可以单台),降低风险
  2. 少数云托管“无服务器数据库”,可以用api调用数据库。不需要设置服务器,由云供应商提供服务。示例包括DynamoDB(NoSQL)Firebase实时数据库(NoSQL)和Aurora无服务器(关系)。

5.3 数据库基础方案

基础方案分三种

  • 一主一备的架构(主备式)
  • 一主一从的架构(主从式)
  • 互为主从的架构(主主式)

6. Blob 文件存储

7. 内容分发网络 CDN

8. 缓存服务:caching service

9. 消息队列:Message queue