如何设计高性能、高并发、高可用的系统。 (5)

如何设计高性能、高并发、高可用的系统。

网站初级架构

一般网站,刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署 NFS 文件系统。

这是前几年比较传统的做法,之前见到一个网站 10 万多会员,垂直服装设计门户,N 多图片。

使用了一台服务器部署了应用,数据库以及图片存储。出现了很多性能问题,如下图:

如何设计高性能、高并发、高可用的系统。

但是,目前主流的网站架构已经发生了翻天覆地的变化。一般都会采用集群的方式,进行高可用设计。

如何设计高性能、高并发、高可用的系统。

至少是上面这个样子:

使用集群对应用服务器进行冗余,实现高可用。(负载均衡设备可与应用一块部署)

使用数据库主备模式,实现数据备份和高可用。

系统容量预估

预估步骤:

注册用户数-日均 UV 量-每日的 PV 量-每天的并发量。

峰值预估:平常量的 2~3 倍。

根据并发量(并发,事务数),存储容量计算系统容量。

根据客户需求:3~5 年用户数达到 1000 万注册用户,可以做每秒并发数预估:

每天的 UV 为 200 万(二八原则)。

每日每天点击浏览 30 次。

PV 量:200*30=6000 万。

集中访问量:24*0.2=4.8 小时会有 6000 万*0.8=4800 万(二八原则)。

每分并发量:4.8*60=288 分钟,每分钟访问 4800/288=16.7 万(约等于)。

每秒并发量:16.7万/60=2780(约等于)。

假设:高峰期为平常值的三倍,则每秒的并发数可以达到 8340 次。

1 毫秒=1.3 次访问。

没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)

服务器预估:(以 Tomcat 服务器举例)

按一台 Web 服务器,支持每秒 300 个并发计算。平常需要 10 台服务器(约等于);[tomcat 默认配置是 150],高峰期需要 30 台服务器。

容量预估:70/90 原则

系统 CPU 一般维持在 70% 左右的水平,高峰期达到 90% 的水平,是不浪费资源,并比较稳定的。内存,IO 类似。

以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此 CPU,硬盘,网络等不再进行评估。

网站架构分析

根据以上预估,有几个问题:

需要部署大量的服务器,高峰期计算,可能要部署 30 台 Web 服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。

所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。

大量应用存在冗余代码。

服务器 Session 同步耗费大量内存和网络带宽。

数据需要频繁访问数据库,数据库访问压力巨大。

大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如 JVM 调优;如果调优涉及大量代码改造,就不是调优了,属于重构):

业务拆分

应用集群部署(分布式部署,集群部署和负载均衡)

多级缓存

单点登录(分布式 Session)

数据库集群(读写分离,分库分表)

服务化

消息队列

其他技术

网站架构优化

业务拆分

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfgww.html