Tomcat

1.web业务介绍

1.1 web技术

B/S 架构即浏览器 / 服务器架构,客户端只需通过浏览器即可访问服务器提供的服务,无需安装专用客户端,具有部署简便、维护集中、跨平台等特点。HTTP 协议是 B/S 架构中浏览器与服务器之间的通信基础,作为一种无状态、无连接的应用层协议,它定义了请求与响应的规则,实现了客户端与服务端之间的数据传输与交互,支撑起绝大多数 Web 应用的运行。
前端三大核心技术是html,css,JavaScript

1.2 web框架

1.2.1 web资源和访问

从静态服务器请求HTML、CSS、JS等文件发送到浏览器端,浏览器端接收后渲染在浏览器上从图片服务器请求图片资源显示。
从业务服务器访问动态内容,动态内容是请求后有后台服务访问数据库后得到的,最终返回到浏览器端。

1.2.2 后台应用架构

单体架构
1.传统架构(单机系统),一个项目一个工程:比如商品、订单、支付、库存、登录、注册等等,统一部署,一个进程。
2.all in one的架构方式,把所有的功能单元放在一个应用里。然后把整个应用部署到一台服务器上。
3.如果负载能力不行,将整个应用进行水平复制,进行扩展,然后通过负载均衡实现访问。
4.易于开发和测试:也十分方便部署;当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
5.如果某个功能模块出问题,有可能全站不可访问,修改Bug后、某模块功能修改或升级后,需要停 掉整个服务,重新整体重新打包、部署这个应用war包,功能模块相互之间耦合度高,相互影响,不适 合当今互联网业务功能的快速迭代。
6.特别是对于一个大型应用,我们不可能吧所有内容都放在一个应用里面,我们如何维护、如何分工合作都是问题。如果项目庞大,管理难度大
7.web应用服务器:开源的tomcat、jetty、glassfish。商用的有weblogic、websphere、Jboss
微服务
1.属于SOA(Service Oriented Architecture)的子集
2.微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去掉耦合,每一 个微服务提供单个业务功能,一个服务只做一件事。每个服务都围绕着具体业务进行构建,并3且能 够被独立地部署到生产环境、类生产环境等。
3.从技术角度讲就是一种小而独立的处理过程,类似与进程的概念,能够自行单独启动或销毁。
4.微服务架构(分布式系统),各个模块/服务,各自独立出来,"让专业的人干专业的事",独立部
署。分布式系统中,不同的服务可以使用各自独立的数据库。
5.服务之间采用轻量级的通信机制(通常是基于HTTP的RESTful API)。
6.微服务设计的思想改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端、后端、DBA、测试分别有自己对应的团队,属于水平团队组织架构。而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。但实际上在企业中并不会把团队组织架构拆分得这么绝对,垂直架构只是一种理想的架构。
7.微服务的实现框架有多种,不同的应用架构,部署方式也有不同。

2.tomcat简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和JSP容器起始于SUN 公司的一个Servlet的参考实现项目 Java Web Server,开发者是 James Duncan Davidson,在1999年,将项目贡献给了apache软件基金会(ASF),和ASF现有的项目 JServ 合并,并开源成为顶级项目。
Tomcat 仅仅实现了Java EE规范中与Servlet、JSP相关的类库,是JavaEE不完整实现。

3.软件部署方式

3.1 下载安装包

bash 复制代码
关闭httpd服务
[root@RS1 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.115/bin/apache-tomcat-9.0.115.tar.gz

3.2 部署tomcat

bash 复制代码
[root@RS1 ~]# yum install java-1.8.0-openjdk.x86_64 -y
[root@RS1 ~]# tar zxf apache-tomcat-9.0.115.tar.gz  -C /usr/local
[root@RS1 ~]# cd /usr/local/
[root@RS1 local]# ls
apache-tomcat-9.0.115  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@RS1 local]#  mv apache-tomcat-9.0.115/ tomcat
[root@RS1 local]# cd tomcat/
[root@RS1 tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work

3.3 制作tomcat的启动脚本

bash 复制代码
[root@RS1 bin]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre
[root@RS1 bin]# vim /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

[root@RS1 bin]# useradd  -s /sbin/nologin -M tomcat
[root@RS1 bin]# chown  tomcat.tomcat /usr/local/tomcat/ -R
[root@RS1 bin]# systemctl daemon-reload

3.4 将配置传到R2上

bash 复制代码
[root@RS2 ~]#yum install java-1.8.0-openjdk.x86_64 -y
[root@RS1 local]# scp -r tomcat root@192.168.83.20:/usr/local
[root@RS2 ~]# useradd -s /sbin/nologin -M tomcat
[root@RS2 ~]# chown tomcat.tomcat  /usr/local/tomcat/ -R
[root@RS1 local]# scp /lib/systemd/system/tomcat.service root@192.168.83.20:/lib/systemd/system/tomcat.service

4.nginx与tomcat整合

4.1 单体架构

bash 复制代码
[root@Nginx conf.d]# cd /usr/local/nginx/conf/conf.d/
[root@Nginx conf.d]# vim vhosts.conf
server {
    listen 80;
    server_name hhh.org;
    location ~* \.jsp$ {
        proxy_pass http://192.168.83.10:8080;
    }
}
[root@Nginx conf.d]# nginx  -s reload
[root@RS1 ~]# cp test.jsp  /usr/local/tomcat/webapps/ROOT/
[root@RS1 ~]#  scp test.jsp  root@192.168.83.20:/usr/local/tomcat/webapps/ROOT/

4.2 tomcat负载均衡

bash 复制代码
[root@Nginx conf.d]# vim vhosts.conf
upstream tomcat {
    hash $cookie_JSESSIONID;
    server 192.168.83.10:8080;
    server 192.168.83.20:8080;
}
server {
    listen 80;
    server_name hhh.org;
    location ~* \.jsp$ {
        proxy_pass http://tomcat;
    }
}
[root@Nginx conf.d]# nginx  -s reload

5.session数据切换保持

5.1 tomcat加载模块

bash 复制代码
[root@RS1 ~]# unzip jar.zip
[root@RS1 ~]# cd jar/
[root@RS1 jar]# cp * /usr/local/tomcat/
[root@RS1 jar]# scp * root@172.25.254.20:/usr/local/tomcat/lib/

5.2 安装memcache

bash 复制代码
[root@RS1 jar]# dnf install memcached
[root@RS2 ~]# dnf install memcached -y

[root@RS1 ~]# vim /etc/sysconfig/memcached
[root@RS2 ~]# vim /etc/sysconfig/memcached

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0,::1"

[root@RS1 ~]# systemctl restart memcached.service
[root@RS2 ~]# systemctl restart memcached.service

5.3 配置tomcat

bash 复制代码
[root@RS1 ]#  vim /usr/local/tomcat/conf/context.xml
<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.83.10:11211,n2:192.168.83.20:11211"
    failoverNodes="n1"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>

[root@RS2 ]#  vim /usr/local/tomcat/conf/context.xml
<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.83.10:11211,n2:192.168.83.20:11211"
    failoverNodes="n2"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>

[root@RS1 ~]#  systemctl restart tomcat.service
[root@RS2 ~]#  systemctl restart tomcat.service
相关推荐
屎到临头想搅便2 小时前
TOMCAT
java·tomcat
Sylvia33.2 小时前
火星数据:解构斯诺克每一杆进攻背后的数字语言
java·前端·python·数据挖掘·数据分析
Henry Zhu1232 小时前
数据库:并发控制基本概念
服务器·数据库
糖猫猫_2 小时前
Kite:两种方式实现动态表名
java·后端
用户8307196840822 小时前
5种Java字符串匹配方案深度对比,附性能测试和决策树
java
孤独风雪2 小时前
Spring Stomp 消息使用
java·后端
IT探险家2 小时前
Java 面向对象编程:5 个核心概念从生活到代码的完整映射
java
我要神龙摆尾2 小时前
JAVA版本演进全揽:你使用的JDK停留在哪个版本
java