什么是web服务器
简单来说
Web服务器就是一个能够接收http请求并作出响应的程序
webServer项目(二阶段项目)就是一个我们手写的Web服务器
我们现在开发的标准SpringBoot项目启动时内置的Web服务器叫Tomcat
实际上我们业界中还有很多Web服务器,它们具备很多不同的特征
网关Gateway项目使用Netty服务器,Netty服务器内部是NIO的所以性能更好
下图以Tomcat为例,解释请求响应流程
大多数情况我们会使用Tomcat作为Web服务器
它是我们请求\响应流程中的核心组件
Tomcat是也有缺点
常规情况下,一个tomcat并发数在100多一点
一般情况下,一个网站要1000人在线,并发数是2%~5% 也就是20~50并发
如果需要一个支持更高并发的服务器,就是需要使用Nginx
Nginx
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
Nginx的优势
- 高并发响应性能非常好,官方 Nginx 处理静态文件并发 5万/秒
- 反向代理性能非常强。(可用于负载均衡)
- 内存和 cpu 占用率低。(为 Apache(也是一个服务器) 的 1/5-1/10)
又小又快
Nginx快速的原因
常见面试题:Nginx为什么快
Nginx使用NIO来实现,是它能快速的主要原因之一
从Nginx内部的结构和运行流程上讲,它内部是一个主进程(Master)多个工作进程(Worker)
Master负责统筹管理配置和Worker的分工
Worker来负责处理请求,作出响应
而且使用非阻塞式的,异步的来完成工作
简单来说,就是一个Worker接到一个请求后,对请求进行处理,处理后在响应返回前,这个Worker还会处理别的请求,直到请求返回响应时,才会处理响应,也就是Worker这个进程全程无阻塞
正向代理
要想了解反向代理,首先了解正向代理
正向代理,当我们访问的目标服务器无法连通时,可以借助代理服务器,间接访问该目标服务器
关系类似于生活中的介绍人
反向代理
而反向代理的模式为下图
请求反向代理服务器的特点是,我们请求的是代理服务器的地址,真正提供服务的服务器地址我们不需要知道,这样做的好处是反向代理服务器后可能是一个集群,方便负载均衡
有点类似于生活中的代理人(中介),有什么事情直接找这个人就能完成需求,它怎么完成的我们不用管
Nginx的使用
实际开发中,Nginx可以用于反向代理服务器,
实际处理请求的是Tomcat服务器
因为Nginx优秀的静态内容并发性能
我们常常使用它做静态资源服务器
在Nginx中保存图片,文件视频等静态资源
经常和FastDFS组合使用
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
Nginx和Gateway的区别
首先明确Nginx和Gateway并不冲突
他们都是统一入口的概念,它们可以同时开启
也可以开启其中一个
只不过Nginx不属于java程序,而Gateway是java程序,而且是微服务的一部分
Nginx是服务器程序我们不可编辑,
Gateway是我们自己创建的项目,依赖和配置都由我们自己完成
最终如果想做反向代理服务器,就使用Nginx
如果是微服务项目的网关就是Gateway
Linux部署java项目
启动虚拟机
这部分的操作之前学习虚拟机时已经做过,可以参照之前的笔记即可
推荐大家重新解压纯净版的RockyLinux来实现
启动后登录rockylinux
sudo su -
修改root用户密码
passwd
下面就切换到客户端软件连接虚拟机
ifconfig
ifconfig | more
查看ip地址使用Bvssh软件连接
安装java环境
连接成功后,打开命令行界执行安装java的命令
yum install java
运行过程中出现了y/N的选择,要输入y之后按回车
安装需要时间,等待即可
yum安装好的java会自动配置环境变量
验证安装
java -version
创建java项目
按照创建普通SpringBoot项目的流程创建即可
注意需要勾选 Spring Web依赖