大规模网站架构.ppt
《大规模网站架构.ppt》由会员分享,可在线阅读,更多相关《大规模网站架构.ppt(59页珍藏版)》请在三一文库上搜索。
1、大规模网站架构,邱百超 badqiu(a),PHP facebook,yahoo Java taobao,163 Python google .NET MySpace,语言不是可伸缩性的关键,架构才是关键,网站架构的目标,高可用性(High Availability) 可伸缩性(Scalability) 高性能(High Performance),事务,传统的事务(ACID),原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability),CAP原则,Consistency 一致性 Availability 可用性 Partitio
2、n Tolerance分区耐受性 在任意时刻,只有两项能同时成立 不要浪费精力可能突破上面限制,可用性,一致性,分区耐受性,新的事务策略-BASE策略,避免分布式事务 基本可用(Basically Available) 软状态(Soft state) 选择最终一致(Eventually consistent),数据库读写分离,MySQL Proxy(数据库读写分离),load balancing failover query analysis R/W Splitting,数据库Shard,水平分区 垂直分区,Sharding vs Partition,垂直分区,user,blog,App,DA
3、L,水平分区,user 33%,user 33%,App,DAL,user 34%,水平分区,DAL(数据访问层),对应用透明的使用数据库的水平分区及垂直分区,DAL Proxy(实现1),应用,DAL 服务器,user,user,DAL API(实现2),应用,DAL,user,user,两种实现方式,独立的DAL Proxy服务器 MySQL: Amoeba PostgreSQL: PL/Proxy (Skype) DAL API Java: Hibernate Shard,Ibatis Shard,HiveDB Python: Pyshards,shard改变数据库设计,尽量避免join
4、 数据冗余/反范式,数据冗余 for shard,shard before comment(id,blog_id,content) shard after comment(id,blog_id,content,user_id),数据分区策略,水平分区 2 * N(如定单,购买者与网店各一份) N / n (按日期或ID范围分区) hash(N) % n( 按hash分) 查找表 垂直分区 按功能分(论坛,博客),消息队列(MessageQueue),程序解耦 隔离 消息的可靠传输(物理存储中转消息),A,C,B,MQ,MQ,消息总线,应用场景,耗时操作 邮件发送/短消息发送 日志 程序解耦(A
5、挂了,但B继续可以使用),MQ产品,开源 RabbitMQ(Erlang) ActiveMQ(JAVA) 商业 IBM MQ WebLogic MQ,回顾CAP及BASE,可用性,一致性,分区容忍性,负载均衡,DNS负载均衡 反向代理负载均衡 直接路由 ,failover,DNS负载均衡,简单 缺少灵活性(DNS缓存),D:pythonDjango-1.1.1nslookup Server: Address: 10.20.18.10 Non-authoritative answer: Name: Addresses: 220.181.28.54, 220.181.28.212, 220.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大规模 网站 架构
链接地址:https://www.31doc.com/p-3108618.html