Hello!
2014-02-14 23:24 GMT-08:00 nzzlds:
> 要追求极致性能肯定是写C模块了。无论怎么JIT,动态跟静态,GC跟手动,差别还是很大的,进出VM边界也存在相对较高的开销。
这里的差别一般在微秒级(注意,不是毫秒!) :)
由于我同时开发过纯 C 的 nginx module 和基于 ngx_lua
的应用。真实应用场景下的整体差别经常是可以忽略不计的(当然,对于 MySQL 这样的复杂协议,差别会略大一些,但我仍在不断缩小这里的差别)。
> 但是!这种应用场景Lua写就行了,JSON的编码解码由cjosn代劳,IO由nginx代劳,真正由Lua管的其实不多。而且以我经验,就算访问量很大,也是数据库端先垮,否则如果瓶颈在Lua,PHP,Ruby等等没法混了。。。
>
这里其实取决于你的数据库后端的吞吐能力。比如我在淘宝量子统计的时候,后端是规模很大的 MySQL 集群,所以两三台前端机如果使用
PHP/Ruby 啥的,肯定是前端先完蛋。类似地,如果后端 MySQL
集群中有一台机器超时严重,那也会影响所有的用户,因为前端的吞吐能力是瓶颈。
另外,即使是小规模型的数据库集群,当查询缓存的命中率极高时,前端也很容易成为性能瓶颈 :)
Regards,
-agentzh