关于各地区并发高的解决思路

各位同仁,目前各地区云平台的因非冠病毒引发的学生大量使用,对云平台的并发能力要求极高。单台服务器应对教师用户是完全可以通过优化解决的,但如果再加上十几倍的学生用户,就不是一台服务器可以处理的事情了。经分析,我个人认为主要的矛盾点在于MYSQL数据库的压力太高,究其原因有两个:
(1)研发人员没有很好的通过缓存对数据库进行保护,造成大量查询穿透。
(2)数据库到目前为止,没有横向扩展的能力。

第一个原因历史很久,短时间内无法根本解决,目前只能通过技术方案+堆硬件服务器(注意:最好是多台物理服务器,如果是虚拟服务器,在CPU运算和IO处理上可能还会存在瓶颈,需要向各地区明确提出要求,我司在实验时可能VM进行实验。)的方式对数据库进行平行扩展。

思路如下:

(1)将主库通过主从复制方法,改造成1拖N方式。参考资料如下:
    MariaDB 10.3 主从复制
    https://blog.51cto.com/aimax/2123440
        这个以前云平台有过相关的实验经历,实施起来难度不大。

(2)现阶段需在要代码层面修改读写分离,不太现实,云平台的终端较多,比如Openresty+Lua,Jfinal,WinForm,Python等等,全面改造几乎不可能完成。可以考虑尝试使用mycat数据库中间件进行实验尝试,一旦OK,马上可以上线,成本低。
        参考资料:
        mysql之20分钟用mycat搞定mysql读写分离
        https://www.seoxiehui.cn/article-18669-1.html
        成本估算:搭建实验,预计需要一天的时间,对于云平台部署多套进行相应实验,预计两到三天的时间,即四天左右会有准确的答案,目前个人对于此方案保持乐观态度。特别需要指出的时,由于数据库平行扩展,对应的sphinx引擎也是每台mysql单独配置一个sphinx引擎,并且通过sphinxse的方法通过mysql协议进行调用。

原文地址:https://www.cnblogs.com/littlehb/p/12271900.html

时间: 2024-08-03 20:35:41

关于各地区并发高的解决思路的相关文章

磁盘I/O很高的解决思路

介绍 磁盘IO突然很高是运维人员经常碰到的问题,这是由于有大量的磁盘读和写造成的,通常发生在数据库身上,然而发生的场景各种各样.本文举几个例子阐述解决思路. 正文 找到是什么程序在大量的进行读写操作.可以通过监控软件(如zabbix)或工具(如atop)查看磁盘IO的历史记录. 本文假设场景发生在xen虚拟机上,在母机上用iostat查看IO状态 # iostat -xdk 2 输出如下: Device:         rrqm/s   wrqm/s     r/s     w/s    rk

cpu高负载解决思路

服务器上tomcat启动之后,使用top查看cpu使用率,竟然达到200%,虽然服务器配置有8核,但是业务量一大,扛不住滴.于是,通过以下方法排查问题: 1.查看占用cpu高的进程数: 根据top命令,发现PID为14586的Java进程占用CPU高达200%,出现故障. 通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题.但是,怎么精确到问题所在呢? 首先显示线程列表: ps -mp pid -o THREAD,tid,time 找到耗时最高的线程id为:1

提升高并发量服务器性能解决思路

刚刚在网上淘了一个提升高并发量服务器性能解决思路,个人感觉非常不错,给大家分享出来,希望给您有所帮助. 提升高并发量服务器性能解决思路 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有

高并发,执行耗时短的任务,还有低并发,执行耗时长的任务,各自选取什么样的线程池比较合理?为什么?如果业务场景是高并发,且任务耗时长时,有什么解决思路?

线程池的关键点是:1.尽量减少线程切换和管理的开支: 2.最大化利用cpu.对于1,要求线程数尽量少,这样可以减少线程切换和管理的开支:对于2,要求尽量多的线程,以保证CPU资源最大化的利用. 所以对于任务耗时短的情况,要求线程尽量少,如果线程太多,有可能出现线程切换和管理的时间,大于任务执行的时间,那效率就低了:对于耗时长的任务,要分是cpu任务,还是io等类型的任务.如果是cpu类型的任务,线程数不宜太多:但是如果是io类型的任务,线程多一些更好,可以更充分利用cpu.所以:高并发,低耗时的

Java多线程与高并发:高并发解决思路

Java多线程与高并发:高并发解决思路 小玲子之凌空蹈虚关注 122018.11.21 09:55:30字数 1,553阅读 4,228 來源:http://www.wangtianyi.top/blog/2018/05/11/javaduo-xian-cheng-yu-gao-bing-fa-liu-gao-bing-fa-jie-jue-si-lu/ 缓存并发 image.png 当大量请求访问同一个没有被缓存的数据的时候,会发送大量请求给数据库,导致数据库压力过大,还会导致一致性问题,所以

.Net高并发解决思路

转自: 本文如有不对之处,欢迎各位拍砖扶正.另源码在文章最下面,大家下载过后先还原一下nuget包,需要改一下redis的配置,rabbitmq的配置以及Ef的连接字符串.另外使用的是CodeFirst,先update-database生成数据库后再进行操作 高并发 高并发一直是网站上线后会遇到的一个严峻的考验,渡过了一切都好,渡不过就是宕机. 在电商时代如此发达的今天,高并发无此不在双十一 .618.双十二,还有雷猴王的某米手机抢购.首先我们要分析高并发究竟会给我们开发者带来什么样的挑战 大量

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

之前我将高并发的解决方法误认为是线程或者是队列可以解决,因为高并发的时候是有很多用户在访问,导致出现系统数据不正确.丢失数据现象,所以想到的是用队列解决,其实队列解决的方式也可以处理,比如我们在竞拍商品.转发评论微博或者是秒杀商品等,同一时间访问量特别大,队列在此起到特别的作用,将所有请求放入队列,以毫秒计时单位,有序的进行,从而不会出现数据丢失系统数据不正确的情况. 今天我经过查资料,高并发的解决方法有俩种,一种是使用缓存.另一种是使用生成静态页面:还有就是从最基础的地方优化我们写代码减少不必

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

对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧. 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步    1.同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到 返回的值或消息后才往下执行其它的命令. 异步,执行完函数或方法

java中高并发和高响应解决方法

并发不高.任务执行时间长的业务要区分开看: 假如是业务时间长集中在I/O操作上,也就是I/O密集型的任务,因为I/O操作并不占用CPU,所以不要让所有的CPU闲下来,可以加大线程池中的线程数目,让CPU处理更多的业务. 假如是业务时间长集中在计算操作上,也就是计算密集型任务,这个就没办法了,和①一样吧,线程池中的线程数设置得少一些,减少线程上下文的切换. ③ 并发高.业务执行时间长,解决这种类型任务的关键不在于线程池而在于整体架构的设计,看看这些业务里面某些数据是否能做缓存是第一步,增加服务器是