考虑一个相当大的网站(2M浏览量/ m,很多用户)和2个前端服务器:一个在美国的前端服务器,一个在欧洲.两个专用URL将访问者带到一个服务器上,一个用法语,另一个用英语.两个站点共享完全相同的数据.
什么是最具成本效益的解决方案? (在我公司使用的数据库:MySQL)
1 / Amazon EC2(美国)上的单个主服务器,以及前端服务器上的从属服务器?
>优点:没有master-master rep,意味着没有数据与自动增量和独特列上的重复等冲突的风险.
>缺点:滞后!当你在欧洲时,在美国写作会不会有太多的滞后?
另一个缺点可能是在主模具死亡时缺少快速的脏溶液.那么在同一台服务器上拥有奴隶呢?
2 /两个Amazon EC2实例,一个在美国,一个在欧洲,充当主 – 主复制服务器.每个前端还有两个奴隶?
>高级:数据的速度和安全性.当然没有负载均衡器,但是将主服务器切换到另一个主服务器的方法看起来非常简单.
> Drwbcks:价格.以及DB上的腐败风险
3 /任何其他解决方案?
由于这是我第一次使用两大洲的服务器,我真的很感激您从该领域的经验,包括MySQL或不包括MySQL,包括EC2.
谢谢
马歇尔
解决方法:
像往常一样,我要说的取决于你的应用程序,它如何使用数据库等.你需要问自己:
>如果您使用现成的软件,在这种情况下其他人做了什么?
>应用程序是否需要处理整个数据集,还是可以进行分区?
>您的应用程序是否构建为处理多主复制(通常意味着使用自动增量pk)
>更新/删除冲突的可能性有多大?费用是多少?
>什么是读取:写入比率?写作的本质是什么?它们通常是更新还是附加操作?
我假设法国服务器在欧洲,而英语服务器在美国?如果您可以对数据进行分区,以便法语站点使用一个数据库而英语站点使用另一个数据库,那么您的状况会更好.即使两个站点都访问两个数据库,因为您不必担心冲突.您甚至可以在每个主服务器上运行两个mysql实例,并为两者执行多主机复制.
如果你不能进行分区,我可能会选择#2,但我会将其中一台机器指定为“真正的”主机并将所有写入内容发送给它以帮助避免数据崩溃.通过这种方式,可以轻松切换.
如果您对成本敏感并且无论如何都要在前端服务器上运行副本,只需在前端服务器上运行主数据库.你可以随时把它拉下来.副本通常比拥有相同读取负载的主机具有更高的CPU / IO成本:它们必须以串行方式执行它们的写入,这实际上可以搞砸了.
另外,不要为数据库使用m1.small实例.或者至少留意你的表现. m1.smalls显着不足,如果你看顶部,你会注意到你的CPU时间有很大一部分被虚拟机管理程序窃取.我推荐c1.medium的.