后端体系入门
参考:
- 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?
- 快速重定向请求无需后端处理(404页面等)
- 静态资源返回更快
- 某些语言没有内置生产级web服务器,需要专用web进程
1.2 Apache、Nginx、Tomcat和Node.js四者的区别是什么?
| 工具 | 本质身份 | 擅长干什么 | 对应的“语言” |
|---|
| Nginx | 高效代理/分发器 | 静态资源、负载均衡、反向代理 | 不限(通过转发) |
| Apache | 模块化 Web 服务器 | 稳定、兼容性好、直接处理 PHP | 主要 PHP (通过模块) |
| Tomcat | Java 应用容器 | 运行 Java Web 程序 (.war/.jar) | 只能 Java |
| Node.js | JS 运行环境 | 高并发 IO、实时应用 (Socket) | 只能 JS |
1.3 web服务器载体
- 物理服务器
- 虚拟专用服务器-
VPS操作系统级
- 大的操作系统化单间
- 采用
容器虚拟化,大家共用一个内核,邻居流量过大会通过内核影响到你
- 托管虚拟机实例-
VM硬件级
- 大机器通过硬件仿真,模拟几台独立电脑
- 采用
硬件级别虚拟化,每个虚拟机有自己的独立内核,隔离性很好
- PaaS平台即服务
1.4 docker 虚拟机与物理机
- docker
- 所有容器跑在宿主机内核,利用Linux 的
Namespace(空间隔离)和 Cgroups(资源限制)技术,给进程画了个圈。
- 虚拟机
- 物理机
2.负载均衡器:load balancer
高可用网络基础架构的一个组成部分。
有了负载均衡,我们可以把我们的应用服务器部署多台,通过负载均衡将用户的请求分发到不同不同服务器,提高服务性能可靠性。
- 分成两类:
- 第四层(传输层):
- 硬件负载均衡
- 根据网络与传输层协议(IP,TCP,FTP,UDP)对数据进行操作
- 不认识http协议,对标其他 tcp 应用,例如:基于C/S开发的ERP系统
- 如F5负载均衡器
- 第七层(应用层):
- 软件负载均衡
- 根据应用层协议(http)中数据分发请求
- 只认识http协议,对标众多网站等,例如:基于B/S开发的系统
- 如Ngnix,LVS,HAproxy
两种都会收到请求,并根据配置的算法将这些请求分发到特定的服务器。
- 一些分发算法:
- web应用程序使用负载均衡器好处:
- 降低单个服务器压力,帮助维持一致相应时间,平均到每个请求会慢一点。
- 高可用性。如服务器崩溃一个,后端请求会被路由到建康的服务器,用户无感知。
3. 域名解析系统 DNS
用户在地址栏输入url,浏览器获得url的域部分,并调用DNS。dns解析发回对应ip地址。
- 如果web应用使用负载均衡器,则应域名配置为指向负载均衡器
大多域名注册服务都提供dns管理控制台。
4. HTTPS/SSL 证书
https提供服务确保安全。
-
安装证书
一般都需要在后端安装ssl证书,任何服务器(负载均衡器,cdn服务器,应用程序服务器)都需要安装。
- 你可以使用
LetsEncrypt免费生成证书。
- 如果你使用的是云基础架构,则可以使用托管服务,例如
AWS Certificate Manager。这允许你创建并自动续订SSL证书并将其分发到应用程序服务器,负载平衡器和CDN服务器。
- 只有中大型的
HTTPS证书授权中心才会被浏览器承认,否则会显示为不安全,需要手动信任。
- 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 数据库部署
- 一般在多台服务器部署(可以单台),降低风险
- 少数云托管“无服务器数据库”,可以用api调用数据库。不需要设置服务器,由云供应商提供服务。示例包括
DynamoDB(NoSQL),Firebase实时数据库(NoSQL)和Aurora无服务器(关系)。
5.3 数据库基础方案
基础方案分三种
- 一主一备的架构(主备式)
- 一主一从的架构(主从式)
- 互为主从的架构(主主式)
6. Blob 文件存储
7. 内容分发网络 CDN
8. 缓存服务:caching service
9. 消息队列:Message queue