JAVA中的高并发,解决高并发的方案

2023-11-02

java高并发,如何解决,什么方式解决

一、什么是高并发

1.1 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

1.2 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。

1.2.1 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。

1.2.2 吞吐量:单位时间内处理的请求数量。

1.2.3 QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。

1.2.4 并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

二、高并发的解决方法有两种

一种是使用Redis缓存另一种是使用Nginx生成静态页面还有就是从最基础的地方优化我们写代码减少不必要的资源浪费:

  1. 使用Redis缓存原因:
    首先缓存技术是在用户请求时将数据保存在缓存中,下次请求时会检测缓存中是否有数据存在,防止多次请求服务器,导致服务器性能降低,严重导致服务器崩溃,这只是我自己的理解,详细的资料还是需要在网上收集;

  2. Nginx生成页面静态化:
    简单的说,我们如果访问一个链接 ,服务器对应的模块会处理这个请求,转到对应的jsp界面,最后生成我们想要看到的数据。这其中的缺点是显而易见的:因为每次请求服务器都会进行处理,如 果有太多的高并发请求,那么就会加重应用服务器的压力,弄不好就把服务器 搞down 掉了。那么如何去避免呢?如果我们把对 test.do 请求后的结果保存成一个 html 文件,然后每次用户都去访问 ,这样应用服务器的压力不就减少了?
    那么静态页面从哪里来呢?总不能让我们每个页面都手动处理吧?这里就牵涉到我们要讲解的内容了,静态页面生成方案… 我们需要的是自动的生成静态页面,当用户访问 ,会自动生成 test.html ,然后显示给用户。

三、追加

多线程处理50W数据方案

1:批处理方式每3000条处理一批数据
2:所有数据查询丢到for循环外处理
3:使用 PreparedStatement ps = con.prepareStatement(sql);
通过addBatch()的方式,将数据缓存在对象里面,通过最后执行executeBatch();方法提交,因此速度会快很多!
4:开始多线程Thread处理不影响其它主线程运行
5:通过JDBC进行数据入库操作
6:插入Redis等缓存中进行同步数据库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA中的高并发,解决高并发的方案 的相关文章

  • java中永远不会出现的异常

    我为点和向量编写一个类 我想用它们来计算向量的点和范数 这些是点类和向量类 public class Point public float x y public class MyVector public Point start end 我
  • 计算二维笛卡尔坐标中不规则形状的边界

    我正在寻找一种计算不规则形状边界的解决方案 Lats take a look at Square example 如果我有Minimum x and y and Maximum x and y like MaxX 5 MinX 1 MaxY
  • Mac 上的 Errno 13 权限被拒绝

    我只是测试如何从一个 py 文件调用外部 py 文件 我有 2 个 py 文件 都在同一目录中 这是主要代码 runext py 假设调用 ext py import subprocess subprocess call Users tra
  • 安装python启动文件

    我如何安装pythonstartup文件 以便它在命令上运行 例如python myfile py 我尝试将其安装到我的 home myuserUbuntu的目录 但它说我没有足够的权限 此外 不同的地方交替说它应该全部大写或全部小写 前面
  • JavaFX Integer Spinner (IntegerSpinnerValueFactory) 不会将值回绕到最小值

    我创建了一个带有值的整数微调器 min 5 max 15 and initialValue 12 and wrapAround true 一旦旋转器到达max 15 增量期间的值 而不是将值重置为min 5 正如它所说文档 https op
  • “强制更新快照/版本” - 这是什么意思

    在 Maven 项目中 选择 更新项目 时 有一个名为 强制更新快照 版本 的选项 它有什么作用 强制更新快照 版本 就像运行以下命令 mvn U install U 也可以用作 update snapshot 看here http boo
  • 短 2 个字节

    我正在从串行端口读取一个长度为 133 字节的数据包 最后 2 个字节包含 CRC 值 我使用 Java 将 2 个字节值制成单个 我认为很短 这就是我所做的 short high 48 0x00ff short low 80 short
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • Python写入dbf数据时出错

    我得到这个错误 DbfError unable to modify fields individually except in with or Process 如何修复它 这是我的code with dbf Table aa dbf as
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • Flask APScheduler + Gunicorn 工作人员 - 在套接字修复后仍在运行任务两次

    我有一个 Flask 应用程序 我使用 Flask APScheduler 在我的数据库上运行计划查询并通过 cron 作业发送电子邮件 我通过 Gunicorn 使用以下配置运行我的应用程序并通过主管进行控制 program myapp
  • MYSQL - 查找最近的前一天

    我可以以某种方式 不使用 PHP 找到一周中最近的前一天日期吗 Like 最近的上一个星期二的日期是哪一天 CURDATE INTERVAL WEEKDAY CURDATE wday IF WEEKDAY CURDATE gt wday 0
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • Volley 在第一次调用方法时返回 null

    我正在尝试使用 volley 从服务器检索数据 但是当我第一次调用此方法时 我收到服务器的响应 但该方法返回 null 如果我第二次调用它 我会得到最后的响应 public String retrieveDataFromServer Str
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr
  • 无法在 Python 2.4 中解码 unicode 字符串

    这是Python 2 4 中的 这是我的情况 我从数据库中提取一个字符串 它包含一个变音的 o xf6 此时 如果我运行 type value 它会返回 str 然后我尝试运行 decode utf 8 但收到错误 utf8 编解码器无法解

随机推荐

  • python爬虫招聘网站(智联)

    2021年10月7日爬取 爬虫代码不知道是否失效 文章目录 爬虫目标 具体过程 源码 爬虫目标 要求 搜索 大数据 专业 爬相关公司的招聘信息 列数不少于10列 行数不少于3000 目标 搜索 大数据 爬取智联招聘 北京上海广州深圳天津武汉
  • maven查看jar的pom引入来源

    从idea中点击 Maven Projects 后点击Show Dependencies 如图所示 得到依赖关系图 如下 在页面进行 Ctrl F 搜索需要的 Jar 名称 例 查找 spring beans 双击框定的地方 就能进入到对应
  • 一分钟快速利用ChatGPT生成PPT

    目标 让AI给我们生成一篇PPT报告 首先介绍一下什么是ChatGPT ChatGPT是一种基于自然语言处理技术的人工智能应用 它使用OpenAI的GPT模型来自动生成自然语言的回复 可以作为虚拟助手 客服机器人等方面的应用 与其他机器学习
  • SOC芯片中VIP和IP之间的路由关系

    通用PAD是双向端口 inout 这就意味着每个通用PAD可以根据需要被配置成输入或输出 如图1所示 图1 ind是输入端口 do是输出端口 obe是输出使能信号 当obe为低电平时 PAD作为输入端口使用 三态门关闭 do高阻 片外数据通
  • nm 命令显示

    用途 显示关于对象文件 可执行文件以及对象文件库里的符号信息 语法 nm A C X 32 64 32 64 f h l p r T v B P e g u d o x t Format File 描述 nm 命令显示关于指定 File 中
  • FISCO BCOS工程师常用的性能分析工具推荐

    FISCO BCOS是完全开源的联盟区块链底层技术平台 由金融区块链合作联盟 深圳 简称金链盟 成立开源工作组通力打造 开源工作组成员包括博彦科技 华为 深证通 神州数码 四方精创 腾讯 微众银行 亦笔科技和越秀金科等金链盟成员机构 代码仓
  • Hibernate学习笔记 查询简介

    创建实体类 在介绍Hibernate查询语言之前 首先我们来建立一下数据库 这里直接使用了MySQL自带的样例数据库world 如果你没有安装MySQL那么需要安装一下 并且在安装的时候选择安装样例数据库 安装完成之后 应该能在MySQL中
  • 《区块链技术与应用》学习笔记13——ETH权益证明

    矿工挖矿是为了取得出块奖励 获取收益 而系统给予出块奖励的目的是激励矿工参与区块链系统维护 进行记账 而挖矿本质上是看矿工投入资金来决定的 投入资金买设备 gt 设备决定算力 gt 算力比例决定收益 那么 为什么不直接拼 钱 呢 现状是用钱
  • getchar与scanf的区别

    getchar getchar先读取一个字符放到ch里面去 如果这个字符不等于EOF 就进入循环 打印这个字符 当getchar读到文件末尾或者结束时 它会返回一个EOF 此时结束循环 输入A 输出A 输入b 输出b 当我们想要结束时 输入
  • 仿牛客社区项目(第五章)(上)

    文章目录 第三章 Kafka 构建TB级异步消息系统 一 阻塞队列 1 阻塞队列测试方法 2 测试结果 二 Kafka入门 1 Kafka下载 2 Kafka安装与配置 3 Kafka的启动 4 Kafka使用 三 Spring整合Kafk
  • SpringBoot:使用 @Lazy 注解懒加载

    为什么需要懒加载 我们知道 在 SpringBoot 应用程序启动的时候 会实例化一些对象加入到 IOC 容器里边 这个过程是非常耗时的 那我们想要减少这个耗时的过程就需要 Lazy 注解 对象加入容器的时机 如下代码 package co
  • [JQuery]分页插件jQuery pager plugin功能扩展

    原文地址 http blog csdn net starfd article details 25292019 http blog csdn net nz360 article details 52326232 牛逼分页 http www
  • python:使用 PythonMagick 生成 icon 图标

    目录 PythonMagick 下载与安装 把图片转化成 icon PythonMagick 下载与安装 使用 pip install PythonMagick是不行的 会提示没有这个模块 因此 需要到第三方去把该模块下载下来 再安装 下载
  • 【数据库】B树、B+树、索引

    B树 B 树 索引 二叉树是二分树 多分树是二叉树的推广 多分树主要适用于静态的索引数据文件 在插入和删除的时候需要把插入位置之后的每个记录都要向后移动 从而导致增加新的索引项和索引页块 需要对外存上的页块进行大量的调整 因此对于经常需要插
  • flutter聊天界面-TextField输入框buildTextSpan实现@功能展示高亮功能

    flutter聊天界面 TextField输入框buildTextSpan实现 功能展示高亮功能 最近有位朋友讨论的时候 提到了输入框的高亮展示 在flutter TextField中需要插入特殊样式的标签 比如 请 张三 回答一下 这一串
  • TypeScript Variable Type: never

    目录 never 的定义 never 的特点 never 的定义 never 是其它类型 包括 null 和 undefined 的子类型 代表从不会出现的值 never 通常有两种表现形式 抛出异常 返回值为 never 的函数可以是抛出
  • mysql查询课程的前三名

    看了下网上的查询课程前三名的 真是五花八门 真是 I服了U还各种错 看来啥事还是得自己动手 表结构 CREATE TABLE student id bigint 20 NOT NULL AUTO INCREMENT s no bigint
  • pygame安装教程(python)

    1 安装好python 2 打开cmd 3 输入 pip version 如果显示未安装pip 那么输入pip 等待安装完毕 检查pip是否安装 pip version 4 输入 pip install pygame 可能会出现这种错误 输
  • 软件产品设计的学习总结

    一个成功的软件产品通常需要包含以下几个方面 可靠性 软件产品需要稳定可靠 能够正确地运行 并且在用户使用中没有频繁崩溃或者其他问题 安全性 软件产品在使用过程中需要保证数据的安全性 包括用户的个人和商业隐私等方面 易用性 软件产品需要具有高
  • JAVA中的高并发,解决高并发的方案

    java高并发 如何解决 什么方式解决 一 什么是高并发 二 高并发的解决方法有两种 三 追加 一 什么是高并发 1 1 高并发 High Concurrency 是互联网分布式系统架构设计中必须考虑的因素之一 它通常是指 通过设计保证系统