不了解的词汇
- 数据库提供主从热设备
- 数据库读写分离
- 解决数据访问速度的方式:1.反向代理,2.CDN
基本知识
大型网站演化发展
- 应用服务器和数据服务分离
- 使用缓存改善网站性能
- 使用应用服务器集群改善网站的并发处理能力
- 数据库读写分离
- 使用反向代理和CDN家属网站响应
- 使用分布式文件系统和分布式数据库系统
- 使用NoSQL和搜索引擎
- 业务拆分
- 将大型网站拆分成不同的产品线,分归不同的业务团队负责(首页,商铺,订单,买家,卖家)
- 分布式服务
- 业务划分的颗粒变小,业务化成在不同的服务器上,业务连接数据库的规模太大。解决方案:提取公共业务,独立部署。
大型网站架构模式
要点:山寨和创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解与把握
实现网站
分层
将网站软件系统分为应用层,服务层,数据层
应用层(也可以分为:界面层,业务逻辑层):负责业务和视图展示,如网站首页,搜索输入,结果展示
服务层(也可以分为:数据接口层,数据处理层):为应用层提供服务支持,如用户管理服务,购物车服务
数据层:提供数据访问服务,如数据库,缓存,文件,搜索引擎
注意点:禁止跨层次调用,逆向调用分割
将业务分割成小粒度,将不同功能和服务分割开来,包装成低内聚,高耦合单元分布式
分层和分割只是为了分布式,将不同模块部署在不同的机器上,通过远程调用协调工作。
产生的问题: 分布式调用需要依赖网络,可能对性能造成影响。服务器越多,服务器宕机概率越大。数据很难保持一致性。开发管理复杂
分布式方案:
分布式应用和服务: 将分层和分割之后的模块分布式部署
分布式静态资源:网站静态资源(JS,CSS,图片)等资源独立分布式部署(动静分离)
分布式数据和存储:关系型数据库,NoSQL分布式部署
分布表示计算:Hadoop,MapReduce分布式计算框架负责移动计算
分布式配置:支持线上服务器实时更新
分布式锁:实现并发和协同
分布式文件:支持云存储-
集群
将业务访问高的同一个服务部署在多台服务器上,通过集群,提供更好的并发服务,即便某台服务器宕机也能提供服务,提高系统的可用性
缓存
CDN
反向代理
本地缓存
分布式缓存
使用条件:1.数据访问热点不均衡,某些数据频繁访问的应该放在缓存中。2.数据在某个时间段内有效,不会很快过期。异步
服务器集群通过分布式消息队列实现异步冗余
服务器冗余运行,数据冗余备份,访问和负载很小的服务也必须部署在不同的服务器上构成集群。
数据库处理定期备份,存档备份,冷备份,业务访问高时候,主从备份(热备份)。还要应对不可抗拒的网络完全瘫痪,对整个系统数据进行备份。自动化
发布自动化:自动化代码管理+自动化测试+自动化安全监测+自动化部署+自动化监测+自动化报警+自动化失效转移+自动化失效恢复+自动化降级+自动化分配资源安全
身份验证:密码/手机验证
安全通信:加密
脚本资源攻击:验证码
防止XSS,SQL注入:编码转化
垃圾信息,敏感信息:过滤
交易转账:风险控制
分布式文件系统
分布式数据库系统
- 数据库的存储
- 数据库检索
数据访问速度的方式
- 反向代理 VS CDN
- 相同点
- 缓存,提高访问速度,减轻后端服务器的负载压力
- 不同点
- 反向代理:部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向服务器中缓存用户请求资源,就将结果返回给用户
- CDN:部署在网络提供商的机房,用户请求网站服务时,可以从最近的网络提供商机房获取数据
- 相同点