1. WEB技术
1.1 HTTP协议和B/S 结构
操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提供计算服务。
客户端和服务端往往处在不同的物理主机上,它们分属不同的进程,这些进程间需要通信。跨主机的进程间通信需要使用网络编程。最常见的网络编程接口是Socket。Socket称为套接字,本意是插座。也就是说网络通讯需要两端,如果一端被动的接收另一端请求并提供计算和数据的称为服务器端,另一端往往只是发起计算或数据请求,称为客户端。这种编程模式称为Client/Server编程模式,简称C/S编程。开发的程序也称为C/S程序。C/S编程往往使用传输层协(TCP/UDP),较为底层,比如:QQ,迅雷, 云音乐, 云盘, foxmail,xshell等
1990年HTTP协议和浏览器诞生。在应用层使用文本跨网络在不同进程间传输数据,最后在浏览器中将服务器端返回的HTML渲染出来。由此,诞生了网页开发。网页是存储在WEB服务器端的文本文件,浏览器发起HTTP请求后,到达WEB服务程序后,服务程序根据URL读取对应的HTML文件,并封装成HTTP响应报文返回给浏览器端。起初网页开发主要指的是HTML、CSS等文件制作,目的就是显示文字或图片,通过超级链接跳转到另一个HTML并显示其内容。后来,网景公司意识到让网页动起来很重要,傍着SUN的Java的名气发布了JavaScript语言,可以在浏览器中使用JS引擎执行的脚本语言,可以让网页元素动态变化,网页动起来了。为了让网页动起来,微软使用ActiveX技术、SUN的Applet都可以在浏览器中执行代码,但都有安全性问题。能不能直接把内容直接在WEB服务器端组织成HTML,然后把HTML返回给浏览器渲染呢?
最早出现了CGI(Common Gateway Interface)通用网关接口,通过浏览器中输入URL直接映射到一个服务器端的脚本程序执行,这个脚本可以查询数据库并返回结果给浏览器端。这种将用户请求使用程序动态生成的技术,称为动态网页技术。先后出现了ASP、PHP、JSP等技术,这些技术的使用不同语言编写的程序都运行在服务器端,所以称为WEB后端编程。有一部分程序员还是要编写HTML、CSS、JavaScript,这些代码运行在浏览器端,称为WEB前端编程。合起来称为Browser/Server编程,即B/S编程。
1.2 前端三大核心技术
1.2.1 HTML
HTML(HyperText Markup Language)超文本标记语言,它不同于一般的编程语言。超文本即超出纯文本的范畴,例如:描述文本颜色、大小、字体等信息,或使用图片、音频、视频等非文本内容。
HTML由一个个的标签(标记)组成,这些标签各司其职,有的提供网页信息,有的负责文字,有的负责图片,有的负责网页布局,所以一个HTML文件,是由格式标签和数据组成。
超文本需要显示,就得有软件能够呈现超文本定义的排版格式,例如显示:图片、表格,显示字体的大 小、颜色,这个软件就是浏览器。超文本的诞生是为了解决纯文本不能格式显示的问题,是为了好看,但是只有通过网络才能分享超文本的内容,所以制定了HTTP协议。
1.2.2 CSS(Cascading Style Sheets)层叠样式表
HTML本身为了格式化显示文本,但是当网页呈现大家面前的时候,需求HTML提供更多样式能力。这使得HTML变得越来越臃肿。这促使了CSS的诞生。
1994年,W3C成立,CSS设计小组所有成员加入W3C,并努力研发CSS的标准,微软最终加入。
1996年12月发布CSS 1.0。
1998年5月发布CSS 2.0
CSS 3采用了模块化思想,每个模块都在CSS 2基础上分别增强功能。所以,这些模块是陆续发布的。
不同厂家的浏览器使用的引擎,对CSS的支持不一样,导致网页布局、样式在不同浏览器不一样。因此,想要保证不同用户使用不同浏览器看到的网页效果一直非常困难
1.2.3 JavaScript
2.WEB框架
2.1web资源与访问
PC 端或移动端浏览器访问从静态服务器请求HTML、CSS、JS等文件发送到浏览器端,浏览器端接收后渲染在浏览器上从图片服务器请求图片资源显示从业务服务器访问动态内容,动态内容是请求后有后台服务访问数据库后得到的,最终返回到浏览器端
手机 App 访问
内置了HTML和JS文件,不需要从静态WEB服务器下载 JS 或 HTML。为的就是减少文件的发送,现代前端开发使用的JS文件太多或太大了有必要就从图片服务器请求图片,从业务服务器请求动态数据客户需求多样,更多的内容还是需要由业务服务器提供,业务服务器往往都是由一组服务器组成。
2.2 后台应用架构
2.2.1单体架构
单体架构 vs 微服务架构
1. 单体架构(Monolithic Architecture)
定义: 单体架构是指将整个应用程序作为一个单一、紧密耦合的单元进行开发和部署。所有功能模块(如用户管理、订单管理、支付等)都运行在同一个进程中,共享同一个数据库。
特点:
- 单一代码库:所有功能模块都在一个项目中。
- 统一部署:整个应用作为一个整体打包(如
.war
/.jar
文件)并部署到服务器。 - 共享数据库:所有模块访问同一个数据库。
- 强耦合:模块间直接调用,修改一个功能可能影响整个系统。
优点: ✅ 开发简单:适合小型项目,初期开发速度快。 ✅ 部署方便:只需部署一个应用,运维成本低。 ✅ 本地调用高效:模块间直接调用,无网络开销。
缺点: ❌ 难以扩展:只能整体扩展,无法单独扩展某个模块。 ❌ 技术栈单一:所有模块必须使用相同的技术。 ❌ 维护困难:随着代码增长,修改和测试变得复杂。 ❌ 可靠性低:一个模块崩溃可能导致整个系统宕机。
2.2.2微服务架构
定义: 微服务架构将应用程序拆分为多个小型、独立的服务,每个服务负责一个特定的业务功能(如用户服务、订单服务、支付服务)。这些服务可以独立开发、部署和扩展,并通过轻量级协议(如 HTTP/REST、gRPC)通信。
特点:
- 服务拆分:按业务功能划分,每个服务独立运行。
- 独立部署:每个服务可以单独部署和扩展。
- 独立数据库:每个服务可以使用不同的数据库(如 MySQL、MongoDB)。
- 松耦合:服务间通过 API 通信,修改一个服务不影响其他服务。
优点: ✅ 可扩展性强:可以单独扩展高负载的服务。 ✅ 技术灵活:不同服务可以使用不同技术栈(如 Java + Go + Python)。 ✅ 高可用性:一个服务崩溃不会影响整个系统。 ✅ 团队自治:不同团队负责不同服务,开发效率高。
缺点: ❌ 复杂度高:需要服务发现、负载均衡、分布式事务等机制。 ❌ 运维成本高:需要管理多个服务、监控、日志收集等。 ❌ 网络开销:服务间通信依赖网络,可能影响性能。
2.2.3 两者之间的区别
对比项 | 单体架构 | 微服务架构 |
---|---|---|
架构风格 | 单一、集中式 | 分布式、模块化 |
部署方式 | 整体部署 | 独立部署 |
扩展性 | 只能整体扩展 | 可以单独扩展某个服务 |
技术栈 | 必须统一 | 可以混合使用不同技术 |
开发效率 | 初期快,后期慢 | 初期慢,后期快 |
维护难度 | 代码臃肿,难维护 | 服务独立,易维护 |
数据库 | 共享同一个数据库 | 每个服务可独立选择数据库 |
适用规模 | 小型项目 | 中大型项目 |
3 安装tomcat
官网:
http://tomcat.apache.org/
官网文档:
https://tomcat.apache.org/tomcat-8.5-doc/index.html
帮助文档:
https://cwiki.apache.org/confluence/display/tomcat/
https://cwiki.apache.org/confluence/display/tomcat/FAQ
首先要保证主机中有java环境(配置仓库并下载)
dnf install java-1.8.0-openjdk.x86_64 -y
从官网上下载源码包直接安装启动
tomcat程序文件夹内容:
手动启动tomcat
3.1 配置tomcat.service启动文件
生成tomcat的主配置文件
生成tomcat用户并设定软件目录权限
重新加载systemd
3.2启动服务后的网页

4.结合反向代理实现tomcat部署
4.1常见的部署
单机反向代理
优点 | 缺点 |
---|---|
✅ 部署简单,运维成本低 | ❌ 单点故障(Tomcat宕机则服务不可用) |
✅ 适合小流量场景 | ❌ 无法横向扩展(仅单机Tomcat) |
✅ Nginx可优化静态资源 | ❌ 性能受限于单机Tomcat |
反向代理多机
优点 | 缺点 |
---|---|
✅ 高可用(单节点故障不影响服务) | ❌ 需要会话保持(如 sticky session 或 Redis 共享 Session) |
✅ 可横向扩展(动态增加Tomcat节点) | ❌ 负载均衡策略需优化(避免热点问题) |
✅ 性能提升(多Tomcat并行处理) | ❌ 运维复杂度增加(需管理多个Tomcat实例) |
反向代理多机多级
优点 | 缺点 |
---|---|
✅ 超高可用性(多层容灾) | ❌ 架构复杂,成本高 |
✅ 精细化流量控制(L7可做URL路由、限流) | ❌ 运维难度大(需专业团队维护) |
✅ 高性能(L4硬件负载均衡 + L7软件优化) | ❌ 延迟可能增加(多级转发) |
4.2利用nginx反向代理实现
创建一个test.jsp
用来做测试页面 放在 /usr/local/tomcat/webapps/root/test.jsp下
配置php-nginx服务器
4.3配置域名解析
设置Windows配置域名解析,解析域名到对应的ip 配置域名解析文件路径在C://windows/System32/drives/etc/hosts
在windows的浏览器访问
5. Memcached介绍
Memcached 只支持能序列化的数据类型,不支持持久化,基于Key-Value的内存缓存系统memcached虽然没有像redis所具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群同步的方式,让各memcached服务器的数据进行同步,从而实现数据的一致性,即保证各memcached的数据是一样的,即使有任何一台 memcached 发生故障,只要集群中有一台 memcached 可用就不会出现数据丢失,当其他memcached 重新加入到集群的时候,可以自动从有数据的memcached 当中自动获取数据并提供服务。Memcached 借助了操作系统的 libevent 工具做高效的读写。libevent是个程序库,它将Linux的epoll、
BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能Memcached 支持最大的内存存储对象为1M,超过1M的数据可以使用客户端压缩或拆分报包放到多个key中,比较大的数据在进行读取的时候需要消耗的时间比较长,memcached 最适合保存用户的session实现session共享
5.1 数据缓存机制
安装memcached 并修改其中配置。
memcached是以键值对的形式储存数据,是一种非关系型数据库 。
6.贡献服务器
通过交叉存储的方式来保证, 当一台tomcat挂掉的时候不会使数据丢失。
6.1安装相关依赖
6.2 配置过程
配置 vim /usr/local/tomcat/conf/context.xml
再次访问test.jsp的