大型互联网应用架构设计.pptxVIP

  • 1
  • 0
  • 约3.32千字
  • 约 33页
  • 2024-01-25 发布于福建
  • 举报

大型互联网应用架构设计

12/5/2010SH

实战架构的演变及使用技术(今天)理论大型系统的核心目标高可用、易扩展与高性能其他相关研发、测试与部署监控

架构的演变一个典型LAMP站点由小到大的成长过程由简单到复杂各阶段面对的技术挑战与处理办法任何大型站点都有一个成长过程;同时,任何大型站点都可以拆分成若干成子系统。架构师必须深刻理解每一阶段的架构异同点及可能的瓶颈所在。

架构的演变-单机OneBox简单WEB应用访问量小Apache/PHP/MySQL在同一主机上瓶颈通常先出现在数据库,然后才是Apache/php硬盘I/O(Innodb)或MyISAM锁等待

架构的演变-双机TwoBox访问量逐渐增大Apache/PHP在ServerA;MySQL在ServerB瓶颈硬盘I/O(Innodb)或MyISAM锁等待网络I/O

架构的演变多机ManyBoxeswithReplication访问量继续增大MySQL主从复制及读写分离(master负责IN/UP/DEL,slave负责SELECT)SELECT,IN/UP/DEL可以在应用程序内指定访问不同服务器(如使用不同的handle或DbAdapter)WEBServer可能需要使用负载均衡

架构的演变-多机ManyBoxeswithReplication

架构的演变-阶段性成果恭喜!你终于拥有了一个可以(勉强?)称得上“大型”的网站!100wPV/day?挑战才刚刚开始!

架构的演变–遇到新问题MySQL1.SlaveLag每台Slave数据完全一样。有的忙,有的闲

2.数据量越来越大,单表过大,查询效率太低;综合1.2.通常采用memcached数据缓存MySQL水平扩展(库表拆分)WebServer负载过高提高PHP代码执行效率OpcodeCache静态文件缓存Squid/Varnish/CDN负载均衡CacheTierWebTierDBTier

架构的演变–系统分层WEBTierCacheTierDBTierFileTier整理思路,总结一下系统架构

架构的演变–系统分层–WebTierMCVD一个常见的PHP应用程序结构V:View视图C:Controller控制器M:Model业务逻辑D:DataAccessLayer数据访问层WebTier

架构的演变–系统分层–WebTier

架构的演变–系统分层WEBTierCacheTierDBTierFileTier

架构的演变–系统分层–CacheTierMemcached最常见,Redis等也慢慢开始被广泛使用

架构的演变–系统分层–CacheTier

架构的演变–系统分层–CacheTier两种典型的Memcached数据分布余数分布式算法新加节点导致数据重新分布,对数据库造成瞬间冲击一致性哈希也被其他分布式系统使用

解决数据分布不均匀问题物理节点中添加多个虚拟节点(Dynamo)节点移动实现负载均衡(Cassandra)

架构的演变–系统分层–CacheTierMemcached同步序列化算法

架构的演变–系统分层WEBTierCacheTierDBTierFileTier

架构的演变–DbTier-MySQL数据库集群ReplicationMaster-MasterMaster-Slave

架构的演变-MySQL库表散列读一条Blog内容散列分布前?php$db=DB::getInstance();

//fetchadatabaseinstance$db-prepare(SELECTtitle,messageFROMBLOG_MESSAGESWHEREuserid={userID});$db-assignInt(userID,$userID);$db-execute();$results=$db-getResults();??

架构的演变-MySQL库表散列读一条Blog内容散列分布后?php$db=DB::getInstance($userID);//注意这里

//fetchadatabaseinstance,specificforthisuser$db-prepare(SELECTtitle,messageFROMBLOG_MESSAGESWHEREuserid={userID});$db-as

文档评论(0)

1亿VIP精品文档

相关文档