知识点
一 、WEB技术
1、前端三大核心技术
1.1 HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>老李老李出门见喜</h1>
</body>
</html>
1.2CSS(Cascading Style Sheets)层叠样式表
HTML 本身为了格式化显示文本,但是当网页呈现大家面前的时候,需求 HTML 提供更多样式能力。这使得HTML 变得越来越臃肿。这促使了 CSS 的诞生。1994 年, W3C 成立, CSS 设计小组所有成员加入 W3C ,并努力研发 CSS 的标准,微软最终加入。1996 年 12 月发布 CSS 1.0 。1998 年 5 月发布 CSS 2.0CSS 3 采用了模块化思想,每个模块都在 CSS 2 基础上分别增强功能。所以,这些模块是陆续发布的。不同厂家的浏览器使用的引擎,对CSS 的支持不一样,导致网页布局、样式在不同浏览器不一样。因此,想要保证不同用户使用不同浏览器看到的网页效果一直非常困难。
1.3 JavaScript
二、WEB框架
1、web资源和访问
![](https://i-blog.csdnimg.cn/direct/2d3e65a4b7344a54b7adf1f7d24466e9.png)
- 从静态服务器请求HTML、CSS、JS等文件发送到浏览器端,浏览器端接收后渲染在浏览器上从图片服务器请求图片资源显示
- 从业务服务器访问动态内容,动态内容是请求后有后台服务访问数据库后得到的,最终返回到浏览器端
2、后台应用架构
2.1单体架构
![](https://i-blog.csdnimg.cn/direct/72dd3acb06ef4a7093e30438288af4c8.png)
2.2 微服务
2.3 单体架构和微服务比较
- 每个服务足够内聚,足够小,代码容易理解。这样能聚焦一个只当的业务功能或业务需求。
- 开发简单、开发效率提高,一个服务可能就是专业的只干一件事,微服务能够被小团队单独开发,这个小团队可以是2到5人的开发人员组成
- 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
- 微服务能使用不同的语言开发
- 易于和第三方集成,微服务运行容易且灵活的方式集成自动部署,通过持续集成工具,如:
- Jenkins、Hudson、Bamboo
- 微服务易于被一个开发人员理解、修改和维护,这样小团队能够更关注自己的工作成果,无需通过合作才能体现价值
- 微服务允许你利用融合最新技术。微服务只是业务逻辑的代码,不会和HTML/CSS或其他界面组件混合,即前后端分离
- 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一数据库
- 微服务把原有的一个项目拆分成多个独立工程,增加了开发、测试、运维、监控等的复杂度
- 微服务架构需要保证不同服务之间的数据一致性,引入了分布式事务和异步补偿机制,为设计和开发带来一定挑战
- 开发人员和运维需要处理分布式系统的复杂性,需要更强的技术能力
- 微服务适用于复杂的大系统,对于小型应用使用微服务,进行盲目的拆分只会增加其维护和开发成本
- 阿里开源贡献给了ASF,目前已经是Apache的顶级项目
- 一款高性能的Java RPC服务框架,微服务生态体系中的一个重要组件
- 将单体程序分解成多个功能服务模块,模块间使用Dubbo框架提供的高性能RPC通信
- 内部协调使用Zookeeper,实现服务注册、服务发现和服务治理
- 一个完整的微服务解决方案,相当于Dubbo的超集
- 微服务框架,将单体应用拆分为粒度更小的单一功能服务
- 基于HTTP协议的REST(Representational State Transfer 表述性状态转移)风格实现模块间通信
三、tomcat的功能介绍
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小
型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还
是一个Servlet和JSP容器
官网 :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
1、安装tomcat
1.1安装java环境
[root@tomcat ~]# yum install java-1.8.0-openjdk.x86_64 -y
1.2安装并启动tomcat
[root@tomcat ~]# tar zxf apache-tomcat-9.0.91.tar.gz -C /usr/local/[root@tomcat ~]# ln -s /usr/local/apache-tomcat-9.0.91/ /usr/local/tomcat[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
1.3查看端口
1.4访问tomcat
![](https://i-blog.csdnimg.cn/direct/47f5a05dd67f4d53922df17969528614.png)
2、tomcat的文件结构和组成
2.1目录结构
2.2 查看tomcat相关目录和文件
3、生成tomcat的启动文件
3.1生成tomcat的主配置文件
[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat.confJAVA_HOME=/etc/alternatives/jre_openjdk
3.2生成启动文件
[root@tomcat ~]# useradd -s /sbin/nologin -M tomcat[root@tomcat ~]# chown -R tomcat.tomcat /usr/local/tomcat[root@tomcat ~]# vim /lib/systemd/system/tomcat.service[Unit]Description=Tomcat#After=syslog.target network.target remote-fs.target nss-lookup.targetAfter=syslog.target network.target[Service]Type=forkingEnvironmentFile=/usr/local/tomcat/conf/tomcat.confExecStart=/usr/local/tomcat/bin/startup.shExecStop=/usr/local/tomcat/bin/shutdown.shPrivateTmp=trueUser=tomcatGroup=tomcat[Install]WantedBy=multi-user.target
[root@tomcat ~]# systemctl daemon-reload[root@tomcat ~]# systemctl enable --now tomcat
四 、结合反向代理实现tomcat部署
1、 常见部署方式介绍
![](https://i-blog.csdnimg.cn/direct/4ccadf0d4f5d4905a68fc81ab2590678.png)
2 、利用 nginx 反向代理实现
- 利用nginx反向代理功能,实现图中的代理功能,将用户请求全部转发至指定的同一个tomcat主机
- 利用nginx指令proxy_pass 可以向后端服务器转发请求报文,并且在转发时会保留客户端的请求报文中的host首部
[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conflocation ~ \.jsp$ {proxy_pass http://172.25.254.10:8080;}
3、实现tomcat中的负载均衡
3.1 HTTP的无状态,有连接和短连接
- 浏览器端第一次HTTP请求服务器端时,在服务器端使用session这种技术,就可以在服务器端 产生一个随机值即SessionID发给浏览器端,浏览器端收到后会保持这个SessionID在Cookie当 中,这个Cookie值一般不能持久存储,浏览器关闭就消失。浏览器在每一次提交HTTP请求的时候会把这个SessionID传给服务器端,服务器端就可以通过比对知道是谁了
- Session通常会保存在服务器端内存中,如果没有持久化,则易丢失
- Session会定时过期。过期后浏览器如果再访问,服务端发现没有此ID,将给浏览器端重新发 新的SessionID
更换浏览器也将重新获得新的 SessionID
有连接:是因为它基于TCP协议,是面向连接的,需要3次握手、4次断开。
服务器端如果故障,即使 Session 被持久化了,但是服务没有恢复前都不能使用这些 SessionID 。如果使用 HAProxy 或者 Nginx 等做负载均衡器,调度到了不同的 Tomcat 上,那么也会出现找不到SessionID的情况。
3.2 tomcat负载均衡实现
五、Memcached
1、 Memcached简介
2、memcached的安装与启动
[root@tomcat ~]# yum install memcached -y[root@tomcat ~]# vim /etc/sysconfig/memcachedPORT="11211"USER="memcached"MAXCONN="1024"CACHESIZE="64"OPTIONS="-l 0.0.0.0,::1"[root@tomcat ~]# systemctl enable --now memcached[root@tomcat ~]# netstat -antlupe | grep memcachetcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN980 97815 34711/memcached
3、memcached 操作命令
- set
- add
- replace
- get
- delete
# 参数说明如下:command set/add/replacekey key 用于查找缓存值flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息expiration time 在缓存中保存键值对的时间长度(以秒为单位, 0 表示永远)bytes 在缓存中存储的字节数value 存储的值(始终位于第二行)# 增加 key ,过期时间为秒, bytes 为存储数据的字节数add key flags exptime bytes
六、session 共享服务器
1、 msm 介绍
![](https://i-blog.csdnimg.cn/direct/a590f293363a49c2be321f1d44665951.png)
2、安装
kryo-3.0.3.jarasm-5.2.jarobjenesis-2.6.jarreflectasm-1.11.9.jarminlog-1.3.1.jarkryo-serializers-0.45.jarmsm-kryo-serializer-2.3.2.jarmemcached-session-manager-tc9-2.3.2.jarspymemcached-2.12.3.jarmemcached-session-manager-2.3.2.jar
3、配置过程
![](https://i-blog.csdnimg.cn/direct/d151ca1e5bdc4507bc142a697cf21b52.png)
![](https://i-blog.csdnimg.cn/direct/a876f53544a34dc69baaa10c460add23.png)
实验部分
1、tomcat部署
[root@web10 ~]# hostnamectl hostname tomcat-node1.timinglee.org
[root@web20 ~]# hostnamectl hostname tomcat-node2.timinglee.org
安装java环境
[root@tomcat-node1 ~]# dnf install java-1.8.0-openjdk.x86_64 -y[root@tomcat-node1 ~]# ll /etc/alternatives/jre_openjdk/
总用量 184
-rw-r--r-- 1 root root 1522 1月 13 2024 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root 188 8月 21 11:45 bin
drwxr-xr-x 9 root root 4096 8月 21 11:45 lib
-rw-r--r-- 1 root root 19274 1月 13 2024 LICENSE
-rw-r--r-- 1 root root 158253 1月 13 2024 THIRD_PARTY_README
安装并启动tomcat
![](https://i-blog.csdnimg.cn/direct/3b138442a4e9444ca427c8bee035ef1b.png)
查看端口
访问tomcat
生成tomcat的主配置文件
[root@tomcat-node1 conf]# vim tomcat.conf
生成启动文件
[root@tomcat-node1 conf]# vim /lib/systemd/system/tomcat.service
[root@tomcat-node1 conf]# useradd -s /sbin/nologin -M tomcat
[root@tomcat-node1 conf]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat-node1 conf]# ls /usr/local/tomcat/ -ld
drwxr-xr-x 9 tomcat tomcat 220 8月 21 11:48 /usr/local/tomcat/
开启Tomcat
[root@tomcat-node1 conf]# systemctl daemon-reload
[root@tomcat-node1 conf]# systemctl enable --now tomcat
配置第二台主机
[root@tomcat-node2 ~]# ll /etc/alternatives/jre_openjdk/
总用量 184
-rw-r--r-- 1 root root 1522 1月 13 2024 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root 188 8月 21 11:46 bin
drwxr-xr-x 9 root root 4096 8月 21 11:46 lib
-rw-r--r-- 1 root root 19274 1月 13 2024 LICENSE
-rw-r--r-- 1 root root 158253 1月 13 2024 THIRD_PARTY_README
[root@tomcat-node2 ~]# useradd -s /sbin/nologin -M tomact
[root@tomcat-node1 ~]# rsync -ar /usr/local/apache-tomcat-9.0.93 root@172.25.254.20:/usr/local/apache-tomcat-9.0.93
[root@tomcat-node1 ~]# rsync -ar /lib/systemd/system/tomcat.service root@172.25.254.20:/lib/systemd/system/tomcat.service
[root@tomcat-node2 local]# ln -s apache-tomcat-9.0.93 tomcat
[root@tomcat-node2 local]# chown -R tomcat.tomcat /usr/local/tomcat
[root@tomcat-node2 local]# ls /usr/local/tomcat/ -ld
drwxr-xr-x 9 tomcat tomcat 220 8月 21 12:21 /usr/local/tomcat/
[root@tomcat-node2 local]# systemctl daemon-reload
[root@tomcat-node2 local]# systemctl enable --now tomcat
2、反向代理
[root@tomcat-node1 ~]# ls
apache-tomcat-9.0.93.tar.gz test.jsp
[root@tomcat-node1 ~]# vim test.jsp
[root@tomcat-node1 ~]# cp test.jsp /usr/local/tomcat/webapps/ROOT/
[root@tomcat-node1 ~]# scp test.jsp root@172.25.254.20:/usr/local/tomcat/webapps/ROOT/
root@172.25.254.20's password:
test.jsp 100% 968 627.5KB/s 00:00
[root@nginx conf.d]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx conf.d]# nginx -s reload
负载均衡
[root@nginx conf.d]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx conf.d]# nginx -s reload
回话保持
[root@nginx conf.d]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx conf.d]# nginx -s reload
[root@nginx conf.d]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx conf.d]# nginx -s reload
3、session丢失
[root@tomcat-node1 ~]# dnf install memcached -y
[root@tomcat-node2 ~]# dnf install memcached -y
[root@tomcat-node1 ~]# vim /etc/sysconfig/memcached
[root@tomcat-node1 ~]# systemctl start memcached.service
[root@tomcat-node1 ~]# netstat -antlupe | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 979 145332 39085/memcached
tcp6 0 0 ::1:11211 :::* LISTEN 979 145333 39085/memcached
[root@tomcat-node1 ~]# dnf install telnet -y
[root@tomcat-node1 conf]# systemctl restart tomcat.service
[root@tomcat-node2 conf]# systemctl restart tomcat.service
[root@tomcat-node1 conf]# systemctl stop tomcat.service