您的位置:首页 > 其它

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

2016-08-06 19:46 253 查看
第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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: