正如笔者在其它博客中所论述的,本人一直在想,中国及全球的客户在快速增长,我如何才能更好地扩展他们的网站,而又能够保持其原有功能简单易用。我还撰写了另一篇博客,论及如何监控“从复制”的延迟,重点谈论了如何使用缓存来管理标记分配和控制网站负荷。

关于如何解决该问题,笔者还有另一想法,基本上就是通过会话实现读/写分离,若用户有所更新,可在某段时间内将其引向主数据库读取数据。

用户在进行更新操作时(如,变更密码、上传图片或发布新博客)极其关心系统的读延迟问题。对于此类用户而言,冗长的从库读取延迟确实会带来系统问题。

那么,使用会话系统呢?就像在Memcache/Redis中,在用户上次更新时,进行会话标记,也就是说,在用户上次变更重要数据时,对其会话加以标记,效果会如何呢?

这样,所有含有此重要数据的网页都可在会话层上,检查更新的时间戳,如果是最近更新的,比如说前一分钟的更新,网页便可直接连接主数据库读取数据,要不然,所有的读取数据的操作都在从数据库上进行。

这样不但极大地提高了用户体验,而且对系统影响很小,因为就算有延迟的话,其它读取数据的用户,在数秒内也能看到更新的内容。理想的情况就是:许多进行更新操作的用户,会把内容添加进来,然后通过邮件或短信形式通知其朋友去查看变更内容,这需要花几分钟的时间,但是数据很可能依然存储在缓存系统中。

该解决方案简单易用,而且适用于所有类型的数据,包括缓存中不常储存的数据,如密码以及站点中小型或罕见的功能性数据。

结论:尽管这些动态数据管理解决方案略显复杂,但却能够极大地提高用户体验,而且对系统负荷影响很小,仅需变更少量代码。