应用程序扩展性实现的十宗罪
来源:互联网 发布:国际大数据产业博览会 编辑:程序博客网 时间:2024/05/23 23:38
http://www.csdn.net/article/2013-06-13/2815758-10-Deadly-Sins-Against-Scalability
摘要:这年头,作为软件设计架构师如果系统不具备高可扩展性对外交流时都不好意思。但是如何实现可扩展性?应用程序搭建过程中是否存在某些禁区?可扩展性方面的专家Sean Hull为我们悉数了可扩展性实现的十宗罪。
在道德领域有七宗罪的说法,现在实现可扩展性时也存在着十宗罪。可扩展性方面专家Sean Hull曾发表文章指出实现 可扩展性的五大毒药,最近他又指出了实现 可扩展性的五大致命错误。
一、缓慢的磁盘I/O - RAID 5 -多用户的EBS。RAID 10可以提供良好的数据保护,同时具备良好 的读写性能。RAID 5设计意味着性能差,失败后修复时间长。在AWS上考虑使用预设的IOPS解决IO瓶颈问题。
二、使用数据库存储作业队列。数据库看起来很适合存储作业队列,但是轻负载的锁定以及日常的扫描 工作都会影响性能。使用类似RabbitMQ和SQS的专业软件可以消除这个瓶颈。
三、使用全文搜索。搜索似乎是数据库另一个完美的特性。但是大规模的搜索性能并不高,最好使用类 似Solr和Sphinx的专业技术。
四、在各层之间缓存不足。在应用程序和数据库之间使用memcache,在用户和Web服务器之间加载类似于Varnish的页面缓存。为你的HTML选择合适的缓存。
五、太多的技术负债。重写问题代码,而不是持续完善写得不好的代码,因为从长期来看,这并不划算。
六、对象关系映射。创建很难优化和调整的复杂查询。
七、同步,串行,耦合或锁定进程。锁就像停止标志,环岛才能保持道路畅通。行锁优先于表锁,采用异步复制,保持集群的最终一致性。
八、一个数据库副本。单一的数据库是一个瓶颈点。创建平行的数据库,让驱动程序在它们之间做选择。
九、缺乏监测。使用众多监控软件包之一,检测系统正在运行着什么。
十、缺少功能标识。能够通过一个标识关闭某些功能特性,峰值来袭时可以轻松的关闭功能降低负载。
原文链接: The 10 Deadly Sins Against Scalability(文/周小璐,审校/仲浩)
欢迎关注 @CSDN云计算微博,了解更多云信息。
本文为CSDN编译整理,未经允许不得转载,如需转载请联系market@csdn.net
- 应用程序扩展性实现的十宗罪
- 应用程序扩展性实现的十宗罪
- 应用程序扩展性实现的十宗罪
- 应用程序的扩展性
- 外接应用程序和扩展性
- Java ClassLoader 实现程序的扩展性
- 如何一步一步打造高可扩展性的应用程序?
- 如何一步一步打造高可扩展性的应用程序?
- 如何一步一步打造高可扩展性的应用程序?
- 如何一步一步打造高可扩展性的应用程序?
- 智能应用 - U-SQL 大数据应用程序的扩展性
- 微服务分解应用程序以实现可部署性与可扩展性(上)
- 微服务分解应用程序以实现可部署性与可扩展性(下)
- 策略模式--策略实现的封装性和随意扩展性
- 扩展性、易用性 浅谈游戏状态机的设计与实现
- 如何配置Kubernetes以实现最大程度的可扩展性
- 如何配置Kubernetes以实现最大程度的可扩展性
- 说说如何实现可扩展性的大型网站架构
- 【免费帮下载】<PUDN、CSDN、百度文库、新浪爱问>上的资源
- makefile(九)
- Codeforces Round #135 (Div. 2) A题
- springmvc Spring3 MVC @ResponseBody返回,jquery ajax调用中文乱码问题解决
- makefile(十)
- 应用程序扩展性实现的十宗罪
- makefile(十一)
- 程序员(诗)
- 关于vector对象的insert。
- XP文件夹加密过,恢复系统后拒绝访问---(解决方法)
- makefile(十二)
- makefile(十三)
- Sublime Text 2 快捷键
- HTTP协议详解