文档章节

《构建高性能web站点》读书笔记

stefanzhlg
 stefanzhlg
发布于 2014/08/29 16:25
字数 2028
阅读 63
收藏 0

一,分布式缓存
     1,数据库的前端缓存区
          文件系统内核缓冲区
               读缓存区
               写缓存区
     2,使用memcached
          key-value
               *key-value存储  取决于你如何查询这些数据
               *基于key的hash算法来设计存储数据结构(内存分配器) O(1)
          数据项过期时间
               淘汰机制基于LRU(Least Recently Used)算法,淘汰最近不常访问的数据项。
               memcached的PECL扩展  设置数据项过期时间。
          网络并发模型
               memcached使用libevent函数库来实现网络并发模型
          对象序列化
               抽象数据类型–》二进制字符串
     3,读操作缓存
          重复的身份验证
               cookies—>ticket
          数据库索引
          缓存用户登录状态
               memcached
     4,写操作缓存
          直接更新
          线程安全和锁竞争  不鼓励 慢
          memcached提供的原子递增操作
               $count  = $memcache->increment($page,1);
     5,监控状态
          $stats = $memcache -> getStats();
          空间使用率
          缓存命中率
          IO流量
          cacti监控系统监控memcached
     6,缓存扩展
          并发处理能力和缓存空间容量
          从功能/服务器—–》域名/服务器—–》根据key取余分布到缓存服务器
二 web负载均衡LB Load Balance
     1,思考
          工作量分配
          风险管理  备用
     2,HTTP重定向
          熟悉的镜像下载  做到重定向较近的服务器
          RR策略下的性能
               mod_rewriter顺序调度的性能总是比不上随机调度的性能。
          –根据SNMP分析原始数据并计算服务器流量来均衡
     3,DNS负载均衡
          多个A记录
               轮询设置
          扩展能力和可管理性
          智能解析  解析ip访问最近的服务器
          故障转移  动态域名解析
     4,反向代理负载均衡
          转移和转发
          按照权重分配任务
               Nginx,Apache,Lighttpd负载均衡调度器
          扩展的制约
               随着后端服务器的增加 到达一定的数量时,代理服务器几乎等于两台相加.
               对于这种情况更适合使用前面介绍基于DNS的负载均衡方式.
          健康探测
               Varnish
          粘滞会话
               转发到不同的服务器,可能有用户的session及一些动态内容缓存。
               —》调度器识别用户 ip
               HAProxy和NginX
               将服务器id加入用户cookies中
               为了充分利用本地化缓存,可以将同一个URL的请求始终转发在同一台特定的后台服务器。
               如果允许的话尽量采用分布式Session和分布式缓存,让后端服务器的应用尽量与本地无关。
     5,ip负载均衡 四层负载均衡
          DNAT  反向网络地址转换
               NAT服务器的动作欺骗了实际服务器,总以为用户是直接发给自己的。
          Netfilter/iptables
               linux内核有能力修改数据包
          用iptables来实现调度器
          IPVS/ipvsadm
          性能
          动态调度策略
          网关瓶颈NAT
               基于NAT的集群和DNS-RR使用。
               高额带宽还是其他方案—-》LVS的DR
     6,直接路由
          实际服务器的响应数据包将直接发送给客户端,而不经过调度器。
          使用IP别名
               一台机器能使用256个ip别名
          将实际服务器接入外部网络
               将调度器设置成和实际服务器一样的ip别名
          LVS-DR
               不经过调度器,减NAT压力
     7,ip隧道
          ip Tunneling  它是将调度器收到的ip数据包封装成一个新的ip数据包,然后
          实际服务器的响应数据包可以直接到达用户端。
          LVS-DR和LVS-TUN都适合请求和响应不对称的web服务器。
     8,考虑可用性
          备用实际服务器,HeartBeat测试主调度器,可以接管主调度器。

三,内容分发与同步
     1,复制
     2,ssh实现文件复制,主动分发方式。(FTP,POP,SCP,SFTP)
          SCP传输文件
          SFTP对远程服务器的文件系统进行操作
          多级分发   解决分发到大量不同地域的服务器所产生的时间按较长,更新内容延迟,大量消耗文件服务器的本地系统资源。
                         组件LAN,实现分发流量隔离。
     3,WebDAV 主动
          利用HTTP扩展协议WebDAV实现分发
     4,rsync 被动
          同步的时候必须扫描被同步目录中的所有文件,并根据最后修改时间和本地进行对比。
               大文件数据量不容乐观。
     5,Hash tree
          文件的更新标记,从文件到上一级目录。。。。
          linux内核中的inotify模块可以帮助我们完成上一级目录时间更新。
          尽量权衡目录深度。
     6,分发还是同步
     7,反向代理

四,数据库扩展
     1,复制和分离
          主从复制
               从的增加 增加了主的磁盘压力,采用多级复制策略,想多级分发一样。
          读写分离
               所有的更新操作,必须让它作用域主服务器上,才能保证数据库服务器上数据一致。
               所以采用读写分离方法,读从,写主。
               应用程序可以取法读写操作但是读操作分散到多台从服务器上,就不那么擅长了。
               那就是用数据库反向代理。
          是用数据库反向代理
               MySQL Proxy   当大量的从服务器时,瓶颈效应产生,怎么办呢。
     2,垂直分区
               把不相干的数据库比如博客数据库和好友数据库分开。
               但是当单一的博客数据库达到瓶颈的时候,该怎么办呢:
     3,水平分区
          把数据放在不同的分区中    
               表分区
          分区和分表
               分区; 哈希算法,范围,映射关系
          分区扩展
          分区反向代理
               Spock Proxy可以帮助应用程序水平分区的访问调度,不需要应用程序中维护那些分区对应关系了。

五,性能监控
     1,实时监控
          Nmon   实时监控软件
     2,监控代理
          监控远程服务器
          可以利用SNMP来完成,但是不能监控http并发连接数。幸运的是NginX提供了必要的HTTP监控接口、
     3,系统监控
          Cacti采用RRDtool作为监控数据的存储引擎,专门支队绘制坐标图而设计的存储格式。
     4,服务监控
          Apache中基于HTTP的mod_status模块
     5,响应时间监控
          监控宝 www.jiankongbao.com
         


         

fastCGI

epoll :
epoll 是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它不 会复用文件描述符集合来传递结果而迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被 侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的 电平触发(Level Triggered)外,还提供了边沿触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。

优点:
     支持一个进程打开大数目的soket描述符。
     IO效率不随FD的数据增加而线性下降。
    
常见的web负载均衡方法:
     1,用户手动选择方式
     2,DNS轮询方式
          可靠性低:其中一台服务器发生故障,所有的访问该服务器的请求将不会有所反应。
          负载分配不均衡
     3,四/七层负载均衡设备
     4,多线对地区智能DNS解析与混合负载均衡方式

HTTP Upstream模块
     1,ip_hash  
               down
     2,server
     3,upstream  轮询

© 著作权归作者所有

stefanzhlg

stefanzhlg

粉丝 65
博文 110
码字总数 85559
作品 4
浦东
程序员
私信 提问
用骆驼祥子读书笔记来解答ZBLOG博客写作的3个技巧[图]

建设博客已经半年了,准确的说应该是7个月了吧,虽然没有取得什么好的进展,但毕竟一直在努力,主要是内容建设上比较麻烦,很难像大站一样获得大量的内容,这是非常头疼的问题。 总之,个人也...

原创小博客
2018/07/11
0
0
百家笔记网为什么选择采用读书笔记为博客写作主题?

百家笔记网已经上线6个月了,这个博客一上线就引起了我的注意,因为我也是个博客网站,而且更加巧妙的是,都是读书笔记为主题,也算是同道中人吧。那么,为什么百家笔记网在半年内取得了这么...

原创小博客
2018/06/30
0
0
我的 2017 年度盘点

一、Core Topics Learning based on full English. Operating System Kernel & Dynamic tracking & Go Programming Language. Lincoln Foundation & Absolutism Research. 二、年度成果 2.1 ......

RiboseYim
2017/12/30
0
0
构建高性能站点系列文章目录

由于构建高性能站点文章比较多,所以整理成目录方便阅读。 构建高性能站点系列文章-服务器性能(一) 构建高性能站点系列文章-服务器性能(二) 构建高性能站点系列文章-浏览器缓存 构建高性能站...

wwww6662003
2014/05/05
0
0
ASP.NET Core 2 High Performance 目录和读书笔记

ASP.NET Core 2 High Performance 大概的翻看了一下这本书,这本C# 7 and .NET Core 2.0 High Performance内容要好很多,这里先放出对应目录,有兴趣的朋友,可以到中国最大IT盗版书网站里找...

yahle
2018/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
34分钟前
1
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
35分钟前
2
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
47分钟前
2
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
50分钟前
1
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
56分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部