在实际应用中,除了用 SCP 来传输文件,我们还需要对远程服务器进行必要的文件系统操作,比如创建目录、删除文件等,前面提到了 SFTP,我们可以在 PHP 中轻松地操作它,如下所示:
<?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); ?>
通过 SFTP,我们可以对远程服务器的文件系统进行任何操作,就像操作本地的文件系统一样,当然,前提是你必须拥有合法的权限。
多级分发
在较大规模的站点中,我们可能需要将文件复制到更多的服务器上,比如我们拥有 200 台静态内容服务器,它们通过 LVS 和DNS 等混合方式实现负载均衡,并且分布在不同地域的 IDC 中,对于任何静态内容的更新,我们都需要快速地更新到这 200台服务器上。<!--V型知识库 www.vxzsk.com-->
显然,直接将文件从文件服务器分发到 200 台 Web 服务器很容易产生以下问题:
1,由于目标服务器较多,并且部署在不同地域,分发过程会持续较长时间,这会造成一部分目标服务器表现出较大的内容更新延迟。
2,大量消耗文件服务器的本地系统资源,当分发任务较多时,本地会产生大量进程阻塞,影响其他任务的正常运行。
为此,我们可以考虑进行多级分发,如图所示
图 3-2 静态内容的多级分发
这样一来,文件服务器将很大一部分工作量巧妙地转移到了更多的 Web 服务器上,并且可以充分利用地域就近分发策略,一些 Web 服务器可以更快地将文件转发给同地域的其他 Web 服务器。
实现这样的多级分发并不困难,即便是无法开发专用的分发软件,你仍然可以基于一系列的开源产品进行快速构建,比如:
通过 HTTP 请求来触发某台 Web 服务器启动某文件的分发; Web 服务器使用异步的方式进行文件分发,分发采用前面提到的 SSH 扩展,分发结束后根据需要通知下一级进行分发。
对于异步方式,我们会在后面关于分布式计算的章节中进行介绍。另外,对于以上的多级文件分发,我们应该将用于分发的网络进行最大程度的流量隔离,使它不要消耗 Web 服务器的 WAN 带宽。一般而言,对于跨地域或者跨 IDC 的文件分发,除非使用专线,否则必须通过 WAN 来进行,而对于同一 IDC 内的文件分发,我们完全可以根据需要来组建 LAN,实现分发流量隔离
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程