大型网站架构演变过程:
[Step1]web server与数据库分离
web动静资源分离
静态请求:如html, js, css, img
动态请求:如jsp, php
[Step2]缓存处理
客户端(浏览器)缓存
前端页面缓存(squid) 页面片段缓存ESI(Edge Side Includes) 本地数据缓存 [Step3]web server集群+读写分离
负载均衡:
前端负载均衡
应用服务器负载均衡
数据库负载均衡 [Step4]CDN、分布式缓存、分库分表
分布式缓存
目前流行分布式缓存方案:memcached、membase、redis等,基本上当前的NoSQL方案都可以用来做分布式缓存方案
分库(垂直分区)
分表(水平分区shard)
[Step5]多数据中心+分布式存储与计算
技术点[DFS、Key-Value DB 、 Map/Reduce ]
![]() DFS分布式文件系统,如:Lustre\HDFS\GFS\TFS\FreeNas等
Key-Value DB,也作为NoSQL解决方案,如:BigTable\Tair\Hbase\HyperTable等 Map/Reduce算法(计算框架),基本上现有NoSQL数据库中都支持此算法。 提供完整解决方案:
大并发服务器架构:
![]() ![]() 垂直分区:比如用户表、业务表、基础表各有各自的读写数据库。
水平分区:比如用户表、业务表、基础表各有1000条记录,则水平分割分布在10对读写库。
服务器性能杀手:
1、数据拷贝:(缓存,不是指分布式缓存,指的是服务器内部的,如从内核拷贝到应用层的缓存)
2、环境切换:(理性使用多线程)单核(使用状态机编程效果最佳),多线程能够发挥多核服务器最佳性能
3、内存分配:(内存池)减少向操作系统申请内存的次数
4、锁竞争:(通过逻辑尽量减少锁的使用,或者锁的竞争)
|
|