大规模网站架构介绍
58页1、大规模网站架构,email: ,PHP facebook,yahoo Java taobao,163 Python google .NET MySpace,语言不是可伸缩性的关键,架构才是关键,网站架构的目标,高可用性(High Availability) 可伸缩性(Scalability) 高性能(High Performance),事务,传统的事务(ACID),原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability),CAP原则,Consistency 一致性 Availability 可用性 Partition Tolerance分区耐受性 在任意时刻,只有两项能同时成立 不要浪费精力可能突破上面限制,可用性,一致性,分区耐受性,新的事务策略-BASE策略,避免分布式事务 基本可用(Basically Available) 软状态(Soft state) 选择最终一致(Eventually consistent),数据库读写分离,MySQL Proxy(数据库读写分离),load balancing failov
2、er query analysis R/W Splitting,数据库Shard,水平分区 垂直分区,Sharding vs Partition,垂直分区,user,blog,App,DAL,水平分区,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 数据冗余/反范式,数据冗余 for shard,shard before comment(id,blog_id,content) shard after comment(id,blog_id,content,u
3、ser_id),数据分区策略,水平分区 2 * N(如定单,购买者与网店各一份) N / n (按日期或ID范围分区) hash(N) % n( 按hash分) 查找表 垂直分区 按功能分(论坛,博客),消息队列(MessageQueue),程序解耦 隔离 消息的可靠传输(物理存储中转消息),A,C,B,MQ,MQ,消息总线,应用场景,耗时操作 邮件发送/短消息发送 日志 程序解耦(A挂了,但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.181.28
《大规模网站架构介绍》由会员luobi****88888分享,可在线阅读,更多相关《大规模网站架构介绍》请在金锄头文库上搜索。
2022-05-11 101页
2022-05-11 50页
2022-05-10 22页
2022-05-09 75页
2022-05-09 51页
2022-05-09 110页
2022-04-24 54页
2022-04-24 123页
2022-04-24 18页
2022-04-23 11页