博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网站的伸缩性
阅读量:5796 次
发布时间:2019-06-18

本文共 1650 字,大约阅读时间需要 5 分钟。

一、两个网站的伸缩性目标

大型网站都是从小型网站逐步演化而来的,Google诞生的时候也只有一台服务器。中航网需要设计成一个能从廉价PC服务器演化成大型系统的架构体系。为了实现网站的伸缩性中航网要设计成以下两个维度的可分离:

1、服务器分离

 

 

 

 

 

每次分离都会有更多的服务器加入网站,使用新增的服务器处理某种特定服务。

2、业务模块分离

 

 

 

 

 

业务分离的粒度要可以非常小, 甚至可又一个关键网页部署一个独立的服务。

二、 网站伸缩性拓扑设计

 

 

 1、硬件防火墙

选用华赛或JUNIPER系列硬件防火墙,主要作用是用来防DDoS和端口映射。

 

2、静态资源服务器

对于图片型等静态内容,前端缓存的意义重大。可以自己搭建CDN系统或租赁别人的CDN。推荐以租赁CDN为主,把更多的资金投入到后端的文件存储和数据库上。

 

3、负载均衡(HAProxy

HAProxy性能优异,稳定性强, 自带强大的监控页面,并且支持动静分离。HAProxy+Keepalived已经实现了亿级/日的网站,并且在高并发的业务时间段也没有发生过宕机情况。

HAProxy在高并发的情况下比较消耗CPU资源,建议使用Dell PowerEdge R710

 

4、Web缓存层

使用Squid作为中航网的Web缓存层。为什么前端已经有CDN缓存,还需要架设一层Web缓层?因为高并发高流量的项目,后端的NFS文件服务器的IO压力是巨大的,有时甚至会发生拒绝提供服务的现象。有了Web缓存层,可以起到加速后端Web服务及减小NFS磁盘IO压力的作用。

5、Web服务器

关于Web服务器的选择,Apache作为服务器,用于电子商务/电子广告/页游网站是非常稳定的,在8GB内存的标准配置下,抗并发能力非常不错的。许多公司的网站架构都是从一台Apache Web服务器发展起来的。

 

6、文件服务器

随着客户越来越多,I/O的压力也会越来越大。这个时候就该考虑分布式文件存储方案。在初期阶段宜采用DRBD+Heartbeat+NFS高可用文件服务器,维护方便,也不存在单点故障。  

随着访问量的增大,后期可以采用MFSGluster。分布式文件系统是解决文件服务器压力过大的最终途径,但也存在缺点,网站功能越多,摊子越大,机器越多,维护起来越复杂。

 

7、Session的处理

Session数据默认是在各个服务器上分别存放的,Apache将请求发送到了集群中的另外一台机器,那么就会导致Session的丢失。所以要采用一台独立memcached服务器来存储整个网站的session数据。

 

不能不session放进mysql, 因为在高流量的网站中, 数据库的压力是非常大的,我们不能让session问题再增加数据库方面的压力。

 

8、数据库的减压

数据库架构采用一主多从,读写分离的方案,用LVS+Keepalived作为数据库的负载均衡器,计写通过程序上实现分离,前后台业务逻辑分离,针对后台的查询全部转到从机器上, 这样就算查询业务量很大也不影响主要业务逻辑。尽量做到以下几点:

l 尽量把用户往外面推,减小源站的压力

l 保证网站的高可用

l 保证网站高可扩展性

l 合理优化数据库

 

三、 实施图纸(PV百万级以下)

服务器用途

数量

型号

软件配置

负载均衡

2

HP380  2Cell, 4GB

Nginx

Web缓存

2

HP380  2Cell,4GB

Squid

Web服务器

2

HP380  2Cell,8GB

apache

数据库服务器

2

HP580  4Cell, 32GB2TB 

mysql

数据库负载均衡

1

HP380  2Cell,4GB

Lvs+keepalive

Session服务器

1

HP380  2Cell,8GB

memcache

文件服务器

1

HP580  4Cell, 32GB2TB

NFS

 

转载于:https://www.cnblogs.com/tingfeng/articles/5120807.html

你可能感兴趣的文章
PriorityQueue详解
查看>>
cogs2060 除法表达式
查看>>
Bzoj2095 [Poi2010]Bridges
查看>>
剑指offer :跳台阶
查看>>
a href=#与 a href=javascript:void(0) 的区别(转)
查看>>
一步一步学Silverlight 2系列(10):使用用户控件
查看>>
一、Linux 安装
查看>>
类型转换和格式化
查看>>
bash arithmatic
查看>>
Visual Studio禁用IntelliSense
查看>>
VisualStudio自动编码插件(Autocode——devprojects.net)
查看>>
socket通信模块
查看>>
mongodb
查看>>
关于sql语句中加 1=1 的条件
查看>>
Android基本控件之GridView
查看>>
模拟淘宝登录,购物车
查看>>
应用highcharts做直观数据统计
查看>>
初识iOS
查看>>
vue-router 快速入门
查看>>
4/17上午
查看>>