负载均衡和tomcat

一、负载均衡

1.相关概念

nginx的反向代理<-->负载均衡

负载均衡

        将四层或者是七层的请求分配到多台后端的服务器上,从而分担整个业务的负载。提高系统的稳定性,也可以提供高可用(备灾,其中的一台后端服务器如果发生故障不影响整体业务)。

负载均衡的特点

  • 根据算法把不同的请求分发到不同的服务器
  • 客户端访问的是代理地址,相应也是代理服务器响应
  • 客户端并不了解后端服务器的情况
  • 可以提高安全性,后端服务器是隐藏的
  • 负载均衡是有缓存的,可以直接访问缓存,提高响应的速度

2.负载均衡的算法

(1)round robin 轮询

        rr: 负载均衡的默认算法,请求轮流分配给后端服务器。

        轮询算法适用于后端服务器处理能力相近(规格相同,2核4G,硬盘空间都512G等)的情况,默认的算法,可以不加。

(2)加权轮询

        weight round robin 轮询的升级版,给每个后端服务器赋予不同的权重。

        处理能力更强的服务器设置更高的权重;处理能力低的,设置低权重。

        权重用数字表示

        高峰时间可以通过这个方法进行流量的优化。

        适用于服务器处理能力差异比较大的情况。

(3)最少连接数

         配合加权轮询一块使用,最少连接数的算法可以将请求发送到当前连接比较少的服务器。

        这种算法适用于后端服务器处理任务耗时不同的情况,可以有效的避免所有的请求集中在处理能力更强的后端服务器上。

(4)ip_Hash

         当客户端访问后端服务器,根据客户端的ip地址,使用hash算法计算出ip地址的hash值,然后再把请求发送到相应的后端服务器。如果客户端访问的ip地址相同,通过hash算法,再一次的请求会被分配到上一次的服务器。保证会话的稳定。

负载均衡的会话保持------> ip_Hash

会话保持到期之后,会话中断,重新请求会重新计算hash值

A 192.168.206.60----> hash值----> B

中断

A 192.168.206.60----> hash值----> C

 (5)url_hash

        根据请求当中的URL地址来计算hash值,如果客户端请求的URL地址相同,客户端的请求会被分配到同一个服务器上。

www.baidu.com/test1 ---------> hash值  ---------> nginx1

www.baidu.com/test2 ---------> hash值  ---------> nginx2

后台服务器的数量发生变化,会影响结果。

3.负载均衡的语法架构

         配置流量分发,主要是依靠代理服务器完成,主要配置在代理服务器完成,配置算法。

使用三台虚拟机模拟情景

nginx1 192.168.206.60 代理服务器

nginx2 192.168.206.70 后端服务器1  echo 707070 > index.html

nginx3 192.168.206.80 后端服务器2  echo 808080 > index.html

客户端:谷歌浏览器

#为了更直观的感受所以把后端服务端的页面显示内容设置成不一样的,真实情况下服务端的页面应该都是一致的

(1)七层代理

  • upstream是nginx自带的。
  • upstream模块仅支持http协议,用来处理http的请求和响应。
  • upstreaem只能写在http模块中。不能在server/location/全局模块中。
  • 没有特殊情况,一般做七层代理。
 *支持轮询

编辑代理服务器的/usr/local/nginx/conf/nginx.conf 

 *支持权重轮询

*支持最少连接数 
*支持ip_hash

*支持url_hash

(2)基于域名的七层代理(轮询) 

#nignx1、 nignx2、nignx3都需要配置/etc/hosts

#配置如下

192.168.206.60 www.happy.com

192.168.206.70 www.zhangsan.com

192.168.206.80 www.lisi.com

(3)四层代理

 stream模块不支持http协议,仅支持tcp/udp协议,处理数据包的流量分发。

四层代理需要写在全局模块当中。

安装nginx的时候必须要有支持streeam模块。

 *支持轮询

 *支持加权轮询

*支持最少连接数

*不支持ip_hash和url_hash

二、Tomcat

1.介绍

        Tomcat是一个Java Web服务器,它实现了Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)和Java WebSocket技术规范。它主要用于运行Java Web应用程序,提供HTTP服务。

  • java servlet: tomcat是一个servlet容器,负责管理和执行java-servlet,服务端的java程序。处理客户端的htpp的请求和响应。
  • java server 服务端的配置
  • pages 动态页面的技术 -------> java代码完成的

        tomcat既可以作为以java代码为基础的动态页面,也可以处理和转发动态请求。tomcat的并发能力很差,适合小项目。

2.Tomcat的核心组件

(1)web容器

        处理web的请求,响应,动态页面的展示

(2)jsp容器

        解析index.jsp中的java代码转换为servlet的代码,然后servlet编译执行

        jsp是一种技术模板,类似于html语言,允许在html文件当中,嵌入java的代码

(3)servlet容器

        接收web容器的请求,负责加载初始化,执行和管理。

功能组件

  • connector:接受外部的请求以及响应
  • container:包含了engine host context webapp 四个组件组成
  • service:包含了connector和container
  • engine:引擎,用来管理多个虚拟主机,一个service只能有一个engine
  • host:代表一个虚拟主机,也可以理解为站点
  • context:对应的web应用
  • webapp(wrapps):最终的封装器,容器的最底层 index.jsp

 3.Tomcat的配置

(1)Tomcat的目录结构

目录名称作用
bin存放启动和关闭的脚本文件
conftomcat的配置文件
logstomcat的日志文件
temp保存临时文件的目录
webapps保存不同项目的应用目录
work 工作目录

(2)Tomcat的配置文件 ​​​​​​​ ​​​​​​​

        主要的配置文件有server.xml(服务器配置)、web.xml(Web应用程序配置)等。

4.安装Tomcat

#安装依赖软件

apt -y install openjdk-8-jdk-headless
java -version #查看java的版本

#解压压缩包,改名并移动到/usr/local下

#进入/tomcat/bin/下,启动程序

 5.实例:访问多个JSP Page

#创建pages

cd /usr/local/tomcat/webapps/

mkdir test1 test2

cd test1

vim index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

cd test2

vim index.jsp

#修改下面一行,其余同上

<% out.println("动态页面 2,http://www.test2.com");%>

 #编辑主配置文件

cd /usr/local/tomcat/conf

vim server.xml

        #在最下面的</html>下面添加 (以什么开头以什么结尾)

        <Host name="www.test1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/usr/local/tomcat/webapps/test1" path="" reloadable="true" />
        </Host>

        <Host name="www.test2.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/usr/local/tomcat/webapps/test2" path="" reloadable="true" />

        </Host>

#Host name主机名"ww.test1.com"
#appBase="webapps" web应用程序目录
#unpackWARs="true" 是否对.war格式结尾文件进行展开,默认配置
#autoDeploy="true" tomcat在运行时会自动部署webapps里面对应的配置
#xmlValidation="false"是否验证xml文件的有效性
#xmlNamespaceAware="false”是否启动xml的命名空间
#Context docBase="/usr/local/tomcat/webapps/test1" 用来说明对应站点的工作的目录

#做域名映射

vim /etc/hosts

192.168.206.60 www.test1.com www.test2.com 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/935304.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子电工一课一得

首语 在现代社会中&#xff0c;电子电工技术已经渗透到我们生活的方方面面&#xff0c;从家用电器到工业自动化&#xff0c;从通信设备到智能系统&#xff0c;无一不依赖于电子电工技术。因此&#xff0c;掌握电子电工的基础知识&#xff0c;不仅对理工科学生至关重要&#xf…

Pyside6 --Qt设计师--简单了解各个控件的作用之:Buttons

目录 一、BUttons1.1 包含1.2 不同按钮的解释 二、具体应用2.1 Push Button2.2 Tool Button2.3 Radio Button2.4 Check Box2.5 Command Link Button2.6 Dialog Button Box2.6.1 直接显示代码如下2.6.2 可以修改ok&#xff0c;cancel 的内容 今天学习一下工具箱里面的Buttons&am…

网络基础 - TCP/IP 五层模型

文章目录 一、OSI 参考模型中各个分层的作用1、应用层2、表示层3、会话层4、传输层5、网络层6、数据链路层7、物理层 一、OSI 参考模型中各个分层的作用 1、应用层 2、表示层 负责设备固有数据格式和网络标准数据格式间的转换 3、会话层 4、传输层 负责连接的建立和断开&…

【git】git回退到之前版本+拓展git命令

一、问题 git提交有时候会出错&#xff0c;想回退到之前的版本 1、命令git reset --soft <commit_id> commit_id【回退到的编号】 2、git push --force-with-lease origin <branch_name> branch_name【分支名】 二、拓展 1、git bash 1、进入任意磁盘 cd 磁盘…

Tomcat项目本地部署

不依赖idea部署本地项目&#xff0c;这里使用哈米音乐为例。 哈米音乐项目为聚合项目&#xff0c;ham-parent为父模块&#xff0c;其余为子模块。 ham-console:后台模块 ham-core:公共模块 ham-file:图片模块 ham-portal:前台模块 需要将这些模块进行打包&#xff0c;点击右侧…

【数据结构——内排序】二路归并排序(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;实现二路归并算法。 测试说明 平台会对你编写的代码进行测试&#xff1a; 测试输入示例&#xff1a; 11 18 2 20 34 12 32 6 16 5 8 1 (说明&#xff1a;第一行是元…

东方明珠生成式人工智能媒体融合创新平台荣获AI Cloud轻量云典型案例

近日&#xff0c;由全球数字经济大会组委会主办&#xff0c;中国信息通信研究院&#xff08;以下简称“信通院”&#xff09;、中国通信企业协会承办的2024全球数字经济大会云AI计算国际合作论坛在北京成功召开。会上隆重发布了2024年“AI Cloud助力大模型场景化和工程化落地”…

高阶数据结构--B树B+树实现原理B树模拟实现--Java

目录 一、B-树概念 二、B-树插入分析 1.用序列{53, 139, 75, 49, 145, 36, 101}构建B树的过程如下&#xff1a; 2.插入过程总结 三、B树插入实现 四、B树 1.B树概念 2.B树的特性 五、B树应用 1.索引 2.Mysql索引 3.InnoDB 一、B-树概念 1970 年&#xff0c; R.Bayer 和…

优选算法——分治(快排)

1. 颜色分类 题目链接&#xff1a;75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a;本题其实就要将数组最终分成3块儿&#xff0c;这也是后面快排的优化思路&#xff0c;具体大家来看下图。 这里我们上来先定义了3个指针&…

Edge SCDN的独特优势有哪些?

强大的边缘计算能力 Edge SCDN&#xff08;边缘安全加速&#xff09;是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术&#xff0c;智能调度使用户就近获取所需内容&#xff0c;为用户提供稳定快速的访问…

「Mac玩转仓颉内测版45」小学奥数篇8 - 排列组合计算

本篇将通过 Python 和 Cangjie 双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题&#xff0c;并加深对数学知识和编程逻辑的理解。 关键词 小学奥数Python Cangjie排列与组合 一、题目描述 编写一个程序&#xff0c;计算从 n 个不同元素中取…

基于Q-Learning的机器人栅格地图路径规划,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码

基于Q-learning算法的栅格地图路径规划是一种利用强化学习技术来解决路径规划问题的方法。 状态空间定义&#xff1a;在路径规划任务中&#xff0c;状态通常代表机器人或智能体在环境中的位置。状态空间可以是离散的&#xff0c;如网格地图上的特定位置。 动作空间定义&#x…

中电金信携手中远海科,共启贸易金融数智新篇章

在数智化转型成为驱动经济社会高质量发展的新引擎背景下&#xff0c;“数智方案”栏目聚焦金融等国计民生重点行业场景&#xff0c;依托中电金信“源启筑基咨询引领应用重构”的产品及服务体系&#xff0c;输出市场洞察和行业解决方案、应用案例&#xff0c;旨在全面推动行业IT…

抗DDOS设备

0x00 定义: 抗DDOS设备顾名思义&#xff0c;就是防御DDoS攻击的设备&#xff0c;通常包含三个部分&#xff1a;检测中心、清洗中心和管理中心 检测中心主要负责对流量进行检测&#xff0c;发现流量异常后上报管理中心&#xff0c;由管理中心下发引流策略至清洗中心&#xff0…

游戏引擎学习第42天

仓库: https://gitee.com/mrxiao_com/2d_game 简介 目前我们正在研究的内容是如何构建一个基本的游戏引擎。我们将深入了解游戏开发的每一个环节&#xff0c;从最基础的技术实现到高级的游戏编程。 角色移动代码 我们主要讨论的是角色的移动代码。我一直希望能够使用一些基…

Node一、fs 模块、path 模块、端口号、 http 模块、

一、Node.js了解 Node.js是一个跨平台JavaScript运行环境&#xff0c;使开发者可以搭建服务器端的JavaScript应用程序。 概念&#xff1a;使用 Node.js 编写后端程序 / 支持前端工程化 ✓ 后端程序&#xff1a;提供接口和数据&#xff0c;网页资源等 ✓ 前端工程化 &#x…

游戏引擎学习第44天

仓库: https://gitee.com/mrxiao_com/2d_game 向量数学的重要性 矢量数学非常重要&#xff0c;因为 它在某种程度上类似于将C和C视为高于汇编语言的语言&#xff0c;从而使得我们能够以略高的层次思考问题&#xff0c;同时保留大部分性能好处和直接访问的类型。这种思维方式就…

【算法day13】二叉树:递归与回溯

题目引用 找树左下角的值路径总和从中序与后序遍历构造二叉树 今天就简简单单三道题吧~ 1. 找到树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 我们…

MindSearch深度解析实践

1. 课程内容 1.1 MindSearch 简介 MindSearch 是一个开源的 AI 搜索引擎框架&#xff0c;具有与 Perplexity.ai Pro 相同的性能。我们可以轻松部署它来构建自己的专属搜索引擎&#xff0c;可以基于闭源的LLM&#xff08;如GPT、Claude系列&#xff09;&#xff0c;也可以使用…

【数据结构进阶】AVL树深度剖析 + 实现(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;数据结构 目录 前言 一、AVL树的概念 二、AVL树底层解析及实现 1. 节点的定义 2. 接口声明 3. AVL树的插入 3.1 更新平衡因子 3.2 旋转&#xff08;重点…