【初识,非常好】互联网技术

0.优化网页速度

服务器 <-> 网络 <-> 浏览器  

1.为什么要用多个服务器

单个服务器的处理方式:

  a)先求页面信息,再频繁的要处理图片,js,html,css各种请求。服务器一个一个请求,整个过程会很忙

  b)而且每台电脑的最大请求量是有限制的。就是每台client的 浏览器同时发送的请求是有限制。

  c)所有内容都从一台服务器获取,过程会很慢(比如:百度网盘要下载很多文件夹的资料,你必须下载单个文件夹(会非常快1mb/s),如果30个文件夹的内容一起下,那就只有100k/s的速度,因为要先搜索每个连接的东西,数据包等等,解析等,会非常慢)

  一台服务器要做不同的解析。再做大批量请求的处理,肯定会非常慢。

  所以图片放在img.xxxx.com  放在不同服务器

  d)loadbalance用dns智能解析。根据ip推测离client最近的服务器。 比如用户在上海,服务器有上海和四川的,根据ip智能查找挑最近的上海的服务器

    i)所以要做 css和js的压缩

    ii)图片的话用定位方式。  但首先 先把要用到的所有图片弄到一张图:怎么操作呢?css sprite软件

    iii) 360浏览器挺好的,直接右键属性能看到图片的url

2.静态内容 用shtml静态页面好,速度快(静态就是非动态的,不用和数据库交互),比如我管你要张图片,或者视频,跟不要cookie和session等

  a) 更高级静态用到cdn加速

3.cookie是不跨域的。 

  a)img.xxx.com 不能访问www.xxx.com

  b)访问img.xxx.com的cookie不用提供给www.xxx.com主页, 从而节省流量

4.SSI Server Side Includes(服务器端生成静态页面), 服务器端页面拼接的技术,速度快,不涉及到数据库,并且有利于cdn  

  a)比如 网站里的 有一个今日新闻(xxx老师求婚男学生),10万个人访问就要10万次连接数据库。但其实不论是你看这条新闻,奥巴马看这条新闻,还是谁谁看新闻,不都是同样的内容吗。 所以为什么要查询10万次数据库呢。 把这个新闻内容存到服务器,每次用户看就读出来(生成静态页面shtml,不用每次查询数据库)  

  简单说:就是这条新闻单独在服务器生成了一个页面shtml, 服务器压力就小很多了。

5. 大型网站里一定不只有一种技术

  1)并不是我这个网站是windows做服务器的,那所有的解决方案都是windows的。

    a)一般现在.net,Linux + Ngix做 前段的反应代理和负载均衡  后端用windows服务器

    b)甚至有些公司用Mono 将windows跑在Linux上

6.为什么大型网站访问那么快:CDN网络技术

  1)如果静态页面改变了,一般cdn网页缓存5分钟, 5分钟内访问的都一样。 也能手动刷新,提供全网刷新,所有cdn服务器都刷新。

    高级的cdn还能带API刷新,主站修改了,通过API告诉所有的cdn刷新。

    一般就用5分钟自动刷新,一般没什么问题。

距离:我和你是偏远地段就会慢。比如我们就在楼上楼下,但你是铁通,我是电信,就是偏远地段。

伪静态页面也会优化:识别的是1.html地址,服务器会真正的看出你是静态还是伪静态。但是cdn只能识别地址。

   2)  http://host.zzidc.com/zhujiwenti/466.html 伪静态的好处 优点

    阿玛的博客:伪静态的好处 优点

    http://www.cnblogs.com/ambon/articles/5607422.html 

7. 网页卡的问题

  a)所有人都卡:问题太多, 代码、网络传输等

  b)只要有一个人不卡  就不是服务器的问题、网络的问题

    i)小部分卡: 少数客户属于小运营商的, 或者偏远地带(偏远不是物理上的,你是铁通,我是联通也会产生偏远地带的卡)

    ii)大部分卡:服务器放的机房 属于比较偏僻的地方, 机房卡

8.大型网站服务器架构

9.缓存技术

 redis 一般做状态保存,比如loadbalance里所有服务器 

把session放入单独的服务器中,而不是各自服务器的内存中 : 比如loadbalance里所有服务器 集群 存入的session都放入redis, 当然如果压力太大,访问量多,redis也可以有集群

选择Memcached还是Redis

 http://www.cnblogs.com/ambon/articles/5607571.html

 

10. 反向代理

 有些loadbalance服务器就也会含有反向代理, 类似中间的路由,任何请求在去web服务器之前会经过他,然后由他再指向webserver,还具有缓解服务器请求过多的压力。要是client登录系统要花1分钟,他是一直占着网络宽带的,而服务器在同一时间内,比如一分钟可能并发只有5000个链接,如果5000个用户都是比较慢的响应(网络非常差),那1分钟就只能有5000个连接,如果正常用户点击登录,服务器有反应只有1秒钟,那1分钟内就能有,60*5000个用户可以并发。反向代理,把5000个用户发给webserver, webserver处理好直接丢还给反向代理,接下来处理另外的5000个连接,反向代理可以慢慢的传递给client

 

11. 数据库 比 webserver更脆弱

  所以静态的,大同小异的数据,基本都用缓存技术先取出来,比如第一个请求会连接数据库,取出要的1万条数据,然后顺便存放在缓存内。接下来的10秒内,任何请求都访问缓存内的数据(先判断缓存内有无数据),10秒后缓存自动删除,如果10秒后又有请求,同上。

  因为数据库其实是比 webserver更脆弱的。 缓存更快速(就像硬盘和内存的区别, 数据库拿到请求要像数据库、硬盘里、磁道里查询数据,sql不好更会table scan。 但是查询完了放大webserver里,是已经查好的数据,或者表,直接访问等于直接去取数据,非常快)

  

posted @ 2016-06-22 10:57  阿玛  阅读(108)  评论(0)    收藏  举报