web服务集群解决方案
性能指标(解决方案)性能指标(解决方案) 本平台的性能指标包括: ➢按可以支持 5000 家商户的规模,每个商户2000 用户,1000 万用户使用 ➢并发 500 个/秒的用户同时访问 ➢系统可支持日均订单 1 万单以上处理能力 ➢日均 IP:支持日访问量 10 万 IP 左右,峰值可达到 15 万 IP ➢日均 PV:支持日均 50wPV,峰值可达到 70wPV ➢存储容量:300 万注册会员、商品数达3 万件 ➢高峰时期系统响应时间控制在3 秒之内 ➢防止大流量用户访问对系统造成的系统响应速度慢、直接系统宕机等严重后果 为满足以上性能要求,我公司采用在采用Nginx、Tomcat集群、Mysql 集群等技术。 下面我们将系统分为 Web 集群(应用层)和 Mysql 集群(数据存储层)来介绍该项目框 架。 整体拓扑图:整体拓扑图: 用户访问 Web服务器集群 配置服务器和数据库集群 内容服务器 便携电脑 Web服务器集群 Mysql服务器集群 WebWeb集群(应用层)集群(应用层) :: Web 应用层主要通过 Nginx 和 Tomcat实现。 NginxNginx:: Nginx 是一个高性能的 HTTP 和反向代理服务器, 也是一个 IMAP/POP3/SMTP 代理 服务器。具有非阻塞、事件驱动、单线程模式、主管理进程 +多工作进程模式、轻量级和高 度模块化等特点。 TomcatTomcat集群:集群: Tomcat 是一个小型的轻量级应用服务器,,Tomcat集群是将多个 Tomcat系统连接到 一起, 使多台服务器能够像一台机器那样工作或者看起来好像一台机器。 采用集群系统通常 是为了提高系统的稳定性和网络中心的数据处理能力及服务能力。 核心内容:核心内容: 一、负载均衡: 使得不同的客户访问不同的服务器。 Client ObjectClient Object Request1 Request1 Target ObjectTarget Object Client ObjectClient ObjectRequest2Load BalancerLoad BalancerRequest2Target ObjectTarget Object Request3 Request3 Client ObjectClient ObjectTarget ObjectTarget Object 多个客户端同时发出请求,位于前端的负载均衡器根据特定算法,将请求分担给比较空闲的机器,从而实 现较高的性能和较好的扩展性 二、失效备援: 识别有问题的服务器,并将其断开。 Target ObjectTarget Object 1 Client ObjectClient Object 1 2 2 Target ObjectTarget Object Load BalancerLoad Balancer 当客户端连续向某个服务器发出请求时,该服务器可能处理到一半就宕机了,失效备援系统能够检测出问 题的服务器,将后续的请求转发至其它可用的机器,从而实现容错功能 拓扑图:拓扑图: 外网访问Nginx负载均衡Tomcat服务器基础数据 Nginx负载均衡服务器 内容服务器 访问设备 备用Nginx负载均衡服务器 数据库集群 原理: Nginx 负载均衡服务器是一台可以处理 5 万并发连接的代理服务器,根据不同域名、 URL,将请求分发到不同后端服务器进行处理。同时,Nginx 服务器具有较高的监控功能, 当某台 Tomcat服务器出现问题时,会自动将其断开。 Tomcat集群是由多台 Tomcat服务器组成, 负责接收并处理 Nginx 分发过来的用户请 求并做相应处理,并将处理结果或数据传递给数据存储单元或用户。 Tomcat服务器既可以 单独负责整个业务处理流程, 也可以处理由其他客户端传递过来的请求 (例如:当客户端连 续像某个服务器发出请求时, 服务器可能出现处理一部分请求之后出现宕机等异常, 这时请 求会被转发到其它的服务器进行处理) 。 在此负载均衡集群中,用户通过外网设备访问系统。所有用户请求均会经过Nginx 负 载均衡服务器, 经过 Nginx 服务器处理分发至不同的Tomcat服务器。 Tomcat接收用户请 求并进行相应数据处理, 将处理结果返回用户或存入数据库中。 所有的代码都存放在内容服 务器上,内容服务器提供文件共享,集群机通过cifs 方式映射为 web 目录,这样便于统一 管理和即时同步。 MysqlMysql 集群(集群(MySQLCluster MySQLCluster )) :: 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 部署在 同一台服务器上。 结构拓扑图:结构拓扑图: 应用层 SQL层NDB层MGM层 SQL1 NDB1 MGM SQL2 NDB2 MGM1 原理: 应用层(