大型网站技术架构:核心原理与技术分析摘要

本文摘录内容是书上第二章——架构核心要素

##高性能

网站性能测试

所谓网站高性能具体指的是什么?从不同角度来看

用户:涉及客户端服务端的通信时间,服务处理和反馈时间。

开发:程序本身的响应时间,系统吞吐量,并发能力,系统稳定性

运维:基础设施资源利用率

关键指标

  1. 响应时间
  2. 并发数
  3. 吞吐量
  4. 性能计数器(基础设施使用数据)

性能测试方法

  • 性能测试
  • 负载测试
  • 压力测试
  • 稳定性测试

大型网站结构复杂,用户从浏览器发出请求到得到响应,中间经历很多环节。通过完整的性能测试,能够知道网站的性能情况,网站负载能力以及网站的潜在问题,这些问题在高并发高负载下会非常致命。通过性能测试数据,我们能够对自己的网站有一个整体的认识,知道网站的短板,并能够有针对性的改善网站性能。

系统性能优化

web前端性能优化

浏览器访问优化

  • 减少http请求次数:合并css,js,和资源文件
  • 减少请求数据量:浏览器缓存,前端数据压缩

CDN加速

反向代理

应用服务器性能优化
缓存
  • 分布式缓存

    合理使用缓存,保证缓存的高可用

    使用缓存:缓存预热,防止缓存穿透,防止缓存热点

  • 本地缓存

异步操作

使用消息队列将系统解耦,同时在高并发的情况下还可以有削峰的作用

服务器集群

配合适当的负载均衡,服务器集群能够有效的分担高并发请求

#####代码优化

多线程处理,资源复用,优化数据结构,jvm性能调优

存储性能优化

硬件方面,分布式存储系统

高可用

网站可用性指标是一个可以量化的数字,业内通常用多少个9来衡量网站的可用性。

网站不可用时间=故障修复时间点-故障发现时间点

网站可用性=(1-网站不可用时间/年度总时间)X 100%

99%是基本可用,网站年度不可用时间小于88小时;99.9%是高可用,年度不可用时间小于9小时;99.99%是具有自动恢复能力的高可用,年度不可用时间小于53分钟;99.999%是极高可用,不可用时间小于5分钟。

网站可用性指标具体到个人可以用故障分来衡量

分类描述权重
事故级故障严重故障,系统整体不可用100
A类故障核心功能不可用,网站访问不顺畅20
B类故障非核心功能不可用,或核心功能少部分用户不可用5
C类故障其他故障1

故障分=故障时长(分钟)X 故障权重

高可用网站架构

系统分层使得不同层的服务高可用方案各不相同同。
应用层集群部署,通过负载均衡器平衡流量,监测到某台服务器不可用,通过移除异常服务器让集群服务整体可用。
服务层与应用层类似,可以通过集群实现高可用。在服务内部可以对服务进行分级管理,高级核心服务考虑与其他服务隔离,服务调用有超时设置,通过异步调用解藕服务之间对依赖,服务熔断降级来保护核心服务,设计服务原则保持服务幂等。
硬件损坏概率比较高,数据层的高可用解决方案就是通过复制,同步备份数据,监测到故障发生时快速切换数据源。
系统升级部署应该实现在保证服务可用的情况下部署,热部署,灰度发布。

CAP原理

CAP原理认为,一个提供数据服务的存储系统无法同时满足 一致性(Consistency),可用性(Availibility),分区耐受性(Patition Tolerance) 这三个条件。

  • C 一致性:所有应用获取的数据都是一样的
  • A 可用性:任何情况下系统都保持可用
  • P 分区耐受性:系统可以跨网络分区线性伸缩

大型网站系统中,数据是快速扩张的,线性伸缩能力是强需求,所以 P 是必须保证的,CA 会根据业务的需要有所偏向。

网站监控

网站的高可用是建立在拥有完备的系统监控系统的前提下的,因此 不允许没有监控的系统上线

  • 服务器性能监控
    服务器硬件指标:cpu,内存,网络,磁盘
  • 运行数据监控
    服务器gc,分布式缓存命中情况,消息消费积压情况,服务调用链时长
  • 日志收集
    系统访问日志,业务日志,用户行为日志

监控系统不只是监控,还担负着

  • 系统报警
  • 失效转移
  • 自动化伸缩降级

伸缩性

在不改动系统的软硬件情况下,仅仅通过调整部署服务器的数据就能够调整服务的处理能力。通过拆分网站实现系统伸缩。

  • 纵向拆分:业务处理流程上不同的部分分离部署。
    具体应用
    可复用业务服务
    基础服务
    数据库
  • 横向拆分:不同的业务分离部署

应用服务器集群伸缩设计——负载均衡
http重定向
dns域名解析
反向代理
IP
数据链路层

分布式缓存集群伸缩设计
扩容后一致性hash算法,新加入节点负载不均衡可以通过加入一个虚拟层

关系型数据库集群伸缩设计
数据分片开源产品Amoeba和Cobar

NoSQL数据库的伸缩设计

可扩展

在对系统影响最小的情况下,系统功能可持续扩展和提升的能力。
构建可扩展性的系统在于将复杂的系统切分成若干简单的子模块,也就是模块化。降低模块间的耦合,提高模块的复用性。
使用手段有分布式消息队列,分布式服务。

消息队列
分布式服务
可扩展数据结构,nosql,列存储
开放api构建网站生态圈

安全

网站安全涉及

XSS,跨站点脚本攻击
防治办法:过滤html危险字符,对cookie添加httponly属性,防止xss脚本获取用户cookie

注入攻击,sql注入
防治办法:过滤关键字,使用框架参数绑定

CSRF跨站点请求伪造
防治办法:自定义请求token,验证码,检查请求来源

文件上传
防治办法:设置上传文件白名单,接收文件后修改文件名,使用专门存储

路径遍历
防治方法:js,css单独域名部署,禁用静态URL访问文件,禁用参数传递路径

web应用防火墙
网站漏洞扫描

信息加密技术

单向散列加密
原文 + salt + 单向散列算法 = 密文 ,用于处理校验用户密码

对称加密
cookie加密,通信加密

非对称加密
信息安全传输,数字签名

保存密钥的方法
单独隔离保存,数据分片保存,专人管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值