如果下面的情况是可行的,我想看看。 另外,如果你认为我发现有什么不对,请不要犹豫。
我不得不为三个不同的地点运行3个不同的服务器(不同的服务器提供商)的公司build立一个系统架构模式,并且他们每个服务器托pipe50 ++网站。
所以,现在呢,就是这样的:
server1的:
服务器2:
server(服务器):
Server1有一个很大的MySql数据库,每个其他服务器(server2,server3和included server1)都使用它与远程mysql连接。
所以,
来自server1服务器的MySQL服务器:
域名website1.com下的Server1有一个包含服务器上所有其他网站(包括服务器1)的图像的文件夹,都必须访问它们。
例如:
website1.com使用图片文件image / image1.jpg,同时website2.com和website3.com使用相同的image1.jpg作为http://website1.com/image/image1.jpg
另外,每个服务器上的每个网站都会检查每个文件是否存在。 其实检查是由PHP完成,所以在服务器端。 他们检查图像是否存在本地使用if_file_exist()
和远程if (getheaders() ==200 )
例如
如果访问者尝试访问website1.com,则website1.com(实际上是server1)检查if website1.com/image/image1.jpg exists
。 此外,如果访问者尝试访问website21.com,则网站21(实际上是服务器2)检查if header of http://website1.com/image/image1.jpg == 200
。
所以,
server1上的website1.com/image/image1.jpg访问并检查所有网站是否存在图像:
我的想法是,
最好的情况可能是以下几点:
3个AWS EC2实例作为运行服务器。 1个拥有/ image / folder 1文件夹中的所有文件的AWS S3存储桶1个RDS数据库,服务于3个EC2实例中托pipe的所有网站。
在这种情况下,
一个EC2实例可以从S3存储桶中获取并检查文件是否存在,同一个EC2实例将从RDS获取数据库中的数据。
如果我是正确的,那么从EC2实例检查文件是否存在并从S3中获取的延迟应该是非常低的,因为它应该是通过AWS基础架构“本地”的。
而且由于相同的原因,对共享的RDS的查询应该更快且更安全。
所以,
如果访问者访问website1.com
我们将有以下几点:
website1.com – > EC1实例
website21.com – > EC2实例
是一个可行的scheme? 或者我看到错误?
你有没有看到其他的select?
另外一个select:
通过使用Amazon CloudFront而不是S3,它能够更快地解决问题吗?
编辑
由于以下原因应该进行检查:
image1.jpg是一个图像。 而image1-es.jpg是特定国家ES(西class牙)的专用图片。
换句话说,服务器应该检查是否有来自ES(西class牙)的访问者的图像,如果没有,服务器的一般形象。
你计划可能会工作,但可能不是最佳的。 S3不是一个文件系统,所以你的应用程序可能需要重写才能利用它。 有些软件可以使它看起来有点像文件系统。
你可能会更好使用
服务地区特定的文件是您的软件和亚马逊基础设施的责任。