nullnullxizhu
2010年3月LAMP
架构
酒店人事架构图下载公司架构图下载企业应用架构模式pdf监理组织架构图免费下载银行管理与it架构pdf
简介目录目录LAMP概述
基于B/S的Web系统三层体系
什么是LAMP
LAMP的组成体系
System: Linux/Unix
Server: Apache
Storage: MySQL+Memcached
Script: PHP/Perl/Python
经典LAMP架构网站分析
几种网站架构比较
PHP简介
PHP的发展历程
PHP的企业级应用
全球使用PHP的网站
PHP的运行环境
PHP的开发环境
PHP的生产管理系统
PHP的缺点和前瞻
参考资料
基于B/S的Web系统三层体系基于B/S的Web系统三层体系软件开发 C/S or B/S
C/S:Client/Server
B/S:Browser/Server
B/S架构的特点
客户端要求低
可维护性很高
数据安全性高
实时交互性好
B/S架构的三层体系
分层式
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
:分散关注、松散耦合、逻辑复用、标准定义
界面表现层
业务逻辑层
数据存储层
LAMP:LAMP是什么?LAMP:LAMP是什么?LAMP是什么?
基于开源产品的Web架构:1998年,Michael Kunze为德国计算机杂志c‘t写了一篇关于Free软件如何成为商业软件替代品的文章时,创建了LAMP这个名词
LAMP由Linux 操作系统、Apache Web服务器、MySQL数据库和PHP(Perl或Python)脚本语言四种技术的开头字母组成
根据PHPChina资料统计在Alexa排名中国前200名的网站中有61%的采用了LAMP架构,包括腾讯、百度、雅虎、新浪、搜狐、Tom等一大批网站
LAMP架构已成为互联网行业的一盏真正的明灯
LAMP的组成体系:SystemLAMP的组成体系:SystemSystem
L: Linux,包括但不限于Linux,我们认为可以泛指各种Linux/Unix系统,RedHat、Suse、Debian、Turbo、FreeBSD、Solaris…甚至包括了PS3的Yellow Dog Linux和Apple的Mac OS 10.5 Leopard
我们公司主要使用的系统:Suse Linux和Slackware Linux
LAMP的组成体系:ServerLAMP的组成体系:ServerServer
A: Apache,一种占有全球72%市场的开源的Web Server,官方网站 http://www.apache.org 最新版本 2.2.8/2.0.63/1.3.41
最近Pingdom的统计表明,Apache仍然主导全美100大网站(Alexa的排名),占据了49%的市场份额
我们公司主要使用自己研发的Web Server,包括Qhttpd、TWS、QZ_Http、httpsrv等,部分业务使用Apache、Lighttpd、TomCat
LAMP的组成体系:ServerLAMP的组成体系:ServerServer
Web Server软件的使用比例分布LAMP的组成体系:StorageLAMP的组成体系:StorageStorage
M: MySQL,一种开源的关系型数据库,被下载上千万次,2008年2月26日为Sun收购。我们公司绝大部分数据库都是使用MySQL
M: 可以将M的概念扩展到Memcached: Memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
M: 从Memcache扩展到,还有一系列产品,包括MySQL的memcache_engine/memcachedb_engine、MemcacheQ、Sharedance(http://sharedance.pureftpd.org)
M: 可以将M的概念再扩展到Table cache:TencentTableCache ,是一个我司互联网系统平台架构组,提供高速数据访问服务的数据库cache serverLAMP的组成体系:Storage :MemcachedLAMP的组成体系:Storage :MemcachedMemcached
由Danga Interactive开发 http://www.danga.com/memcached/
使用libevent进行网络IO处理,libevent作为一种新的非阻塞网络IO方式以高效的方法(epoll/kqueue)组织IO,分布式散列对象到不同的服务器,查询复杂度是O(1)。
性能特别高,支持多进程和多线程,支持TCP和UDP
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
,支持C、C#、PHP、Perl、Python、Ruby、Java客户端,支持短连接和持久连接。
内存占用少,每个单位的slab和chunk可定制大小
由第三方开发的PHP客户端,和PHP紧密结合,PHP的数组、对象可直接存储,取出时自动还原,数据支持Gzip压缩和二进制传输,并发读写支持CAS(Compare-and-Swap)
大部分PHP的大型站点都在使用:Facebook、Sina、Sohu、Tom、Yahoo、51.com、wikipedia、sourceforge等等, Facebook参与了PHP官方的Memcache扩展函数库开发维护和版本更新
我们现在Qzone门户、活动、城市达人、校园以及QQ会员等项目广泛使用,自行开发了数据管理、数据恢复、状态监控和报警系统,并实现了无缝扩容,无需数据迁移LAMP的组成体系:Storage :TencentTableCacheLAMP的组成体系:Storage :TencentTableCacheTencentTableCache
TencentTableCache:是由腾讯互联网业务系统平台架构部主持开发的基于Table结构进行内存存储、以MYSQL作为最终存储的持久数据层系统,以此作为MYSQL cache组件.其性能卓越超群,数据安全可靠。被广泛应用在包括Qzone平台,校友平台等项目上。
该软件使用epoll来管理网络连接。这时当前效率最高的事件通知机制,在大连接情况下尤其能够发挥威力。
该软件架构设计中,后端数据处理模块是独立的进程(helper进程),这些进程负责存取数据,由watchdog进程来进行监控,可以通过插件支持多种数据源(DB、文件、网络数据源等)。。
TTC 3.0的内存分配算法采用glibc的ptmalloc算法。TTC在ptmalloc基础上稍作修改,譬如内存只在共享内存块内部分配,不会额外mmap;内部只能用偏移量而不是指针等。
该软件使用异步处理机制,多状态的task,Task处理模型就像有穷状态机,不需要大量的进程同步等待回应,所以降低了在进程/线程上下文切换上的开销。LAMP的组成体系:ScriptLAMP的组成体系:ScriptScript
P: PHP,也可以泛指PHP、Perl、Python等解释型脚本语言。截至2008年1月全球有33.24%的网站使用PHP,据统计在Alexa排名中国TOP200的网站中,使用PHP的网站有121个,占60%。在按照行业分类的网站统计中,25个行业的每个行业前10名,共计250个网站中,有102个使用PHP技术,占40% Apache平台上使用的语言比例分布null主流语言增长速度比较LAMP的组成体系:Script经典LAMP网站架构分析经典LAMP网站架构分析几种网站架构的比较几种网站架构的比较null1995199719992000200220042005PHP的发展历程和使用PHP的网站数量图示PHP:PHP发展历程PHP: 填补了企业WEB应用的需求PHP: 填补了企业WEB应用的需求Simple,
but RigidPowerful,
but Complex Portal
FrameworksJava/J2EE
Application
FrameworkService-Oriented Architecture (SOA)GapPHP: 全球使用PHP的网站PHP: 全球使用PHP的网站PHP: 运行环境PHP: 运行环境关于PHP的运行环境,主要有以下五种Web Server,包括Apache、IIS、Lighttpd、Zeus、Nginx
Apache
Apache 2.x版本下提供了Prefork模式和Worker模式,鉴于PHP的第三方扩展函数库很多都是不支持多线程的,所以PHP官方和Zend官方强烈推荐不要使用Worker模式,而是要么继续使用Apache 1.3.x,要么使用Apache 2.x的Prefork模式
在Apache下,可以使用CGI方式、Apache模块方式(mod_php)、FastCGI方式(mod_fastcgi和mod_fcgd)三种方式来运行PHP,其中mod_php最稳定,mod_fcgd性能最高,需要说明的是FastCGI方式运行PHP存在一定风险,经常性会宕掉,无论是mod_fcgd还是mod_fastcgi。目前Linux/FreeBSD/Solaris绝大部分PHP网站使用Apache+Prefork+Mod_PHP方式,包括我们Qzone和QQ会员的所有PHP项目。nullIIS
IIS 5/6/7下,主要有三种方式:CGI方式(php.exe)、ISAPI方式(Windows下)和FastCGI方式,而Windows下目前Zend和微软联合开发推出的基于IIS的PHP FastCGI加载方式是性能最高的,稳定性也很不错。
Lighttpd
Lighttpd下主要使用FastCGI方式(Spawn-FCG)运行PHP,网站部(www.qq.com)一直在使用这个,缺点是稳定性较差,经常挂掉。
Zeus
Zeus是商业软件,使用自带的FastCGI方式来运行PHP,性能是所有运行PHP的服务器当中最高的,远超过Apache和Lighttpd,但稳定性还待提升。
Nginx
Nginx是一款纯静态服务器,需要通过转发的形式,使用Lighttpd的Spawn-FCG或者PHP Build FastCGI来以FastCGI方式运行PHP,这种方式性能很高但是稳定性较差,目前有很多新的项目采用这一方式,包括新浪的一些新业务和51.com的很多服务器。PHP: 运行环境PHP: 运行环境PHP: 运行环境PHP WEB SERVER
使用PHP 做开发语言,通过底层PHP扩展的支持.直接运行PHP代码的WEB SERVER
select /epoll两种接入模型。
提供多worker+监控进程方式.支持,runtimes,动态进程调度等相关机制.
Qzone校友,第三方应用项目使用.
facebook等项目开发过类型组件.PHP: 加速器PHP: 加速器PHP的加速器:
在Linux下的加速器包括PHP官方的APC、第三方的eAccelerator(基于MMCache)和XCache(以上三款都是免费的)、商业的Zend Platform(基于Zend Perormance Suite / Zend WinEnabler,PHP代码加速和缓存结合了Zend Accelerator和Zend Cache)和ionCube Accelerator。
其中官方的APC稳定性和功能都还不错,目前在Qzone校友等项目中使用,eAccelerator在sina很多项目和QQ会员中使用,Zend Platform在百度。
PHP的加速主要包括:
PHP文件的编译,这个过程中把PHP程序中include/require的程序连接进来、常量/宏替换、代码优化合并等等,最后编译成二进制中间码opcode
PHP opcode的Cache,这里大部分加速器都可以支持,将
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
Cache到物理内存,超过限额也会cache到服务器本地文件。
PHP程序动态内容输出的Cache,这个功能仅在Zend Platform里支持,可以单独设置对某个目录/文件的内容输出进行Cache(请求的方式GET/POST等以及Cache时间、扫描文件变更时间都可以设置)PHP: 高级优化PHP: 高级优化PHP的FATMM:
改造了PHP Zend MM 内存管理机制,将小块内存申请调用,变为初始化申请大块内存,在使用时,直接从预先申请的内存里分配空间。大块内存不够时,可动态申请,并动态管理大块内存.
其中需要改造PHP源码,使用补丁方式,替换ZEND API里, _emalloc, _free等函数,改补丁由Facebook开发维护.
目前在Qzone校友等项目中使用。
HipHop for PHP:
实现了将PHP代码转换为高品质C++代码,然后用G++编译成可执行的二进制文件,从而大幅减少服务器CPU和内存消耗
实现了PHP的跨请求持久化对象,将进程内存变为多线程共享内存,极大减少了内存占用。
采用了类似FatMM的机制,避免了频繁的malloc和free,可设置固定大小的set
Facebook已经有90%的项目使用,同等流量下Web服务器的CPU消耗减少50%、API服务器的CPU消耗减少60%PHP: 其他高级优化PHP: 其他高级优化PHC PHP Open Source Compile:
2005年爱尔兰Trinity College of Dublin的Edsko de Vries和John Gilbert创立,随后同学Paul Biggar加入
RoadSand PHP Compiler (pcc):
支持将PHP代码编译成独立运行的二进制文件,可以将PHP编译成Fast/CGI形式的Web程序、内嵌web server (MicroServer)形式的离线Web应用、使用PHP-GTK的桌面图形界面应用、以及控制台应用软件
RoadSand Raven (rphp):
功能要点:高度优化、JIT或静态编译原生二进制 (通过LLVM)、PHP 代码分级分析和优化、高级诊断和错误信息、模块化设计、干净简洁的runtime和扩展API、完整的unicode支持、可移植性、高速和安全PHP: 开发环境PHP: 开发环境完善的开发环境:ZendStudio调试编写代码性能分析
语法高亮
先进的代码补全功能
支持Web Services
代码折叠
文档引擎
CVS/SVN 客户端支持
数据库访问支持
快速的定位、解决问题
调试时具备断点、监视点设置,察看输出缓冲数据等功能。
客户端/服务器端双重调试
调试简单
快速定位性能问题
记录每一行、每一个函数和每一个文件所占用的时间。
通过统计分析,找到最为耗时的部分。Supports Windows, Linux & Mac OSXPHP: 生产管理系统PHP: 生产管理系统Web服务器生产管理系统: ZendPlatform扩展性能稳定
实时代码优化
代码加速与预编译
完善的缓存解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
下载优化与加速
自带性能测试及分析系统
支持Session数据跨服务器
中心控制台与生产节点相结合的管理模式
事件聚合功能
PHP配置的克隆
基于Web页面的管理平台
实时的监控系统,PHP智能组件
实时的脚本效率与运行性能监控
报告并跟踪实时错误
保存数据现场 (重现错误并保留完整的错误文档)
在线调试
PHP的缺点和前瞻PHP的缺点和前瞻PHP的缺点:
第三方库的多线程支持
Apache多线程模式下运行的稳定性
不支持mmap(目前我们已经实现)
不支持epoll/kqueue(目前我们已经实现)
文件锁机制大并发下有缺陷
面向对象还不够全面(不支持命名空间、方法重载、操作符重载、多重继承)
PHP的前瞻:
PHP的编译:通过Roadsend PHP Compiler(http://www.roadsend.com)将PHP编译CGI/FastCGI、Server、桌面应用
PHP 6.0:Unicode支持
更完善的多线程支持
参考资源参考资源System相关
http://www.suse.com SUSE Linux
http://www.slackware.com SlackWare Linux
http://www.redhat.com RedHat Linux
http://www.debian.com Debian Linux
http://www.ubuntu.com Ubuntu Linux
http://www.freebsd.org FreeBSD
http://www.solaris.com Solaris
Server相关
http://www.apache.org/ Apache
http://www.nginx.net/ Nginx
http://www.lighttpd.net/ Lighttpd
http://yaws.hyber.org/ YAWS
http://www.iis.net/php IIS for PHP
http://www.zeus.com/ Zeus参考资源参考资源PHP相关
http://www.php.net PHP官方网站
http://pecl.php.net PHP的第三方扩展函数库
http://www.zend.com PHP的官方商业支持
http://www.phpdoc.org PHP的注释文档
http://www.phpunit.de PHP的单元测试
http://www.xdebug.org PHP的Debug工具
http://www.eaccelerator.net EA PHP代码加速器
http://xcache.lighttpd.net XCache PHP代码加速器
http://framework.zend.com ZF PHP框架
Memcache相关
http://www.danga.com/memcached/ Memcached
http://memcachedb.org/memcacheq/ MemcacheQ
http://sourceforge.net/projects/repcached/ Repcached
http://pecl.php.net/package/memcache PHP ClientnullThank you!谢谢大家!