负载均衡(上)

tomcat+redis负载均衡context.xml配置 立即下载

第一:什么是负载均衡呢?

在互联网高速发展的时代,大数据量、高并发等是互联网网站提及最多的。如何处理高并发带来的系统性能问题,最终大家都会使用负载均衡机制。它是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服务器群来处理网站的请求。
公司比较有钱的,可以购买专门负责负载均衡的硬件(如:F5),效果肯定会很好。对于大部分公司,会选择廉价有效的方法扩展整个系统的架构,来增加服务器的吞吐量和处理能力,以及承载能力。

第二:我今天想说的是Tomcat+Nginx搭建集群,和SpringSession和Redis组合实现Session共享

这篇文章需要亲爱的读者知道:

Nginx的配置和安装

SpringSession的配置和安装

Redis的配置和安装(主要是用java来操作Redis)

1)首先我们要搭建一个环境,SpringMVC+Spring

我们都很清楚,搭建环境有两种,一种maven,一种普通导jar包

我今天用第二种,第一步导jar包













第二步:配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--注意,filter的name必须为springSessionRepositoryFilter-->
    <filter>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>


第三步:配置spring-servlet.xml和applicationContext.xml

spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="org.peter" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <mvc:annotation-driven/>
</beans>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="org.peter" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>
    <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
    <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="192.168.42.128"/>
        <property name="port" value="6379"/>
        <property name="database" value="0"/>
    </bean>
</beans>

第三步:我们创建一个Controller来做测试

package org.peter.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Created by sang on 2017/6/14.
 */
@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }

    @RequestMapping("/reg")
    public void reg(HttpSession session, String name) {
        session.setAttribute("name", name);
    }

    @RequestMapping(value = "/login", produces = "text/html;charset=utf-8")
    public String login(HttpSession session, HttpServletRequest req) {
        return session.getAttribute("name").toString()+"-------------"+req.getServletContext().getRealPath("/");
    }
}

第四步:写个jsp的页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
<form action="/reg">
  <input type="text" name="name"><input type="submit" value="提交">
</form>
<form action="/login">
  <input type="submit" value="获取">
</form>
</body>
</html>

当我向httpsession中写数据时,这些数据会自动存储到redis缓存/数据库中。在返回session数据时我加上了项目部署路径,是为了在部署到集群上之后区分这个请求是由哪台服务器处理的。启动项目,页面如下:

点击提交,会将数据保存到redis 中,如下:

然后再回到起始页面,点击获取按钮,即可以拿到Session中的值,如下:


结果是ok的,到这里我的环境就搭建好。

注意:一定要将你的Redis缓存打开。如果连接出现了错误

在我的博客中有一篇关于redis的安装


AI绘画与医疗可视化:用AI生成医学插图的实践 医疗可视化是医学教育、临床沟通和学术研究的核心工具。传统医学插图依赖手工绘制或专业3D建模,存在制作周期长、成本高、更新迭代慢等问题。随着深度学习技术的发展,AI绘画工具(如Stable Diffusion、DALL-E)展现出强大的图像生成能力,但医疗领域对插图的解剖准确性、标注规范性和语义完整性有极高要求,通用AI模型难以直接应用。本文聚焦AI技术与医疗领域的交叉创新,系统阐述如何通过数据预处理、模型定制化训练和后处理校验,构建符合医疗标准的插图生成系统。 阅读详情

相关推荐

Moveit Servo学习

MoveIt Servo功能与配置指南 摘要:本文介绍了MoveIt Servo的功能特性,包括支持关节速度、末端执行器速度和位置控制,以及安全功能如奇点检查、碰撞检测等。通过示例展示了如何运行伺服控制demo,详细解析了关键节点和话题。最后以睿尔曼rml_63机器人为例,讲解了如何自定义伺服配置文件,包括环境设置、输入输出参数配置、平滑滤波器和规划场景监控等关键配置项。文章提供了从基础使用到自定义机器人配置的完整指导,帮助开发者实现高效的实时运动控制。

Fisher的博客 1175

Application(ServletContext)在负载均衡上面的问题

ServletContext翻译为“Servlet上下文”。是servlet与servlet容器间直接通信的接口。j2sdkee的javadoc中说它是“a set of methods that a servlet uses to communicate with its servlet container. ” Servlet容器在启动一个web应用时,会为它创建一个servletCont

wanfengranxue的专栏 724

岭回归的MATLAB步骤

MATLAB 实现框架,它涵盖了从数据导入到岭回归的步骤,包括计算共线性、使用 MAE、MSE、R²、MAPE 进行评价,以及绘制相应的可视化图表。

subject625Ruben的博客 1090

Tomcat 正式环境下多个Context配置

终于搞懂了TOMCAT/config/server.xml里关于HOST和Context的问题了!!!!!起因是因为quartz定时器总是被执行2次,还是同一个线程,查了半天说是加载了两次,虽然改了下是成功了,但是还是有点不明所以!吃完午饭,无意中,把这个问题整明白了点!直接上例子:1.只有Host没有Context那么会部署tomcat/webapp下的所有项目(或者说文件夹:ROOT,PLAY...

我的博客 3万+

共享单车数据分析与需求预测项目

除了自行车共享系统的有趣的实际应用之外,这些系统生成的数据特征使它们成为研究的有吸引力的对象。由于这些系统在交通、环境和健康问题中的重要作用,它们引起了极大的关注。Huber 回归器:一个对异常值具有鲁棒性的模型,CV 得分为 0.4660,表明它对此数据集可能不那么有效。代码中的内容cv_score就像您正在使用的机器学习模型的成绩单。它告诉您模型的表现如何。减少异常值的影响:它还可以减少异常值的影响,因为对数转换显着缩小了数据的范围。因此,cv_score平均分数表明您的模型的预测效果如何。

极光喵的博客 2948

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 241

java高并发和负载均衡

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是

F & Q的专栏 1万+

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1687

24丨 负载均衡架构:如何用10行代码实现一个负载均衡服务?

负载均衡是互联网系统架构中必不可少的一个技术。通过负载均衡,可以将高并发的用户请求分发到多台应用服务器组成的一个服务器集群上,利用更多的服务器资源处理高并发下的计算压力。 那么负载均衡是如何实现的,如何将不同的请求分发到不同的服务器上呢? 早期,实现负载均衡需要使用专门的负载均衡硬件设备,这些硬件通常比较昂贵。随着互联网的普及,越来越多的企业需要部署自己的互联网应用系统,而这些专用的负载均衡硬件对他们来说成本太高,于是出现了各种通过软件实现负载均衡的技术方案。 HTTP 重定向负载均衡 HTTP 重定向负载

weixin_44848645的博客 571

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id =&gt; 1110, resp_id =&gt; 50597, resp_appl_id =&gt; 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4767

物流分拣YOLO实战:YOLO26 OBB+YOLOv8多尺度融合,不规则包裹分拣效率提升40%(附训练+部署代码)

在物流分拣的工业场景中,模型的检测精度、推理速度、部署友好性本次基于YOLO26 OBB+YOLOv8多尺度融合打造的物流分拣视觉检测方案,精准解决了工业场景中不规则包裹的旋转检测、多尺度包裹的漏检问题,最终实现分拣效率提升40%,检测准确率提升至95%以上,且模型在边缘设备上的推理帧率稳定35FPS+,完全适配物流分拣的工业落地需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 882

什么是负载均衡,为什么要做负载均衡?

大家好,我是IT修真院武汉分院第13期的学员石奥林,一枚正直纯洁善良的JAVA程序员今天给大家分享一下,修真院官网JAVA任务6,深度思考中的知识点——什么是负载均衡,为什么要做负载均衡?PPT链接:葵花宝典什么是负载均衡以及为什么要做负载均衡?_腾讯视频1.背景介绍在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我...

qq_26892215的博客 1万+

LVGL hal disp(porting display)

LVGL本身是没有对接最终的显示框架的,所以到具体的某个平台上,需要自行porting。

Bigan(安)的博客 2097

细谈负载均衡,什么是负载均衡以及负载均衡的常见方法

一、负载均衡概述 负载均衡是由多台服务器以对称的方式是组成的服务器集群,每台服务器具有等价的地位,都可以单独对位提供服务而无需借助其他服务器的辅助。通过某种负载分担技术,将请求均匀的分配到对称结构的某一台服务器上,接受到请求的服务器负责处理请求并返回响应结果。负载均衡能平均分配客户请求到服务器集群阵列,相当于增加了买火车票的窗口,用以解决大量并发访问服务的问题。这种集群技术可以用最少的成...

ck784101777的博客 8345

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

负载均衡

流量负载均衡介绍1 负载均衡产生的背景LB(Load Balance,负载均衡)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。负载均衡技术具有一下优势:(1)高性能:负载均衡技术将业务较均衡的分担到多台设备或链路上,从而提高了整个系统的性能;(2)可扩展性:负载均衡技术可以方便的增加集群中设...

魏言华的博客 4万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

什么是负载均衡

读完这篇文章,我希望大家能够掌握以下两点知识: 能够彻底的掌握什么是负载均衡,以及为什么要使用负载均衡。能够清楚的理解实现负载均衡的三种方式,以及每种方式的优缺点。 一、什么是负载均衡?为什么要使用负载均衡? 首先来看一下百度百科上对于负载均衡的介绍。 负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 这样笼统来看,我想有很多人都看不明白,那么下面我将用大白话给大家介绍一下到底什么是负载均衡,如

两眼一睁 神志不清 4440

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringCloud 负载均衡

负责均衡 (Load Balance,简称LB),是高并发、高可用系统必不可少的关键组件。 当服务流量增大时,通常会采用增加机器的方式来进行扩容,负载均衡就是用来在多个机器或者其它资源中按照一定的规则合理分配负载

Mwt258的博客 1440

负载均衡原理及算法

负载均衡指的是将用户请求分摊到不同的服务器上处理,以提高系统整体的并发处理能力以及可靠性。负载均衡服务可以有由专门的软件或者硬件来完成,一般情况下,硬件的性能更好,软件的价格更便宜(后文会详细介绍到)下负载均衡是一种比较常用且实施起来较为简单的提高系统并发能力和可靠性的手段,不论是单体架构的系统还是微服务架构的系统几乎都会用到。

Mr.W的博客 2291

负载均衡有哪些?

这些负载均衡策略你知道吗?

程序大视界 4368

负载均衡详解

负载均衡详解 摘要:面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等… 面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。 从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后

qq_45768871的博客 7439

软件负载均衡和硬件负载均衡的选择

数据流量过大的网络中,单一设备一般是无法承担的,需要多台设备进行数据分流,而负载均衡器就是起到把数据分流到多台设备的作用。负载均衡也分了不少技术,用以满足不同的需求,有软/硬件负载均衡、本地/全局负载均衡、更高网络层负载均衡,以及链路聚合技术。我们用了软负载均衡,也用了硬件负载均衡,下面我们说说这两个各自的千秋。一.软件负载均衡指在服务器的操作系统上,安装软件,来实现负载均衡,如Nginx负载均衡。它的优点是基于特定环境、配置简单、使用灵活、成本低廉,可以满足大部分的负载均衡需求。(1)软件负载均衡主要有N

javalingyu的博客 2782

grpc 负载均衡 ( DNS负载均衡,java客户端负载均衡,nginx反向代理负载均衡,k8s集群环境负载均衡 ) 学习总结

使用CoreDNS来实现一个自定义的域名解析服务关于CoreDNS的安装使用可以参考《k8s kubernetes 核心组件 CoreDNS 域名解析服务 学习总结》

liuyij3430448的博客 2707

详解负载均衡

解析负载均衡

sun_0228的博客 1770

LoadBalance 负载均衡

修改负载均衡策略为随机策略1. 定义随机算法对象,通过 @Bean 将其加载到 Spring 容器中此处使⽤ Spring Cloud LoadBalancer 提供的 RandomLoadBalancer@Beanname);注意:该类需要满⾜:1. 不⽤ @Configuration 注释2. 在组件扫描范围内2.使⽤ @LoadBalancerClient 或者 @LoadBalancerClients 注解。

q322359的博客 1976

gRPC的负载均衡

负载均衡(Load Balance)主要作用是把请求分摊到多个服务进行处理,从字面意思我们可以知道,负载均衡是需要多台服务器的,两台或两台以上服务才可以完成我们负载均衡的需要。建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;

感谢您的访问,期待和大家一起在Go语言的世界中共同进步 1956

c++负载均衡

互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障。但是要如何将不同的...

残花织梦的博客 3076
上一篇: 实现多线程的两种方式
下一篇: 负载均衡(下)
@夫子慧
博客等级 码龄9年 9粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值