我早些时候在Stack溢出时问过这个问题,但是一个用户建议我在这里问它,因为这个网站与数据库相关的问题更相关。
我制作了一个Android应用程序,在这个阶段我不提它的名字。它通过LAMP上的with服务与中央MySQL数据库同步,这也是我创建的。一切都很好,没有任何问题。当用户使用该应用程序并执行某些操作时,来自他们设备的数据将被上传到运行在数据中心的中央服务器上。当其他移动设备与数据库同步时,它们将使用更新的数据进行更新。在初次安装时,app通过几百次查询下载了几百K的数据。
现在的问题是,该应用程序已经开始获得如此多的下载,我可以预见,我将无法跟上同步。一段时间以来,我一直在优化安卓端和网络端的代码( iPhone版本还在开发中),也使用缓存技术,但仍然有数千台手机设备和一个数据库之间的通信达到了极限。每天下载的次数都比前一天多。现在,我非常担心如何处理这种情况。
我一直在研究亚马逊DynamoDB的使用情况,还浏览了它的SDK、教程等,并准备花几天时间将整个同步功能切换到亚马逊。但这最终会让我付出沉重的代价,我将不得不为这款应用收费,或者使用更好的广告方案。但这是另一个问题。
不幸的是,谷歌搜索了几个星期,并没有帮助我找出如何有效地处理数千台移动设备之间的大型同步,这些设备可能会有数万台,甚至几十万台。
简而言之,让我们说,如何处理使用我的应用程序的100 K设备,并且需要与中央数据库保持同步?
如果你遇到过类似的情况,并知道如何在现实生活中处理,请回答。
提前谢谢。
发布于 2012-03-20 04:35:46
我没有使用DynamoDB的经验,所以我能做的最好的就是提供一些关于优化的提示,以便在托管的MySQL世界中寻找。
如果您正在运行MyISAM表,那么至少要确保您的key_buffer_size能够容纳index_length (或.MYI文件的大小)。
考虑让奴隶建立在不同的物理数据中心遍布全国/世界/任何适用于你的人口。负载平衡连接到最近的连接。(这假设流量首先被路由到这些位置的前端,否则问题可能只会恶化)。
https://dba.stackexchange.com/questions/15283
复制相似问题