这次咱们从根源聊:16招搞定高并发架构设计( 五 )

为了一致性考虑需要做悲观锁处理,这个时候我们就可以考虑开辟一块所谓的缓冲区,专门用于数据处理,处理好之后把指针指向新的缓冲区,再回收使用老的区域做持续处理,就像JVM中的From和To区域来回倒腾,这也算一种缓冲使用。

面向数据读取优化

比如微博的实现在发微博的时候找出大V下一定数量的活跃的在线粉丝,比如5000个,直接把微博写入他们的关注微博列表中去(推数据过去),这样在那些粉丝刷新自己微博首页的时候就能更快(不用去关联拉数据了)。

又比如许多时候我们会做所谓的固化视图的工作,在写入数据的时候就直接写为我们之后要读取的复杂数据结构(比如数据需要Join N个表才能获得的,在写入的时候就直接组成这样的数据写到数据表)。

或者可以说我们做哈希结构,做B树索引,做倒排索引都是这样的思路,使用一些有利于我们之后读取、查询和搜索的数据结构来加速数据的读取(虽然写入的时候耗时多一点,并且需要占用额外的空间)。

数据预读取

推荐阅读