笔记:大型网站的核心架构要素

大型网站的核心架构要素:
1、高性能;
2、高可用性;
3、伸缩性;
4、扩展性;
5、安全性;


一、高性能
1、web前端的性能优化
(1) 浏览器访问优化
① 减少http请求; 合并图片、js、css等静态资源;
② 使用浏览器缓存; 通过设置cache-control、Expires等属性;
③ 启用gzip压缩;
④ 页面资源加载顺序; 先加载css,后加载js,图片考虑使用lazyload;
⑤ 减少Cookie传输;
(2) CDN加速 (Content Distribute Network)
(3) 反向代理 


2、应用服务器性能优化
(1) 分布式缓存; JBoss Cache 、Memcached;
(2) 异步操作; 使用消息队列(如ActiveMQ),具有很好的削峰作用;
(3) 使用集群,实现负载均衡;
(4) 代码优化; 包括 多线程、资源复用(单例模式和对象池)、合理的数据结构、垃圾回收等;


3、存储性能优化
(1) 机械硬盘 vs 固态硬盘
(2) B+ 树 vs LSM树
(3) RAID vs HDFS




二、高可用 (High Availability)
1、度量指标
网站年度可用性指标 = (1-网站不可用时间/年度总时间)*100%;


2、高可用的应用
① 通过负载均衡进行无状态服务的失效转移;
② 集群的Session管理应对有状态的服务时效转移;


3、高可用的服务
① 分级管理; 核心应用和服务优先使用好的硬件;
② 超时设置;
③ 异步调用;
④ 服务优雅降级;访问高峰期拒绝或关闭非核心服务;
⑤ 幂等性设计;必须在服务层保证服务重复调用和一次调用产生的结果相同,即服务具有幂等性;


4、高可用的数据
① 数据需满足持久性、可访问性、一致性;
② 数据备份,分为异步热备、同步热备、容灾备份等;
③ 失效转移(failover); 失效检测有两种,心跳检测和应用程序访问失败报告;


5、高可用下的网站发布
① 自动化测试;
② 预发布验证(UAT);
③ 代码控制;主干开发、分支发布或分支开发、主干发布;
④ 自动化发布;
⑤ 灰度发布;又称为AB版本测试;


6、网站运行监控
① 数据收集;包括用户行为日志、服务端日志、浏览器日志、服务器性能指标等等相关数据的收集;
② 监控管理;系统报警、失效转移、自动优雅降级等;




三、伸缩性(Scalability)
指系统能够通过增加(减少)自身资源规模的方式增强(减少)自己的计算处理事务的能力。如果这种增减是成比例的,就被称作线性伸缩性。
在网站架构中,通常指利用集群的方式增加服务器数量、提高系统的整体事务吞吐能力。


1、不同功能进行物理分离;
纵向分离(业务分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性;
横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性;


2、单一功能通过集群规模实现伸缩;




四、扩展性(Extensibility)
指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定不需要经常变更,应用之前较少依赖和耦合,对需求变更可以敏捷响应。
它是系统架构设计层面的开闭原则(对扩展开放,对修改关闭),当系统增加新功能时,不需要对现有系统的结构和代码进行修改。


1、利用分布式消息队列降低系统耦合性;
2、利用分布式服务打造可复用的业务平台;




五、安全性
1、web应用的常见攻击方式
① XSS (Cross Site Script);
② SQL注入;
③ CSRF (Cross Site Request Forgery);
④ 路径遍历(跨目录访问、读取);
⑤ 文件上传;
⑥ HTML注释;

⑦ 错误回显 (Error Code);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值