1.性能(体现性能的多个方面 响应时间,TPS,系统性能计算器等。) html
2.可用性 web
3.伸缩性(对于应用服务器,只要服务器上不保存数据,全部服务器都是对等的,无状态性。关系性数据库,经过路由分区等手段实现) 算法
4.扩展性 数据库
5.安全性 express
(1)浏览器端: 浏览器
①浏览器缓存; 缓存
②使用页面压缩; 安全
PS:Gzip压缩效率很是高,一般能够达到70%的压缩率,也就是说,若是你的网页有30K,压缩以后就变成了9K左右。想要启用Gzip压缩,提升浏览速度,能够浏览这篇文章:http://www.chinaz.com/web/2012/1017/278682.shtml 服务器
③合理布局页面; 网络
CSS:把样式表置于顶部;避免使用CSS表达式(expression_r);使用外部JavaScript和CSS;削减JavaScript和CSS;用<link>代替@import;避免使用滤镜;
JavaScript:把脚本置于页面底部;使用外部JavaScript和CSS;削减JavaScript和CSS;剔除重复脚本;减小DOM访问;开发智能事件处理程序;
④减小Cookie传输;
(2)CDN:内容分发网络(Content Delivery Network,简称CDN)将加速内容分发至离用户最近的节点,缩短用户查看对象的延迟,提升用户访问网站的响应速度与网站的可用性,解决网络带宽小、用户访问量大、网点分布不均等问题。详情请见百度百科:http://baike.baidu.com/view/8689800.htm?from_id=420951&type=search&fromtitle=CDN&fr=aladdin
(3)应用服务器端:服务器本地缓存和分布式缓存;
Memcached简介:http://baike.baidu.com/view/794242.htm
Redis简介:http://baike.baidu.com/view/4595959.htm
(4)服务器集群技术:Web服务器集群、数据库服务器集群、分布式缓存服务器集群等等,经过部署多台服务器共同对外提供同类服务,提升总体处理能力。
(5)数据库服务器端:
①索引:索引(index)是对数据库表中一个或多个列(例如,employee 表的姓氏 (name) 列)的值进行排序的结构。若是想按特定职员的姓来查找他或她,则与在表中搜索全部的行相比,索引有助于更快地获取信息。
PS:要注意的是,创建太多的索引将会影响更新和插入的速度,由于它须要一样更新每一个索引文件。
②缓存:数据库缓存是介于应用程序和物理数据源之间,其做用是为了下降应用程序对数据库的物理数据源访问的频次,从而提升了应用的运行性能。
③SQL优化:当一个基于数据库的应用程序运行起来很慢时,90%的可能都是因为数据访问程序的问题,要么是没有优化,要么是没有按最佳方法编写代码,所以你须要审查和优化你的数据访问/处理程序。具体能够浏览这篇文章:http://www.cnblogs.com/Shaina/archive/2012/04/22/2464576.html
④NoSQL:方兴未艾的NoSQL数据库经过优化数据模型、存储结构、伸缩性等手段在性能方面的优点日趋明显。
(1)如何衡量可用性?全靠9来撑腰:几乎全部网站都承诺7*24小时可用,但事实上都不可能彻底实现,总会有一些故障时间。那么,去除这些故障时间就是网站的总可用时间。换算成网站的可用性指标,以此衡量网站的可用性,例如某些知名网站可用性达到99.99%。
(2)哪些手段提升可用性?
①核心:冗余-各服务器互相备份保证总体可用;
②应用服务器端:经过负载均衡设备创建集群,其中一台宕机当即切换到其余服务器继续提供服务,这就保证了高可用性。
③存储服务器端:须要对数据进行实时备份,当某台宕机当即将数据访问请求转换到其余服务器上,并进行数据恢复以保证数据高可用。
(1)衡量标准:
①是否能够多态服务器构建集群?
②是否容易向集群中添加新服务器?
③加入服务器后是否能提供无差异服务?
(2)主要手段:
①应用服务器:使用合适的负载均衡设备(硬件仍是软件?F5仍是LVS+KeepAlived);
②缓存服务器:改进缓存路由算法保证缓存数据的可访问性;
③数据库服务器:经过路由区分等手段将多服务器组成一个集群;
(1)衡量标准:增长新业务时是否能够实现对现有产品透明无影响(是否须要对现有业务进行修改匹配?);
(2)主要手段:
①事件驱动架构:利用消息队列实现;
②分布式服务:将业务和可复用服务分离;
(1)何为安全性?保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取;
(2)衡量标准:针对现存和潜在的攻击窃密手段,是否有可靠的应对策略;