架构设计中要考虑的核心五要素;
性能、可用性、扩展性、伸缩性、安全性算法
响应时间
应用执行一个操做须要的时间,包括从发出请求开始到收到最后响应数据所须要的时间。响应时间是系统最重要的性能指标,直观地反映了系统的“快慢”。下表列出了一些经常使用的系统操做须要的响应时间。 sql
并发数
系统可以同时处理请求的数目数据库
随着并发数的增大,吞吐量随着增大;
超过阈值后,并发数继续增大,吞吐量降低,直到吞吐量降为0,网站宕机;缓存
理解上述3个指标:类比高速公路行车
吞吐量就是天天经过的车辆数
并发数是正在行驶的车辆
响应时间是车速安全
下图中的横坐标表示消耗的系统资源,纵坐标表示系统处理能力(吞吐量)。在开始阶段,随着并发请求数目的增长,系统使用较少的资源就达到较好的处理能力(a~b段),这一段是网站的平常运行区间,网站的绝大部分访问负载压力都集中在这一段区间,被称做性能测试,测试目标是评估系统性能是否符合需求及设计目标;随着压力的持续增长,系统处理能力增长变缓,直到达到一个最大值(c点),这是系统的最大负载点,这一段被称做负载测试。测试目标是评估当系统由于突发事件超出平常访问压力的状况下,保证系统正常运行状况下可以承受的最大访问负载压力;超过这个点后,再增长压力,系统的处理能力反而降低,而资源消耗却更多,直到资源消耗达到极限(d点),这个点能够看做是系统的崩溃点,超过这个点继续加大并发请求数目,系统不能再处理任何请求,这一段被称做压力测试,测试目标是评估可能致使系统崩溃的最大访问负载压力。服务器
性能测试反应的是系统在实际生产环境中使用时,随着用户并发访问数量的增长,系统的处理能力。与性能曲线相对应的是用户访问的等待时间(系统响应时间),如图所示。网络
在平常运行区间,能够得到最好的用户响应时间,随着并发用户数的增长,响应延迟愈来愈大,直到系统崩溃,用户失去响应。session
测试结果报告应可以反映上述性能测试曲线的规律,阅读者能够获得系统性能是否知足设计目标和业务要求、系统最大负载能力、系统最大压力承受能力等重要信息,下表是一个简单示例。架构
构建高可用的应用服务器关键是session的处理,若是能使得天天机器上处理的请求都无状态,便可实现应用服务器的线性伸缩;服务器宕机后也可随时将请求放到其它机器上再次处理;
而对于须要处理状态信息的应用,解决方案是让每台机器使用共享的Session服务器,本地上仍是无状态特征;并发
设计要点
CAP原理
一个提升服务的存储系统没法同时知足如下三个条件
一致性(Consistency)
数据可用性(Avalibility)
分区耐受性(Patition Tolerance,系统具备跨网络分区的伸缩性)
WEB架构设计中,一般为了保证高可用性,会牺牲一致性;
数据一致性分为:强一致、用户一致、最终一致;
大型WEB站点通常只保证数据的最终一致性;
在网站新增业务产品时,实现对现有产品无影响,透明上线新产品。
主要手段
经过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力。
可能加入的服务器有如下4类,其伸缩性能各不相同;
经过设计实现集群内服务器对等,使用合适的负载均衡可保证良好的伸缩性;
缓存服务器伸缩性良好,但新加入服务器后可能致使缓存路由失效;
经过改进缓存路由算法,好比Memcached的一致性Hash,可实现加入新的缓存服务器后对原有缓存的影响尽可能减小;
很难作到大规模集群的可伸缩性
实现方式有:读写分离、数据表分库
(单表拆分:Cobar)
也可考虑伸缩性方案在数据库以外实现(经过路由分区)
Nosql数据库就是为海量数据而生,可轻松实现集群规模的线性伸缩;
(Hbase使用Zookeeper选举master)
99.99%的设计标准:无单点、在线更新、自动切换
卓越亚马逊地址: 《大型网站技术架构》
点击查看原图
Posted by: 大CC | 13APR,2014
博客:blog.me115.com [订阅]
微博:新浪微博