标签:
最近又把《大型网站技术架构》看了一遍.而中间读了一本《计算机操作系统》的教材后,感觉对大型网站的技术架构有更深的了解。在此结合对这两本书的理解做一些笔记
传统的OS(Operator System)有四个基本的功能:
a) 进程控制
b) 进程同步
c) 进程通信
d) 调度
a) 内存分配
b) 内存保护
c) 地址映射
d) 内存扩充
a) 缓冲管理
b) 设备分配
c) 设备处理:设备处理器又被成为设备驱动程序
a) 文件存储空间的管理
b) 目录管理
c) 文件的读/写管理和保护
架构的演变过程
一、起初的网站直接用LAMP(Linux+Apache+MySQL+PHP)部署在一台服务器上
这样会造成:
综上所述:
除此之外,还有一些其他的问题.例如网络宽带等
如我的博客服务器上行100k/s ,10个人就没人10K,2M的图片就得20秒,如果100人的话..
综上所述,需对单一服务器进行分开部署:
通过分开部署.每台服务器都发挥自己的特长,大大提高了效率
而衡量一个网站的优越性,经常会考虑到一下五点
a) 加载页面时,将静态文件部署到CDN第三方供应商服务器.以减少向服务器请求资源.
b) 使用缓存.命中资源便立即返回,减少数据库读取操作(磁盘读取数据的速度比缓存慢N倍)
c) 采用分布式.不同业务采用单独的服务器分开(避免请求集中化)
d) 进行分布式集群.通过负载均衡算法把请求分发到集群服务器中的某台(一般用nginx反向代理服务器进行集群)
e) 分布式缓存.让所有的缓存集中在这些专门做缓存的服务器(如redis)
f) 将数据库的读写分离.(后期业务做大还有分库的可能)
g) 采用消息队列(也就是异步)把次要的事件加到消息队列不用等待返回结果立即响应用户.最典型的例子就是12306的订单邮件提醒,一般买到票后好一段时间后才收到.这就是把邮箱提醒功能加到消息队列中
a) 对于用户而言,网站7*24小时可用不间断.这个是理想状态,一般来说4个9(99.99%)就差不多了
b) 任意一台服务器的宕机都不会造成网站不可用.并且集群服务器之间有互相备份的功能,任何一台服务器宕机后不会影响应用的整体可用或者导致数据丢失
a) 当增加功能时只是增加开放接口,而不会对原有的功能产生影响,达到松耦合的效果
b) 增值性业务的拓展.也是不会影响到其他业务
c) 网站可收缩性的主要手段是事件驱动架构和分布式服务
a) 向集群中增加或减少服务器的时候可以平滑过渡.用户的请求依然可以高命中.
所以缓存路由算法非常重要(一般来说会用nginx负载均衡.的用轮询算法.像哈希求余等效果不好)
a) 能够防御XSS攻击
b) 脚本注入的方式
c) 发无效的源地址tcp包
标签:
原文地址:http://www.cnblogs.com/zewen/p/5891340.html