写点什么

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

  • 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:005122
用户头像

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

关注

评论

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

怎样做轻松迁移至YashanDB数据库避免数据丢失

数据库砖家

怎样做数据库负载高峰应对?YashanDB动态调节机制

数据库砖家

Hype 4 Pro 4.1.19 - 创建动画和交互式的Web内容

Rose

多格式文件在线预览,提升移动设备文件处理效率与体验

HarmonyOS SDK

harmoyos

2025Java面试八股①(含121道面试题和答案)

王中阳Go

Java 面试

怎样做YashanDB数据一致性校验,确保业务准确?

数据库砖家

怎样做YashanDB支持高性能事务处理

数据库砖家

构建基于YashanDB数据库的分布式事务管理系统技术分析

数据库砖家

如何优化YashanDB数据库以提升数据处理速度?

数据库砖家

2025 年 MQTT 技术趋势:驱动 AI 与物联网未来发展的关键动力

EMQ映云科技

mqtt emqx MCP

云原生数据库架构设计指南——基于YashanDB的方案解析

数据库砖家

优化YashanDB查询逻辑提高响应速度

数据库砖家

微信小游戏的运营

北京木奇移动技术有限公司

游戏开发 游戏运营 游戏外包公司

macOS Tahoe 26 让 Mac 更强大、更高效、更智能

柠檬与橘子

如何通过YashanDB实施弹性计算环境的数据管理

数据库砖家

如何在YashanDB中管理用户权限与角色

数据库砖家

Ae/Pr/视觉特效和转场BCC插件 Boris FX Continuum 2023亮点功能

Rose

如何实现YashanDB数据库的负载均衡

数据库砖家

YashanDB数据库安装与配置的详细步骤

数据库砖家

整合YashanDB数据库与人工智能技术的优势

数据库砖家

苹果macOS 26兼容设备 macos 26完整pkg安装程序

Rose

深入了解YashanDB数据库的功能与模块

数据库砖家

使用YashanDB数据库进行日志数据管理

数据库砖家

如何应对YashanDB数据库中的数据一致性挑战

数据库砖家

使用YashanDB进行实时数据分析的完整流程

数据库砖家

Ableton Live 12 Suite v12.2中文版注册机+许可证

Rose

微信小程序上线后的运维

北京木奇移动技术有限公司

微信小游戏 软件外包公司 游戏外包公司

如何通过YashanDB丰富企业的客户数据

数据库砖家

使用YashanDB时如何进行有效的查询优化

数据库砖家

YashanDB数据库自动化测试方案

数据库砖家

怎样做用YashanDB构建企业统一数据管理平台?

数据库砖家

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