架构的伸缩性(转载)
2015-09-18 11:05
429 查看
可伸缩性,简单来说,是以更大的规模来做你现在所做的事。伸展一个Web应用的规模在于让更多的人使用你的程序。如果你没法找出方法在伸展规模的同时提高性能,没关系。而且只要你可以伸展规模来处理更大数量的用户,那么有几个单点故障(single point of failure)也没关系。
如今我们在面对规模伸展的时候有两个选择:
纵向的可伸缩性——在同一个逻辑单元内增加资源来提高处理能力。这样的例子包括在现有服务器上增加CPU,或者在现有的RAID/SAN存储中增加硬盘来提高存储量。
横向的可伸缩性——增加更多逻辑单元的资源,并令它们像是一个单元一样工作。大多数集群方案、分布式文件系统、负载平衡都是在帮助你提高横向的可伸缩性。
最后建议应该考虑所有的层次才能解决可伸缩性问题:
对于一个成功的Web应用,所有的层次都要同样能够应付规模的增长。包括存储层(集群文件系统、S3等)、数据库层(分区、联合)、应用层(memcached、scaleout、terracota、tomcat clustering等等)、Web层、负载平衡、防火墙等等。比如,如果你没办法实现多个负载平衡控制器来处理未来的网络流量,不管你在Web层的横向伸缩性上扔下多少钱,都不会有什么效果。你的流量始终被限制在一个负载平衡控制器能够承受的程度。
如今我们在面对规模伸展的时候有两个选择:
纵向的可伸缩性——在同一个逻辑单元内增加资源来提高处理能力。这样的例子包括在现有服务器上增加CPU,或者在现有的RAID/SAN存储中增加硬盘来提高存储量。
横向的可伸缩性——增加更多逻辑单元的资源,并令它们像是一个单元一样工作。大多数集群方案、分布式文件系统、负载平衡都是在帮助你提高横向的可伸缩性。
最后建议应该考虑所有的层次才能解决可伸缩性问题:
对于一个成功的Web应用,所有的层次都要同样能够应付规模的增长。包括存储层(集群文件系统、S3等)、数据库层(分区、联合)、应用层(memcached、scaleout、terracota、tomcat clustering等等)、Web层、负载平衡、防火墙等等。比如,如果你没办法实现多个负载平衡控制器来处理未来的网络流量,不管你在Web层的横向伸缩性上扔下多少钱,都不会有什么效果。你的流量始终被限制在一个负载平衡控制器能够承受的程度。
相关文章推荐
- JavaScript检测访问网站IP地址来自哪些地市
- 9月上旬国内网站流量统计TOP5:淘宝网险夺第三
- Android 4.0 Camera架构分析之Camera初始化
- 常见网站CSS样式重置
- 网站性能优化
- 一些不错的开发交流网站
- 地图网站显示实时交通路况信息的原理
- HTML5 重力感应 DeviceOrientation来实现手机网站上的摇一摇功能
- 为了解决这个问题:07文本WORD文档超链接、页码成{HYPERLINK"网站"}、{PAGE}/{NUMPAGES}
- 揭秘知名网站如何收集个人数据及应对措施
- JS实现带有抽屉效果的产品类网站多级导航菜单代码
- 架构之路(三) 单元测试
- 网站内部优化--图6片优化的几个技巧
- 谈谈模板建站那点事
- Kurento应用开发指南(以Kurento 6.0为模板) 之六:kurento架构
- 新站4个月,新手做网站经验总结
- 第三方支付架构设计之—自有账户支付
- 第三方支付架构设计之—帐户体系
- 查看.a架构文件
- Android 架构师之路