我正在尝试编写客户端 - 服务器应用程序。
基本上,有一个Master程序需要维护一个MySQL数据库来跟踪服务器端的处理,
和一个Slave程序,它查询数据库以查看如何与Master保持同步。可以同时有很多奴隶。
所有程序必须能够在世界任何地方运行。
目前,我已尝试在托管数据库的共享托管服务器上设置MySQL数据库
为主服务器和从服务器制作C ++程序,使用CURL库向位于我的托管服务器上的php文件(例如:www.myserver.com/check.php)发出请求。
主程序每秒调用一次URL,并执行一些PHP代码以使数据库保持最新。我使用单个从属程序进行测试,该程序每秒调用一次URL并执行查询数据库的PHP代码。
然而,使用该设置,我的网站托管服务商暂停了我的帐户,并告诉我我'使用了太多的CPU资源'而且我需要使用专用服务器(每月200美元,而不是10美元)来分析所需的CPU资源。那是一个Master和一个Slave,所以每秒不超过5-6个MySql查询。那么10个奴隶会怎么样??
我错过了什么吗? 是否有比我计划使用更好的设置,以实现两个和更远的程序之间我需要的同步机制?
答案 0 :(得分:1)
我会使用Google App Engine来存储数据。您可以阅读有关免费配额和定价here的信息。
答案 1 :(得分:1)
我认为您正在采取的同步方法可能很好。
您需要问自己的一个更重要的问题是,可接受的同步之间的最长可接受时间是多少?如果您确实需要实现虚拟实时同步在世界相对站点的两个数据库之间,您将使用重要带宽,不幸的是,您将不得不支付,正如您的主持人指出的那样。
根据时间计算出您可以接受的内容。数据库只能每分钟同步一次吗?每5分钟一次?
此外,在快速连续运行同步时,务必确保您没有重叠同步:在同步发生之前,请测试同步是否已在进行中且尚未完成。如果仍然发生同步,则不要启动另一个。如果没有发生同步,请执行一次。这将防止大量不必要的开销和同步发生在彼此之上。
答案 2 :(得分:1)
您使用的是共享网络托管服务商吗?您正在做的事情听起来像是对共享(cPanel类型)主机的过度使用 - 而是使用VPS。根据规范,您可以获得512M的非管理VPS,10-20USD pcm。
编辑:如果您的瓶颈是CPU而不是带宽,您是否尝试在事务中捆绑更新?假设您每秒获得10次更新,并且您认为您对传播延迟为2秒感到满意。不是为20个语句打开连接和事务,而是在每两秒执行一次的事务中将它们捆绑在一起。这将大大降低您的CPU使用率。