前端Web 容器
Web 容器(如 Nginx,Apache)可直接提供 HTML、CSS、JavaScript 等静态文件服务
Nginx 在windows上的安装和使用
下载 ZIP 压缩包后解压至无中文路径的目录 下载地址http://nginx.org/download/nginx-1.26.3.zip)
启动服务
- 以管理员身份打开 CMD,切换到 Nginx 目录:
cd C:\nginx
- 启动命令:
或直接运行start nginx
nginx.exe
(会闪退但后台进程已启动)可以在任务管理器看到启动的进程
-
服务管理命令
命令 作用 适用场景 nginx -s start
启动服务 首次启动 nginx -s reload
重载配置(不中断服务) 修改配置后应用 nginx -s quit
优雅退出 正常关闭 nginx -s stop
强制终止 紧急关闭 nginx -t
检查配置文件语法 修改配置前验证 tail -f logs/access.log # 实时查看访问日志 Nginx 核心配置文件为conf目录下的
nginx.conf
配置简单介绍
#工作进程数,建议设为 CPU 核心数
worker_processes 1;
# 事件块
events {
#单进程最大并发连接数(默认 1024)
worker_connections 1024;
}
# HTTP 块
http {
# HTTP 全局配置
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 虚拟主机配置
server {
listen 80; # 监听端口
server_name localhost; # 域名列表
# 路径匹配规则
location / {
# root 是网站目录(我们写的前端代码放到nginx的html目录下,启动nginx。我们就可以访问。)
root html;
index index.html index.htm; # 默认索引文件
}
}
}
后端介绍
前端只是页面的展示和交互。需要后端控制业务逻辑的完整性、数据安全性及系统协同性。
场景示例:用户A只能查看本部门数据,用户B可查看全公司数据
场景示例:订单金额超过 1 万元需二次审批
场景示例:电商库存扣减防止超卖
后端为前端构建了安全、稳定、可扩展的数据交互环境。
实际开发中,分为有 Web 容器的语言(php,java)和无 Web 容器的语言(Node.js、Go)
学习上,无 Web 容器的语言 相对会更好一点。
核心定义
类别 | 定义 | 典型语言/框架 |
---|---|---|
有 Web 容器的语言 | 依赖外部 Web 容器(如 Tomcat、Jetty)运行,需通过 Servlet/CGI 等协议处理请求 | Java(Servlet)、PHP(需搭配 Apache/Nginx) |
无 Web 容器的语言 | 内置 HTTP 服务器或直接与操作系统交互,无需传统容器即可处理请求 | Node.js、Go(net/http) |
运行机制
维度 | 有 Web 容器 | 无 Web 容器 |
---|---|---|
请求处理 | 通过容器管理 Servlet/Filter 生命周期,请求由容器分发到具体业务逻辑 | 自行实现 HTTP 服务器(如 Node.js 的 http 模块,go的标准库 net/http) 直接处理请求与响应 |
协议支持 | 严格遵循 Servlet/HTTP 协议,需容器解析请求头、会话等 | 灵活支持 HTTP/WebSocket 等协议,可自定义通信逻辑 |
性能表现
场景 | 有 Web 容器 | 无 Web 容器 |
---|---|---|
高并发 | 容器优化线程复用(如 Tomcat 的 NIO 连接器),适合长连接与稳定负载 | 轻量级框架,通过异步处理提升吞吐量,但需手动优化 |
内存占用 | 容器本身占用资源较多(如 JVM 堆内存),适合长期运行服务 | 无容器开销,适合微服务 |
go 和nodejs对比
网站输出性能对比
- 并发处理能力
- Go:基于 goroutine 的轻量级协程机制,支持多核并行计算,单进程即可处理数万并发连接。例如,在 16核服务器 测试中,Go的请求吞吐量可达 30,000+ QPS,且CPU资源利用率更高。
- Node.js :依赖单线程 事件循环模型,通过非阻塞I/O实现高并发,但计算密集型任务易阻塞主线程。例如,处理 10,000并发连接 时,Node.js 的吞吐量约为 15,000 QPS,且CPU负载集中在单核。
- 延迟与稳定性
- Go:协程调度由语言运行时控制,延迟更稳定。测试显示,Go在 1000并发 下平均延迟为 50ms,波动范围小。
- Node.js :事件循环易因长任务或回调嵌套导致延迟波动。例如,在 高负载数据库操作 中,Node.js 的延迟可能骤增至 200ms+。
- 适用场景
- Go:适合 高吞吐、低延迟 场景,如微服务、实时交易系统(如电商订单处理)。
- Node.js :擅长 I/O密集型任务,如实时聊天、API网关,但对CPU密集型运算(如数据加密)性能较差。
数据库操作对比
- 连接与查询效率
- Go:通过 协程池 管理数据库连接,减少资源竞争。
- Node.js :依赖 回调或Promise 处理异步查询,易因回调地狱降低可维护性。
- 事务与锁机制
- Go:支持 原子性事务 和 分布式锁(如Redis锁),适用于金融等高一致性场景。
- Node.js :事务处理需依赖 手动控制,且在高并发下易出现连接泄漏。
后端编程语言市场份额
根据2025年最新行业数据及权威榜单(TIOBE指数),网站后端编程语言市场份额排名如下(数据截至2025年3月):
Java的韧性
- 市场份额:10.36%(企业级市场占比超40%)
- 技术壁垒:Spring Cloud Alibaba在云原生领域市占率75%,金融核心系统依赖度90%
Node.js的全栈开发
- 市场份额:3.46%(实时应用、全栈开发)
- 生态优势:全栈开发主流选择,Node.js 在实时服务和小型应用中表现突出
Go的云原生爆发
- 市场份额:2.78%(云原生领域占比超90%)
- 生态优势:Kubernetes/Docker生态工具链100%基于Go开发
PHP的存量市场
- 市场份额:1.48%(CMS领域占比77%)
- 转型路径:Laravel框架支撑60%的新项目开发,WordPress维护需求占30%