- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大型LAMP应用研发
大型LAMP应用研发 2009-09-20 上海 陈浩 Haohappy PHP中文手册译者 Zend Framework中文手册译者 (Team Leader) 《PHP程序设计》、《PHP对象、模式与实践》译者 8 年LAMP研发经验,开发过多个大型互联网应用 小调查 开发/运营站点规模 100万 pv/天 500万 pv/天 1000万 pv/天 1亿 pv/天 什么是大型应用 没有严格定义 1000万 pv/day 挑战 应用逻辑较复杂 系统负载高 对系统稳定性要求较高 研发周期较长 内容 系统架构设计 研发过程管理 运营数据统计、监测与预警 系统架构 软件应用架构 硬件架构 二者需要综合考虑 不同规模的应用采用完全不同的架构方案 软件应用架构 分析需求,划分业务逻辑 按一定的层次化结构来设计软件架构 分层的思想 Layered Software Architecture 表现层 领域层 数据源层 如何分层并非一成不变,视实际情况而定 常见WEB开发框架 实际应用结构(示例) 硬件/物理架构设计 WEB应用架构演变 通常情况下,一个站点总是由小发展到大,整个架构有一个演变过程。 研究这个过程的每一个阶段,找出该阶段的问题、瓶颈及解决方案,对于我们理解和确定最终的设计方案有极大帮助。 单台服务器(One Box) 访问量小 Apache/MySQL/PHP 同一台服务器上 - 系统瓶颈 通常出现在数据库而不在apache/php Disk I/O (Innodb) 或锁等待 (MyISAM) 单台服务器(One Box) 两台服务器(Two Box) 流量变大,一台撑不住 Apache/PHP 放在服务器A, MySQL 服务器 B 系统瓶颈 MySQL 服务器 (Innodb) Disk I/O MyISAM 数据表 锁 Network I/O Two Box 多台服务器,数据库同步 Many Boxes with Replication 更大流量 数据库读写分离 (master IN/UP/DEL, slaves SELECT) SELECTs, IN/UP/DEL 操作对应的服务器需要在应用程序配置及代码中指定 !(软件架构与硬件架构设计的结合) 可以开始考虑使用负载均衡 Many Boxes with Replication Slave 访问太慢! 数据库Slave服务器 大量的读操作 同步时的写操作 问题 页面上有些内容显示很慢--用户尝试刷新。。。导致Slave更加繁忙,问题更加严重 Slave 访问太慢! 读操作过多 解决方案 数据缓存 memcached (程序配合)把较小数据量的部分数据,频繁读取的数据放入内存 Slave服务器 使用负载均衡 Slaves with Load Balancer 使用负载均衡的好处 添加、删除Slave,不需要改写应用程序代码 多了一个监控点,可以统一错误处理 可以方便地计算系统的负载能力 (只要知道每一台Slave的负载能力) QPS Benchmark 硬件性能评测 缓存设计 动态数据请求/action=getnameuser=haohappy/action=getallusersbygroupgid=3memcached, file 静态数据请求/user/haohappy/avatar.gifreverse-proxy (Squid, Varnish), CDN 动态数据缓存 Memcached高性能的分布式内存缓存服务器 使用缓存 快 极大减轻数据库服务器负载 Memcached 首选 注意点 多级缓存 区分核心数据与周边数据按数据活跃度来存放缓存 分布算法 缓存持久化 Memcached 将数据放在内存,非持久化 Tokyo CabinetMikio Hirabayashi开发的一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒 访问快,持久化 兼容memcached协议,程序代码可以不作修改 备份,转移数据方便 自带命令 性能只是比MM略差一点,但没有自动过期算法 使用数据缓存的坏处 额外的代码 例如,更新缓存数据 静态数据缓存 CDN 把存储量有限,但带宽流量很大(可达数百G规模)的页面静态数据放入CDN系统 WEB Server的负载均衡 NginX Nginx的负载均衡是一个基于内容和应用的七层交换负载均衡的实现。 同时Nginx也可作为Http服务器。 E.g. Fastcgi+PHP Nginx的负载均衡实现比较简单易用,但检测服务器健康状态效果不好 HAProxy
文档评论(0)