web服务集群解决方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
性能指标(解决方案)
本平台的性能指标包括:
➢按可以支持5000家商户的规模,每个商户2000用户,1000万用户使用
➢并发500个/秒的用户同时访问
➢系统可支持日均订单1万单以上处理能力
➢日均IP:支持日访问量10万IP左右,峰值可达到15万IP
➢日均PV:支持日均50wPV,峰值可达到70wPV
➢存储容量:300万注册会员、商品数达3万件
➢高峰时期系统响应时间控制在3秒之内
➢防止大流量用户访问对系统造成的系统响应速度慢、直接系统宕机等严重后果为满足以上性能要求,我公司采用在采用Nginx、Tomcat集群、Mysql集群等技术。下面我们将系统分为Web集群(应用层)和Mysql集群(数据存储层)来介绍该项目框架。
整体拓扑图:
Web集群(应用层):
Web应用层主要通过Nginx和Tomcat实现。
Nginx:
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。具有非阻塞、事件驱动、单线程模式、主管理进程+多工作进程模式、轻量级和高度模块化等特点。
Tomcat集群:
Tomcat 是一个小型的轻量级应用服务器,Tomcat集群是将多个Tomcat系统连接到一起,使多台服务器能够像一台机器那样工作或者看起来好像一台机器。采用集群系统通常是为了提高系统的稳定性和网络中心的数据处理能力及服务能力。
核心内容:
一、负载均衡:
使得不同的客户访问不同的服务器。
多个客户端同时发出请求,位于前端的负载均衡器根据特定算法,将请求分担给比较空闲的机器,从而实
现较高的性能和较好的扩展性
二、失效备援:
识别有问题的服务器,并将其断开。
当客户端连续向某个服务器发出请求时,该服务器可能处理到一半就宕机了,失效备援系统能够检测出问
题的服务器,将后续的请求转发至其它可用的机器,从而实现容错功能
拓扑图:
数据库集群
原理:
Nginx 负载均衡服务器是一台可以处理5万并发连接的代理服务器,根据不同域名、URL ,将请求分发到不同后端服务器进行处理。同时,Nginx 服务器具有较高的监控功能,当某台Tomcat 服务器出现问题时,会自动将其断开。
Tomcat 集群是由多台Tomcat 服务器组成,负责接收并处理Nginx 分发过来的用户请求并做相应处理,并将处理结果或数据传递给数据存储单元或用户。Tomcat 服务器既可以
单独负责整个业务处理流程,也可以处理由其他客户端传递过来的请求(例如:当客户端连续像某个服务器发出请求时,服务器可能出现处理一部分请求之后出现宕机等异常,这时请求会被转发到其它的服务器进行处理)。
在此负载均衡集群中,用户通过外网设备访问系统。所有用户请求均会经过Nginx负载均衡服务器,经过Nginx服务器处理分发至不同的Tomcat服务器。Tomcat接收用户请求并进行相应数据处理,将处理结果返回用户或存入数据库中。所有的代码都存放在内容服务器上,内容服务器提供文件共享,集群机通过cifs方式映射为web目录,这样便于统一管理和即时同步。
Mysql集群(MySQL Cluster):
MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster存储引擎,允许在1个Cluster中运行多个MySQL服务器。在MyQL5.0 及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的Cluster。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。
实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MySQL 服务器集成。它包含一组计算机,每个都跑一个或者多个进程,这可能包括一个MySQL服务器,一个数据节点,一个管理服务器和一个专有的一个数据访问程序。
优点:
多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。扩展性很好,增加节点即可实现数据库集群的扩展。冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。实现高可用性的成本比较低,不象传统的高可用方案一样需要共享的存储设备和专用的软件才能实现,NDB 只要有足够的内存就能实现。
原理图:
MySQL从结构看,由3类节点(计算机或进程)组成,分别是:
管理节点:用于给整个集群其他节点提供配置、管理、仲裁等功能。理论上通过一台服务器提供服务就可以了。
数据节点:MySQL Cluster的核心,存储数据、日志,提供数据的各种管理服务。2个以上时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢。
SQL节点(API):用于访问MySQL Cluster数据,提供对外应用服务。增加API 节点会提高整个集群的并发访问速度和整体的吞吐量,该节点可以部署在Web应用服务器上,也可以部署在专用的服务器上,也开以和DB部署在同一台服务器上。
结构拓扑图:
原理:
应用层(web集群)访问数据库的请求经过负载调度层分发处理传递给客户(SQL)节点,并通过客户(SQL)节点访问Cluster数据的节点。对于MySQL Cluster而言,客户端节点是使用NDB Cluster 存储引擎的传统MySQL服务器,用于保存Cluster的数据。管理(MGM)节点用于管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。