在完成本系列的第1部分之后,你的服务器现在可以水平扩展了,你已经可以处理数千个并发请求了。但在这条路上的某个地方,您的应用程序变得越来越慢,最终崩溃。原因是:您的数据库。它是MySQL,不是吗?
现在所需要的改变比添加更多的克隆服务器更为激进,甚至可能需要一些大胆的尝试。最后,你可以从两种路径中选择:
路径#1是坚持使用MySQL,让“怪兽”继续运行。雇佣一个数据库管理员(DBA),告诉他做主从复制(从slave读取,向master写入),并通过添加RAM,更多RAM的来升级主服务器。在某些月份,您的DBA会想到“分片”、“非正规化”和“SQL调优”这样的词,并会担心接下来几周的必要加班。在这一点上,每一个保持数据库运行的新操作都将比前一个操作更昂贵和耗时。如果您在数据集仍然很小且易于迁移时选择了Path #2,那么情况可能会更好。
路径#2意味着从一开始就去正规化,在任何数据库查询中不再包含任何join。你可以继续使用MySQL,并像使用NoSQL数据库一样使用它,或者你可以切换到更好、更容易伸缩的NoSQL数据库,如MongoDB或CouchDB。join现在需要在应用程序代码中完成。越早执行这一步骤,将来需要更改的代码就越少。但是,即使你成功地切换到最新和最好的NoSQL数据库,并让你的应用程序做数据集连接,很快你的数据库请求将再次变得越来越慢。您需要引入一个缓存。
引用:
https://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database