可伸缩性的设计模式(或技术)

Chr*_*nce 25 design-patterns scalability high-availability

哪些设计模式技术,你使用的是向专门针对可扩展性

在我看来,像Flyweight模式这样的模式是工厂模式的专用版本,以提高高可伸缩性或在内存或存储限制内工作时.

你用过别人的吗?(数据库的非规范化等)当高可用性或可伸缩性是您的主要目标时,您是否发现规则会发生变化?

可能的情况是:

  • 移动设备的内存,处理能力和连接性比台式机或笔记本电脑更有限
  • 有限硬件上的高用户数(缓存策略等)
  • 优化数据库模式以提高效率以代替标准化设计(例如,用于存储的SharePoint列包装)

Pas*_*ent 45

想到的一些模式:

  • 无国籍申请
  • 松耦合
  • 异步
  • 懒加载
  • 高速缓存
  • 排比
  • 分区
  • 路由

一些资源:


小智 10

使应用程序尽可能无状态.将更容易适应服务器场.


jld*_*ont 6

没有什么是免费的 - 它归结为为了实现您的业务目标而可接受的妥协.主要变量是:

  • 成本
  • 可用性
  • 一致性
  • 生存能力(例如,分区容差)

阅读有关该主题的优秀论文.

我认为一个好的指标是检查"成本/用户"曲线并尝试将其保持为线性进展(假设每个用户可接受的成本是一个已知参数:-)

设计模式确实发挥了作用,但它是最重要的总体架构.一个人可能在模块级别上非常彻底,但由于错过了网络级别的限制和可扩展性.

在一天结束时,我相信一个人必须问自己(她自己):因为X型失败,有多少"用户"会受到影响以及持续多长时间?

在某处总是存在SPOF(单点故障),但是可以设计一个系统,使得该SPOF更靠近端点(例如用户).但是,在许多情况下,SPOF不受应用程序的控制,例如网络POP不可用.

无论如何,我可以在这个问题上花上几个小时......