《构建高性能Web站点》笔记三(第13章到第18章)

第13章 共享文件系统
网络共享
共亨文件系统的实现,常用的有NFS和Samba,其中NFS主要用于UNIX/Linux,Samba设计初衷用于将UNIX/Linux的文件硬是到Windows网上邻居中

共享文件系统存在单点故障,我们需要考虑将文件复制到其他服务器上


第14章 内容分发与同步
实现复制有主动分发和被动分发,都是基于tcp
主动分发可使用ssh和WebDAV实现

对于ssh,php有scp扩展和sftp扩展可实现
ssh传输文件操作
<?php
    $conn=ssh2 connect("10.0.1.201" , 22);
    ssh2_auth_password($conn ,"user". "pwd" );
    ssh2_scp_send($conn , "/home/user/list.htm" , "/home/user/list.htm",0644);
?>

sftp对远程服务器文件系统操作,如创建目录、删除文件
<?php
    $conn=ssh2 connect("10.0.1.201" , 22);
    ssh2_auth_password($conn ,"user". "pwd" );
$sftp=ssh2_sftp($conn);
ssh2_sftp_mkdir($sftp,"/home/user/newdir",0666);
?>

多级分发
由于目标服务器较多,并且部署在不同地域,分发过程会持续较长时间,这会造成一部分目标服务表现较大的内容更新延迟 ,为此,我们可以考虑进行多级分发

WebDAV
WebDAV 完全基于HTTP,它的定且方式与 RESTful 风格十分接近,SVN就是使用WebDAV实现

被动分发可使用rsync
对于少量文件的同步 ,rsync的表现基本上无可挑剔,但是对于大量的文件,情况便不那么乐观
事实上在大多数时候很多文件并没有更新,为什么不把少量文件的更新标记不断地传递到上一级目录呢,这样便可以让扫描且程少走很多直枉路.
此时可用Hash tree+inotify

反向代理服务器实现分发,这种动态同步是基于标稚的HTTP


第15章 分布式文件系统
文件系统有MogileFS 或 Hadoop 等,他们都提供相应api给php操作很方便

存储节点和追踪器
首先 , 在分布式主件系统中,所有的文件都存储在被称为存储节点的地方,一个存储节点往往对应物理磁盘上的一个个实际目录
比如在 MogileFS 中的一个存储节点位置如下:/data/mogdata/dev3

多个副本的负载均衡
追踪器的一个重要工作是扮演存储节点的访问调度器,实现存储节点的负戴均衡,这使得存储节点可以非常容易地进行水平扩展 .
<?php
$mg = new MogileFS () ;
Smg->connect('10.0.1.200 ' , 6001 , 'htm1.domain');
$key="index";
$mg->put("/data/www/htdocs/index.htm" , $key , ' all');
$mg->close();
?>

异步复制
MogileFS使用异步的方式进行文件复制,不会阻塞应用程序

存储节点和 WebDAV
MogileFS存储节点的默认服务端程序mogstored通过 WebDAV 实现文件复制


第16章 数据库扩展

mysql复制
开启主服务器的binlog日志
在主服务器和从服务锦上分别进行简单的配置和授权

读写分离
1、可在代码层控制
2、使用数据库反向代理如MySQL Proxy,通过 LUA 脚本来描述转发规则

垂直分区
业务拆分,如博客数据和好友数据分别放在不同数据库中

水平分区
将同一数据库中的记录通过特定的算法遂行分离
实例:
<?php
$db = new DataAccess($user_id);
$db->selectDb("db_blog");
$tbl_name = getTblName($user_id);
$sql = "select * from " . $tbl_name . " where post_id=" . $post_id;
$result = $db->query($sql);
?>

分区和分表
事实上,在考虑分区之前,我们一艘会对数据库边行分表,他们的思路都是相同的,比如
对于刚才的 tbl_posts表,我们按照 user_id%10将它分为10个数据表
分发只是单台数据库的优化策略 , 一旦到了必须考虑扩展的时候,分区 便派 上用场,


第17章 分布式计算
异步计算:
分布式消息队列Gearman、MemcacheQ、rabbitmq
Gearman是一个开源产品,可实现远程函数调用、异步计算,同样也提供api给方便php调用
运行gearmand 的 Job Servcr 实际上便是某种意义上的分布式消息队列服务
异步计算:
<?php
require_once 'Net/Gearman/Worker.php';
$servers=array('10.0.1.200:4730');
$worker=new Net_Gearman_Worker($servers);
$worker->addAbility('SendMail');
$worker->beginWork();
?>

并行计算
1、分而治之
2、Map/Reduce
Map/Reduce 是一种分布式并行计算的开发框架, Google 用它来实现很多产品中海量数据的计算,Job Server进行调度,Worker Server进行计算


第18章 性能监控
实时监控:Nmon+Nmon Analser
监控代理:SNMP
系统监控:Cacti,可用来监控 CPU 使用率、系统负载、内存使用率. 网络I/O 、磁盘I/O 、 磁盘使用率等
服务监控:比如 apache可使用基于 HTIP 的 mod_status 模块
晌应时间监控:监控宝


系统监控:Cacti

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值