最近在做脑图共享网站,一直使用google的云计算服务GAE(google appengine),所以很关注GAE的性能优化方法。
对于GAE的性能,我一直有些怀疑。例如,它的并发访问量,最大能支持多少?
今天终于看到这篇性能优化说明了:
http://code.google.com/intl/zh-CN/appengine/articles/sharding_counters.html
原理很简单:
GAE使用的是面向对象的数据库(BigTable)。一个条目就是一个文件块。每个文件块每秒大约最多允许更新5次,这是瓶颈所在。
绕过瓶颈的方法很简单:将数据储存在多个条目上(用随机选择的方法,保证每个块的负载均衡)。
上面那篇文章里举了两个例子,都是这个意思。第一个例子是基本的方法演示,第二个例子与memcache配合使用,将结果临时储存起来,减少读的次数,进一步提高性能。
这种方法叫做Sharding Counters,理论上可以达到极高的并发处理速度——一般的应用都足够了。