写点什么

高可扩展分布式应用程序的架构原则

  • 2015-11-02
  • 本文字数:1054 字

    阅读完需:约 3 分钟

Elastisys 云平台诞生于瑞典默奥大学分布式系统研究小组。它由一组以预测性扩展引擎为中心的工具组成,可以自动扩展云部署。近日,其官方网站发表了一篇文章,介绍他们在高可扩展分布式应用程序设计和开发方面的经验。

他们将可扩展性分成了如下四个维度:

  • 性能可扩展:性能无法完全实现线性扩展,但要尽量使用具有并发性和异步性的组件。具备完成通知功能的工作队列要优于同步连接到数据库。
  • 可用性可扩展 CAP 理论表明,分布式系统无法同时提供一致性、可用性和分区容错性保证。许多大规模 Web 应用程序都为了可用性和分区容错性而牺牲了强一致性,而后者则有赖于最终一致性来保证。
  • 维护可扩展:软件和服务器都需要维护。在使用平台 & 工具监控和更新应用程序时,要尽可能地自动化。
  • 成本可扩展:总拥有成本包括开发、维护和运营支出。在设计一个系统时,要在重用现有组件和完全新开发组件之间进行权衡。现有组件很少能完全满足需求,但修改现有组件的成本还是可能低于开发一个完全不同的方案。另外,使用符合行业标准的技术使组织更容易聘到专家,而发布独有的开源方案则可能帮助组织从社区中挖掘人才。

以上各项,他们在设计应用程序时都会考虑和权衡。下面是他们根据上述内容总结出的 10 个设计原则:

  1. 避免单点故障:任何东西都要有两个。这增加了成本和复杂度,但却能在可用性和负载性能上获益。而且,这有助于设计者采用一种分布式优先的思维。
  2. 横向扩展,而不是纵向扩展:升级服务器(纵向)的成本是指数增长的,而增加另一台商用服务器(横向)的成本是线性增长的。
  3. 尽量减少应用程序核心所需要完成的工作。
  4. API 优先:将应用程序视为一个提供 API 的服务,而且,不假定服务的客户端类型(手机应用、Web 站点、桌面应用程序)。
  5. 总是缓存。
  6. 提供尽可能新的数据:用户可能不需要立即看到最新的数据,最终一致性可以带来更高的可用性。
  7. 设计时要考虑维护和自动化:不要低估应用程序维护所需要的时间和工作量。软件首次公开发布是一个值得称赞的里程碑,但也标志着真正的工作要开始了。
  8. 宁异步,不同步。
  9. 努力实现无状态:状态信息要保存在尽可能少的地方,而且要保存在专门设计的组件中。
  10. 为故障做好准备:将故障对终端用户的影响最小化。

关于分布式系统的设计,InfoQ 曾有过一些报道( 1 , 2 ),感兴趣的读者可以对照阅读。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-02 18:004852
用户头像

发布了 1008 篇内容, 共 411.4 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

广袤乡村气象新丨烟台有了新模式

乡村振兴

数据库掌门人论坛回顾,激辩技术和行业发展趋势

镜舟科技

数据库 数据库、

软件测试 | postman进行发送请求

测吧(北京)科技有限公司

测试

2023年2月中国数据库排行榜:OTO新格局持续三月,人大金仓、AnalyticDB排名创新高

墨天轮

数据库 华为云 TiDB oceanbase 国产数据库

3D与Blender:开源的3D计算机图形软件集

Finovy Cloud

blender 3D软件

【观察】汇聚中国开源数据库创新力量,openGauss驶入发展“快车道”

ForkJoinPool实践

FunTester

openGauss开源社区2022年度运营报告

易点天下基于 StarRocks 全面构建实时离线一体的湖仓方案

StarRocks

数据库 大数据 开源

软件测试/测试开发 | 一文带你了解测试流程体系

测试人

软件测试 自动化测试 测试开发 测试流程

软件测试 | HTTP和HTTPS抓包分析

测吧(北京)科技有限公司

测试

软件测试 | session、cookie和token的区别是什么?

测吧(北京)科技有限公司

测试

openGauss正式推出资源池化架构,全新升级社区工具DataKit

基于深度学习的表格检测与识别技术的优势

合合技术团队

人工智能 深度学习 模型 自动学习

openGauss 年终成绩单出炉,聚开发者之力,建繁荣生态

软件测试 | 抓包分析TCP

测吧(北京)科技有限公司

测试

携手同心,三阳开泰:读懂2023华为中国政企合作伙伴政策

脑极体

华为

软件测试 | 什么是HTTP

测吧(北京)科技有限公司

测试

JavaScript 中深拷贝方法structuredClone

devpoint

JavaScript 深拷贝与浅拷贝 lodash structuredClone

软件测试 | Mock是什么?

测吧(北京)科技有限公司

测试

openGauss数据库荣获中国计算机学会(CCF)科技成果特等奖

极客天地

软件测试 | 常见接口协议

测吧(北京)科技有限公司

测试

软件测试 | 接口测试的价值与体系

测吧(北京)科技有限公司

测试

得物容器SRE探索与实践

得物技术

容器

如何制作可视化报表?

XxinQi

移卡AI Lab占懿:AIGC让AI从幕后走向台前,将带来产业颠覆变革!

科技热闻

软件测试 | 使用CURL发送请求

测吧(北京)科技有限公司

测试

软件测试 | 常见代理工具

测吧(北京)科技有限公司

测试

软件测试 | GET和POST区别与实战

测吧(北京)科技有限公司

测试

高可扩展分布式应用程序的架构原则_语言 & 开发_谢丽_InfoQ精选文章