正如笔者在其它博客中所论述的,本人一直在想,中国及全球的客户在快速增加,我如何才能更好地扩展他们的网站,而又可以保持其原有功能简单易用。我还撰写了另外一篇博客,论及如何监控“从复制”的延迟,重点谈论了如何使用缓存来管理标记分配和控制网站负荷。 php
关于如何解决该问题,笔者还有另外一想法,基本上就是经过会话实现读/写分离,若用户有所更新,可在某段时间内将其引向主数据库读取数据。 mysql
用户在进行更新操做时(如,变动密码、上传图片或发布新博客)极其关心系统的读延迟问题。对于此类用户而言,冗长的从库读取延迟确实会带来系统问题。 sql
那么,使用会话系统呢?就像在Memcache/Redis中,在用户上次更新时,进行会话标记,也就是说,在用户上次变动重要数据时,对其会话加以标记,效果会如何呢? 数据库
这样,全部含有此重要数据的网页均可在会话层上,检查更新的时间戳,若是是最近更新的,好比说前一分钟的更新,网页即可直接链接主数据库读取数据,要否则,全部的读取数据的操做都在从数据库上进行。 缓存
这样不但极大地提升了用户体验,并且对系统影响很小,由于就算有延迟的话,其它读取数据的用户,在数秒内也能看到更新的内容。理想的状况就是:许多进行更新操做的用户,会把内容添加进来,而后经过邮件或短信形式通知其朋友去查看变动内容,这须要花几分钟的时间,可是数据极可能依然存储在缓存系统中。 session
该解决方案简单易用,并且适用于全部类型的数据,包括缓存中不常储存的数据,如密码以及站点中小型或罕见的功能性数据。 ide
结论:尽管这些动态数据管理解决方案略显复杂,但却可以极大地提升用户体验,并且对系统负荷影响很小,仅需变动少许代码。 网站
(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文请点此查看)
spa