1.大网站的特点
- 高并发 高流量 亿级用户 Google IP日均3亿 QQ最大在线用户数1.4亿。
- 高可用 系统7x24不间断服务。
- 海量数据:用大量服务器管理海量数据,Facebook每周10亿照片,百度收录数百亿网页,Google有百万台服务器为全球用户提供服务
- 用户分布广泛 网络情况复杂:为全球用户提供服务
- 安全环境恶劣:互联网站容易受到攻击
- 需求快速变更 发布频繁:每周都有版本发布上线,中小型网站更频繁,一天几十次。
- 渐进式发展:慢慢运营,不是一开始就开发好的,和网站的架构发展演化对应。
2.大型网站架构演化发展过程
-
初始阶段:一台服务器,放应用程序、文件、数据库。
-
应用服务和数据服务分离:应用和数据分离,放应用服务器、文件服务器、数据服务器。这3台服务器对硬件资源的要求各不相同
- 应用服务器需要处理大量业务逻辑 CPU
- 数据库服务器 磁盘检索数据缓存 内存和磁盘
- 文件服务器 存储用户上传文件 更大磁盘
-
使用缓存改善网站性能:使用大内存服务器作为专门缓存服务器
-
使用应用服务器集群改善网站并发处理能力:增加多个应用服务器,结合负载均衡调度服务器进行请求调度。
-
数据库读写分离:使用主从数据库,主库写,从句读,通常会使用专门数据访问模块,使数据库读写分离对应用透明。
-
反向代理和CDN:使用反向代理服务器和CDN服务器进行内容缓存,尽早将请求
-
使用分布式文件系统和分布式数据库:数据库拆分的最后手段,单表规模巨大的时候使用。
-
实用NoSQL和搜索引擎:对于复杂的检索和存储使用非关系型数据库技术实现。
-
业务拆分:将网站业务分成不同产品线,分归不同业务团队负责。
-
分布式微服务:公用服务抽取出来,独立部署,由这些可复用的服务连接数据库,提供公用服务,应用系统只需要管理用户界面。
3.CAP和Base
-
C 强一致性
-
A 可用性
-
P 分区容错性
-
CA 传统Oracle数据库
-
AP 大多数网站架构选择
-
CP Redis Mongodb
-
BA基本可用
-
Soft state 软状态
-
Eventually consistent 最终一致性
一致性算法:paxos raft zab算法等
4.负载均衡策略
- 轮询法:每个请求按时间顺序逐一分配给不同的服务器,不关注服务器当前的实际连接数和系统负载。