PHP的发明者Rasmus Lerdorf同时也发明了SNA(shared nothing architecture)的概念
什么意思呢?
对Web Servers做scaling时如果将session等状态保持在各个节点上,这样状态的复制就很成问题,所以SNA告诉你在节点上不要保存状态,session这种东西可以存在数据库或内存缓存中嘛,然后cookie或URL中带一个加密string用来查询session状态就可以完美解决session状态了。
但显然这给数据库增加了压力,但是数据库的scaling能力比Web Servers做session复制要好多了。况且我们在数据库前加一memcached将大量的数据库Reads的工作做了,而数据库只用处理数量不多的Writes工作,这大大提高了系统的性能。每个Web Server节点里不用cache,而是外部分布式memcached或session server,这同时避免了cache-coherence问题。
PHP默认就是SNA的,所以许多人就天真的认为PHP比Java、ASP.NET的scaling能力要好。而Java、ASP.NET默认允许分享数据允许缓存,所以需要程序员自己处理哪些情况下使用SNA,It’s easy to write non-scalable software on those platforms.
所以说PHP的fans们不要再在自己用甜言蜜语构建的城堡里安然自得了,看看Wikipedia上Scalability的定义:
Scalability is the capability of a system to increase performance under an increased load when resources (typically hardware) are added.
简单的说,Scalability是与开发环境开发语言没有丁点关系的,所以说“PHP性能更好更适合做大型网站”真是有点无理取闹!
什么意思呢?
对Web Servers做scaling时如果将session等状态保持在各个节点上,这样状态的复制就很成问题,所以SNA告诉你在节点上不要保存状态,session这种东西可以存在数据库或内存缓存中嘛,然后cookie或URL中带一个加密string用来查询session状态就可以完美解决session状态了。
但显然这给数据库增加了压力,但是数据库的scaling能力比Web Servers做session复制要好多了。况且我们在数据库前加一memcached将大量的数据库Reads的工作做了,而数据库只用处理数量不多的Writes工作,这大大提高了系统的性能。每个Web Server节点里不用cache,而是外部分布式memcached或session server,这同时避免了cache-coherence问题。
PHP默认就是SNA的,所以许多人就天真的认为PHP比Java、ASP.NET的scaling能力要好。而Java、ASP.NET默认允许分享数据允许缓存,所以需要程序员自己处理哪些情况下使用SNA,It’s easy to write non-scalable software on those platforms.
所以说PHP的fans们不要再在自己用甜言蜜语构建的城堡里安然自得了,看看Wikipedia上Scalability的定义:
Scalability is the capability of a system to increase performance under an increased load when resources (typically hardware) are added.
简单的说,Scalability是与开发环境开发语言没有丁点关系的,所以说“PHP性能更好更适合做大型网站”真是有点无理取闹!