针对可伸缩性进行设计

可伸缩性是在资源使用量线性增加的情况下,应用程序应对额外负载的能力。 在任何分布式应用程序中,可伸缩性都很重要。 可伸缩性的限制通常集中在应用程序设计中意外产生的资源使用和依赖项上。

以下列表描述了可伸缩性问题并建议了解决方案:

  • 计算机内资源。 可用的线程数和内存可能会限制可伸缩性。 使用对应用程序而言最高效的线程模型。

  • 计算机间资源。 分担应用程序工作负荷的可用计算机数可能会影响可伸缩性。

  • 客户端相关性。 应用程序意外产生了两种相关性情况:应用程序依赖于来自客户端随请求发送的数据的状态的情况;以及应用程序需要客户端的特定状态的情况。 避免在客户端和应用程序之间设计状态依赖项。

  • 服务器相关性。 通过创建服务器相关性,其中应用程序依赖于访问特定服务器计算机来获取信息,COM+ 应用程序可以限制其可伸缩性。 许多面向数据库的应用程序都可能存在这种相关性。 避免服务器相关性瓶颈的最佳方式是将数据分区到各种服务器计算机上。 例如,通过最常访问的密钥在服务器之间分配客户数据,或者使用客户的姓氏让一个客户数据库横跨多个服务器(例如 Server1: a-f、Server2: g-m、Server3: n-z)。

    注意

    数据分区会给编程逻辑增加大量复杂性,因此仅在尝试其他可提高可伸缩性的选项之后再进行分区。

     

  • 对象生存期。 若要实现可伸缩性,COM+ 应用程序必须密切关注对象的生命周期。 存在对象时,它会不断消耗资源。 务必确保仔细管理占用大量资源的对象的生存期。 对于不消耗昂贵资源的高需求对象,COM+ 对象池可以提高可伸缩性,因为可以合理调整池值,以利用可能拥有的任何硬件。 这是一种管理连接的自然方法:例如,如果有 20 个 SQL 连接的许可证,则可以使用“最大池”设置来决定这一点。

  • 应用程序组件分组。 为了增强 COM+ 应用程序的可伸缩性,应将中间层组件划分为时间相关服务和时间无关服务。 这样,您就可专注于使用 Microsoft Windows 服务来实现所需的组件操作。 例如,可以选择使用消息队列COM+ 排队组件等服务来处理时间无关异步任务。

针对可用性进行设计

针对部署进行设计

针对安全性进行设计