大型网站核心架构要素
一,性能
网站一般性能指标:响应时间,并发数,吞吐量(TPS,QPS,HPS),性能计数器等;
WEB前端性能优化:浏览器访问优化,CDN加速,反向代理
应用服务器性能优化:分布式缓存,异步操作,使用集群,代码优化(多线程,资源复用,数据结构)
存储性能优化:机械硬盘VS固态硬盘,B+树VS LSM树,RAID VS HDFS
二,可用性
高可用的目的:保证服务器硬件故障时服务依然可用,数据依然保存并能够被访问
高可用应用:通过负载均衡进行无状态服务的失效转移,应用服务器集群的session管理
高可用服务:分级管理,超时设置,异步调用,服务降级,幂等性设计
高可用数据:数据备份和失效转移,CAP原理
高可用软件质量保证:网站发布,自动化测试,预发布验证,代码控制(svn,git),自动化发布,灰度发布
网站监控:监控数据采集,监控管理
三,伸缩性
不同功能进行物理分离实现伸缩
单一功能通过集群规模实现伸缩
负载均衡技术:HTTP重定向负载均衡,DNS域名解析负载均衡,反向代理负载均衡,IP负载均衡,数据链路层负载均衡(LVS)
负载均衡算法:轮询,加权轮询,随机,最少连接,源地址散列
路由算法:一致性HASH
关系数据库伸缩性:单表数据量过大时数据库分片,实现:Cobar做集群的伸缩
NoSQL的伸缩性:HBase架构原理
四,扩展性
设计网站可扩展性的核心思想是模块化,并在此基础上,降低模块间的耦合性,提高模块的复用性。
模块化:软件架构师的最大价值
降低耦合:分布式消息队列(各种MQ)
可扩展的数据结构:NoSql中的ColumnFamily设计
分布式服务框架:dubbo(taobao),thrift(facebook)
五,安全性
全球70%的Web应用攻击来自XSS和SQL的注入攻击,其它还有CSRF,Session劫持 XSS,SQL注入的防御
其它常用漏洞:error code回显,html注释,文件上传,路径遍历 加密解密技术:单向散列加密,对称加密,非对称加密,密钥安全管理 信息过滤与反垃圾:文本匹配算法(trie tree,多级Hash表),分类算法,黑名单(布隆过滤器)