下面是我们认为的一些可伸缩性的最佳实践:
1、异步;尽可能的使用异步,同步调用会导致两个服务的可用性绑在一起,意味着一个服务出问题或变慢,另一个也会受到影响,这点也是eBay一直强调的;
2、泳道设计;错误隔离机制,避免一个失败影响全局,这种机制也有助于错误查找和代码替换;
3、缓存;在所有层次均使用缓存,例如数据、页面、页面片段等;
4、监测;从用户角度来看系统的性能。这包括从外部网络来对系统进行性能的监测,以及内部的系统间交互次数以及时间的监测;
5、数据复制;一方面是为了容灾,另一方面是为了提供多个用于读的数据库,降低写库的压力;
6、拆分;包括了应用的拆分以及数据库的拆分;
7、尽量少的使用数据库特性;尽可能的把数据库仅作为一个在线存储的功能而使用,不要把业务逻辑放在数据库里,否则将来会非常难扩展;
8、缓慢发布;发布时应缓慢发布,以保证新版本是正常的,避免由于某个压力测试时没测到的点,导致全站出问题;
9、压力以及性能测试;在发布前测试性能,尽管这不一定能发现全部问题,因此在发布前仍然要做好回滚的方案;
10、容量规划;提前判断系统能支撑多大的量,并做好扩容计划;
11、回滚;每次都要做好回滚的准备;
12、根源分析;确认有办法找到线上问题的根源所在,从而能够真正的解决问题;
13、从一开始就要注重质量;质量不能仅靠测试来保证,必须从设计阶段开始就去保证。
译注:
以上说的这十三点可谓是构建可伸缩系统的金玉良言,但可惜缺乏了实例引导,没有经验的同学估计会很难看明白为什么一定要这样做,如果有些实例来说明的话,就更帅了!
分享到:
相关推荐
可伸缩性最佳实践:来自eBay的经验
可伸缩性最佳实践:来自eBay的经验.作为全球最大的电子商务网站,我们肯定对其架构很感兴趣,那就下载回去看看吧。
该主题涵盖了eBay成长过程中架构和实施方面的最佳实践,以及如何在24×7x365环境下使其基础架构平稳地具有可伸缩性特征。它囊括了几乎所有大规模系统必备的特性,比如可扩展性、可用性和可管理性等。 具体而言,...
该主题涵盖了eBay成长过程中架构和实施方面的最佳实践,以及如何在24×7x365环境下使其基础架构平稳地具有可伸缩性特征。它囊括了几乎所有大规模系统必备的特性,比如可扩展性、可用性和可管理性等。 具体而言,...
第7条 编程中应知道何时和如何考虑可伸缩性 14 第8条 不要进行不成熟的优化 16 第9条 不要进行不成熟的劣化 18 第10条 尽量减少全局和共享数据 19 第11条 隐藏信息 20 第12条 懂得何时和如何进行...
android-modular-architecture::books:使用Jetpack遵循最佳实践,在模块化词上的示例Android组件体系结构侧重于用Kotlin编写的可伸缩性,可测试性和可维护性
我们将涉及的最佳实践领域不仅仅是经典IT领域,其中包括:业务流程分析和建模,规划和设计与BPM应用程序的终端用户交互,定义操作拓扑以满足可伸缩性和可用性要求,操作系统及其基础设施,通过经典IT管理方法在从...
高音单元 Tweeter是使用Kotlin使用Jetpack套件中的现代android开发技术编写的一个Twitter克隆。它采用与扩展性,可测试性,可访问性和可维护性有关的行业最佳实践。
该项目的目标是通过使用最新的技术堆栈并展示模块化,可伸缩性,可维护性和可测试性的现代Android应用程序体系结构来展示最佳实践。 该应用程序看起来可能非常简单,但是它具有所有这些小细节,将为适合以下应用程序...
Matlab和Octave的可伸缩性 抽象的 用于MATLAB和Octave的PhysioNet WFDB工具箱是一组用于读取,写入和处理PhysioBank数据库使用的生理信号和时间序列的函数的集合。 使用WFDB工具箱,研究人员可以访问50多个...
ADO.NET作为微软最新的数据访问技术,已经在企业开发中得到了广泛的应用。对于一线的开发人员来说,掌握基本的概念和技术之后,提高应用水平和解决实际问题的最有效手段,莫过于相互交流彼此的最佳时间经验经验。
本文为您提供了在 Microsoft ADO.NET 应用程序中实现和获得最佳性能、可伸缩性以及功能的最佳解决方案;同时也讲述了使用 ADO.NET 中可用对象的最佳实践;并提出一些有助于优化 ADO.NET 应用程序设计的建议。 本文...
React打字稿样板 :rocket: :rocket: :rocket: 是一个自以为是的Web应用程序...Typescript是可伸缩性,易于调试的代码以及创建具有高生产力开发经验的可维护大型应用程序和代码库的关键。 可预测的状态管理(流量)
本文为您提供了在 Microsoft ADO.NET 应用程序中实现和获得最佳性能、可伸缩性以及功能的最佳解决方案;同时也讲述了使用 ADO.NET 中可用对象的最佳实践;并提出一些有助于优化 ADO.NET 应用程序设计的建议。
本书涵盖了以下激动人心的功能:实现表示层,例如前端控制器模式了解业务层并实现业务委托模式掌握AOP的实现涉及异步EJB方法和REST服务涉及采用微服务的关键模式体系结构管理企业级应用程序的性能和可伸缩性 ...
数据实践: 您将学习如何管理和处理大数据,构建可伸缩的数据存储解决方案。 开源框架: 掌握主要的JAVA开源框架,包括Spring和Hibernate,以提高应用程序的效率和可维护性。 弹性云架构: 深入了解云计算和弹性...
2.2.4 可伸缩性 2.3 影响平台无关性的因素 2.3.1 java平台的部署 2.3.2 java平台的版本 2.3.3 本地方法 2.3.4 非标准运行时库 2.3.5 对虚拟机的依赖 2.3.6 对用户界面的依赖 2.3.7 java...