企业高并发的成熟解决方案

2024-04-07 11:58

本文主要是介绍企业高并发的成熟解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

高并发初期解决方案:

一、系统或服务器级别解决方案:

①增大服务器的CPU

②增加内存条

③增加硬盘个数,对硬盘做Radis

④换掉免费的tomcat,使用商用weblogic(美国Oracle公司出品的)

⑤增加到二块网卡

⑥聘请系统架构师优化Linux内核

⑦甚至花高价直接购买高性能的服务器

随着业务的不断增加,服务器性能很快又达到瓶颈

二、 应用级别的解决方案

① 网页HTML静态化(需要CMS项目支持)

②图片服务器分离(常用解决方案)

③缓存(常用解决方案)上上策为分布式缓存

④ 镜像(下载较多)

三、解决用户IP多了的办法是?

开始使用DNS:

缺点:虽然循环复用DNS是一个普遍使用的在Web服务器上负载平衡的解决方案,但是,该方式有它自身的缺陷。循环复用DNS将传入的IP请求映射到定义的一系列循环形式的服务器。一旦发生服务器故障,循环复用DNS继续把请求发送到这个故障服务器,一直到把该服务器从DNS中移走为止。这样许多用户必须等到DNS连接超时以后才能成功的访问目的网站。

终极解决方案:

采用负载均衡技术

四 、负载均衡

(1) 负载均衡服务器的三大功能:

 ①转发:在用户请求,转发请求的功能

②故障移除:如果这一台机器挂了,负载均衡服务器不会再把请求转发到这台服务器

③恢复添加:如果这一台机器恢复正常了,负载均衡服务器会把它重新添加回来

(2)负载均衡服务器种类--通过软硬件角度:

①通过硬件来解决:NetScaler、F5、Radware和Array等商用的负载均衡器,它们性能好,但是价格比较昂贵的

②通过软件来解决(反向代理服务器 缓存服务器等),三大软件:

LVS(Linux Virtual Server):最好的软件策略,有备机有主机,无单点问题,国产(阿里章文嵩博士)开源项目,工作在网络四层上

Nginx:Ngnix有”单点故障“的问题,如果挂了,会带来很多的麻烦。到了后期Web服务器继续增加,它本身可能会成为系统的瓶颈

nginx最高支持50000个并发连接数,工作在网路七层上

Apache:web服务器第一,但不是最好的负载均衡服务器,工作在网路七层上

LVS对比NGinx

负载度: LVS KO Ngnix

功能多少:Nginx KO LVS

稳定度:LVS KO Nginx

服务器性能要求:LVS KO Nginx

效率最高的负载均衡技术中,最高的就是IP负载均衡技术。IP虚拟服务器软件(IPVS)是在Linux内核中实现的,LVS就是使用的IP负载均衡技术

(3) 常用的高可用方案(HA)都包括两种机器,LVS:

主机    备机

(4) 常用的服务器

tomcat

weblogic(大公司,追求稳定)

(5) 常用数据库

mysql 、oracle 、mssql

称为高可用(HA)

(6) 高并发发生在两处

① 负载均衡服务器

②数据库

(7) 应用服务器会出现的问题和解决方案

①多台服务器下用户登录了,session是如何共享的

②用户请求一号机器时候产生了session,用户请求二号机时候就没有session了,后果就是程序把用户踢到登录页面

解决方案(三种):

①可以把用户的session放在cookie中

优点:解决了session没有的问题

缺点:session放在了用户的浏览器中,是不安全的

②可以把用户的session放在数据库中

优点:解决了session没有的问题

缺点:网站是一个成千上万用户的网站,如果把session放在数据库中,会造成数据库压力太大,从而使得网站不能正常运转

③可以把用户的session放在缓存服务器中

最好的解决方案是放在缓存服务器中

推荐两种缓存服务器:Memcache、Redis

要求:Memecache、Redis必须是集群

(8) 数据库并发

①要求:随着业务量的不断增大,数据库承载能力也要增大

②要求:数据安全,不能丢失

③要求:支持备份+容灾

(9)Hadoop集群和RDMS之间数据处理流程:

①通过sqoop把关系型数据库的数据导入到HDFS中

②把HDFS中的数据经过MapReduce进行计算及处理

③将处理后的解决数据写回到HDFS文件系统

④把结果数据倒回关系型数据库

⑤将关系型数据库的数据形成报表展示

4.分析完企业整体架构后,开始搭建负载均衡服务器,并演示效果

4.1搭建LVS负载均衡,场景描述:

开启四台Linux系统(Centos6.4)

第一台:负载均衡主机

第二台:负载均衡备机

第三台:真实服务器(http服务器)

第四台:真实服务器(http服务器)

http服务器是Apache公司的服务器,在linux系统上自带的,可以直接使用,方便快捷

4.2 准备开始搭建,搭建成功后,演示刚才说的那三个功能

4.2.1验证功能:

①转发功能

②故障移除的功能

③恢复添加的功能

④主机关了,备机是否接管它的工作

环境:window7 系统

VMware虚拟机,在虚拟机上启动四台Centos6.4服务器

i5cpu  500G磁盘  内存:8G

心跳检测机制

4.2.2 三种IP:

负载均衡IP:所在服务器IP

VIP:LVS这个软件的IP,正是我们要访问的IP

192.168.200.201  访问IP

真实服务器RIP(realIP)

4.2.3 IP分配

149: 负载均衡服务器

150: 负载均衡服务器

151: Http服务器

152: Http服务器

4.2.4  启动Http服务器

启动Http服务器命令:

service httpd start

查看防火墙的状态:

service iptable status

关闭防火墙:

service iptables stop

彻底关闭防火墙:

chkconfig iptables off

Http服务器应该不一样,转发的时候才能知道转发到哪里了

cd /var/www/html/

vim index.html

输入内容: I am http 151,保存退出

然后再两台服务器上添加端口

cd  /etc/init.d/

vim  realserver

粘贴内容,保存退出

chmod 755 realserver

service realserver start

ifconfig查看,如果出现一个虚拟ip(lo:0   192.168.200.201),则说明启动成功

4.2.5 搭建负载均衡主机

安装keepalived软件

uname -a 查看当前机器系统内核

上传keepalived软件到服务器目录下:

安装keepalived软件命令:

rpm -ivh keepalived-版本号

查看软件安装在哪里:

rpm -ql   keepalived-版本号

查找配置文件的位置,然后编辑配置文件:

vim /etc/keepalived/keepalived.conf

> /etc/keepalived/keepalived.conf  (>可以用于清除内容)

vim /etc/keepalived/keepalived.conf,复制配置到配置文件里面,wq保存

149防火墙也要记得关闭

启动服务:

service keepalived start

tail -f  /var/message,查看日志信息

4.2.6 验证三大功能

搭建完成,在浏览器输入访问IP(VIP)查看

 VIP(访问IP)http://192.168.200.201 访问IP

1)转发功能:151  152,发现可以在两台HTTP服务器之间切换

2)故障移除: 把152机器手动关掉,再查看效果

service  httpd stop,访问152出现没法连接的效果

在访问VIP发现始终是访问的151机器,证明负载均衡有故障移除的功能

3) 恢复添加

把152机器再手动启动,再查看效果

service httpd start,发现152重新启动了,再 访问VIP发现可以重新再两台ftp服务器之间切换了

证明:负载均衡有恢复添加的功能

4)负载均衡主机关了,备机是否接管它的工作

搭建备机,150机器上搭建,和上面的步骤一样

配置文件中将state  Master修改成state  BACKUP

搭建备机成功

关闭负载均衡主机149机器,查看150机器是否接管它的工作

service keepalived stop

证明负载均衡主机关闭了,备用机确实接管了他的工作

负载均衡主机备机搭建成功,负载均衡的功能验证通过!


备注:

1.201IP是LVS的IP,访问IP(VIP)

2.LVS比例:权重是可以分配的,上面的演示是1:1

3.http是Centos自带的,用tomcat也是可以的,但是用tomcat,要安装JDK,为了节约时间才选用http服务器的

4.两台tomcat服务器和两台Http服务器使用方法是一样的,就是给Tomcat的默认8080端口改成80端口

5.LVS要安装吗?

不需要安装,LVS linux虚拟机,是linux自带的,要求内核是2.6版本以后就支持了,不需要安装

6.windows下安装是非常不专业的,企业级服务器都是用linux服务器(redHat、centos)

7.LVS主机配置的Master,备机配置的BACKUP

8.通过心跳检查机制检查主机宕机了,然后切换到备机(RPC)

9.主机和备机  属性Master和Backup 优先级

原文地址:http://my.oschina.net/bigdataer/blog/486770

这篇关于企业高并发的成熟解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882538

相关文章

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

SpringBoot3匹配Mybatis3的错误与解决方案

《SpringBoot3匹配Mybatis3的错误与解决方案》文章指出SpringBoot3与MyBatis3兼容性问题,因未更新MyBatis-Plus依赖至SpringBoot3专用坐标,导致类冲... 目录SpringBoot3匹配MyBATis3的错误与解决mybatis在SpringBoot3如果