3.4、sftp和多级分发

2018年11月05日 10:23 | 32次浏览 作者原创 版权保护

在实际应用中,除了用 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,实现分发流量隔离


此文章本站原创,地址 https://www.vxzsk.com/1917.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程