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性能更好更适合做大型网站”真是有点无理取闹!
分享到:
相关推荐
Shared-Nothing MPP Databases with Distributed User-Defined Functions Versus Hadoop/Map-Reduce for Large Data Analytics
本文提到的“Shared-Nothing”架构是一种分布式数据库架构,其核心设计理念是每个节点拥有自己的处理器、内存、存储和操作系统,节点之间通过网络连接,但不会共享任何计算资源。 Shared-Nothing架构的分布式数据库...
本文献《SQL-on-Hadoop: Full Circle Back to Shared-Nothing Database Architectures》由Avrilia Floratou、Umar Farooq Minhas及Fatma Özcan三位来自IBM Almaden研究中心的研究员共同撰写。该文探讨了SQL在Hadoop...
为了改善这些问题,本文提出了一种新型架构的交换机——空分共享内存交换机(Space Partitioned Shared Memory Switch,简称SPSMS)。SPSMS交换机的设计理念是对传统共享内存架构进行空间分离,即为每个输出端口分配...
CPU Shared_register_architecture_for
外国专利参考: Shared_register_architecture_for
This book explains the forces behind this convergence of shared-memory, message-passing, data parallel, and data-driven computing architectures. It then examines the design issues that are critical ...
MPP (also known as a shared nothing architecture) refers to systems with two or more processors that cooperate to carry out an operation - each processor with its own memory, operating system and ...
Open认证和Shared认证是两种常见的无线网络接入认证方式,它们主要用于确保只有授权的设备能够连接到无线网络,保护网络安全。以下是对这两种认证方式的详细解释。 Open认证,也称为开放系统认证,是一种相对简单的...
This book explains the forces behind this convergence of shared-memory, message-passing, data parallel, and data-driven computing architectures. It then examines the design issues that are critical ...
5. **同步与异步操作**:SharedObject提供了同步和异步两种保存数据的方式。同步操作会阻塞当前线程直到数据保存完成,适合数据量小且不影响用户体验的情况;异步操作则在后台进行,不会阻塞用户界面,适用于大量...
Linux系统安装MySQL-shared-5.6.29-1.linux_glibc2.5.x86_64.rpm。
此外,`shared_ptr`还支持拷贝构造和赋值操作,拷贝或赋值时,所有`shared_ptr`实例都会共享同一个引用计数,这样可以确保只有在没有`shared_ptr`指向目标对象时才释放内存。 在C++中,`shared_ptr`通常用于替代...
在Windows环境下配置Apache与PHP集成时,可能会遇到一个常见的错误提示:“LoadModule takes two arguments, a module name and the name of a shared object file to load it from”,这通常出现在Apache的配置文件...
Laravel开发-shared Laravel框架。
maven-shared-utils-3.2.1.jar
"rw-shared"就是这样一款专为前端开发者设计的开源代码库,它旨在提供一系列可复用的组件和工具,以实现前端应用的高效共享与协作。 "rw-shared"库的核心目标是实现代码的共享,这通常意味着它包含了多个模块,这些...
在内存架构方面,统一内存架构(Unified Memory Architecture)和共享内存一致性(Shared Memory Coherency)是两个重要概念。统一内存架构使得CPU和GPU可以访问同一块物理内存,简化了内存管理。共享内存一致性则...
在给定的压缩包 "ffmpeg-shared-3.3.3-20160116-win64-shared.7z" 中,包含了FFmpeg 3.3.3版本的共享库(shared libraries),这是针对Windows 64位平台编译的。这个版本在Visual Studio 2015环境下已经过测试,可以...
Poco::SharedLibrary是Poco库提供的与操作系统动态链接器/加载器交互的接口。通过它,开发者能够加载、查询符号地址以及卸载共享库。 - **头文件引入**:首先需要包含`Poco/SharedLibrary.h`头文件。 - **基本...