代码之家  ›  专栏  ›  技术社区  ›  Chris Ballance

可扩展性的设计模式(或技术)

  •  25
  • Chris Ballance  · 技术社区  · 15 年前

    什么 设计模式 技术 你用过专门针对 可扩展性 ?

    模式,如 Flyweight 在我看来,模式是 Factory Pattern ,以提高可扩展性,或在内存或存储限制内工作时。

    你还用过什么?( Denormalization of Databases 等)当高可用性或可扩展性是您的主要目标时,您是否发现规则会发生变化?

    可能的情况有:

    • 比台式机或笔记本电脑内存、处理能力和连接性更有限的移动设备
    • 有限硬件上的高用户数(缓存策略等)
    • 优化数据库架构以提高效率,而不是采用规范化设计(例如,用于存储的SharePoint列包装)
    5 回复  |  直到 11 年前
        1
  •  45
  •   Pascal Thivent    15 年前

    一些模式出现在脑海中:

    • 无状态应用程序
    • 松耦合
    • 不同步
    • 延迟加载
    • 高速缓存
    • 平行性
    • 划分
    • 路由

    一些资源:

        2
  •  10
  •   user151323    15 年前

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

        3
  •  6
  •   jldupont    15 年前

    没有什么是免费的——归根结底,为了达到你的商业目标,什么是可以接受的妥协。主要变量是:

    • 成本
    • 可利用性
    • 一致性
    • 生存能力(如分区容限)

    优秀的 paper 读这个题目。

    我认为一个好的度量方法是检查“成本/用户”曲线,并尝试将其保持为线性进展(假设每个用户的可接受成本是一个已知参数-)

    设计模式确实发挥了作用,但最重要的是总体架构。在模块级别上可能已经非常彻底了,但是由于缺少网络级别的约束和可伸缩性,因此会受到影响。

    在一天结束的时候,我相信有人必须问自己:对于失败类型X,有多少“用户”会受到影响,持续多长时间?

    在某个地方总会有一个SPOF(单点故障),但是你可以设计一个系统,使这个SPOF靠近端点(例如用户)。但在许多情况下,SPOF超出了应用程序的控制,例如网络弹出不可用。

    不管怎样,我可以花几个小时研究这个问题…

        4
  •  2
  •   philsquared    15 年前

    POSA(面向模式的软件体系结构)书籍是此类模式的一个很好的来源。

    POSA 4 特别是与分布式计算有关,但是所有的卷都充满了可伸缩性模式。

        5
  •  1
  •   user804979    11 年前

    我在无状态应用程序逻辑中观察到的是,它引入了许多其他需求,比如锁定数据库,最终会影响可伸缩性。

    假设部署的应用程序逻辑在一个服务器场中是无状态的,那么对于同时访问集群的两个节点的请求,我们必须引入诸如db锁定之类的概念,以确保只处理一个请求。

    我现在正在处理这种情况,我想知道其他人是如何处理这种无状态行为的。