【问题标题】:How to scale SQL azure?如何扩展 SQL azure?
【发布时间】:2011-09-01 16:15:48
【问题描述】:

出于可扩展性的原因,我想在 Azure 云中托管我的 WCF 服务。例如会有一些读取数据的动作。它将处于高负载(1000+ 用户/秒)下。 (比如我的previous question

此外,我对任何请求都有 1 秒超时限制。

我的服务将与 SQL Azure 连接。我选择它是因为延迟小(根据微软的benchmark 不超过 7ms)

每个实例/数据库可以容纳多少个并发连接?

当我达到每个实例的连接数限制时,是否有能力扩展 SQL Azure?

其他解决方案,适合我的方案的选项?

谢谢。

【问题讨论】:

    标签: azure cloud scalability azure-sql-database azure-table-storage


    【解决方案1】:

    要记住的一件事是,您需要确保最大限度地利用连接池。使用服务帐户而不是不同的登录名是确保正确连接池的重要步骤。

    另一个考虑因素是使用 MARS。如果您有许多请求通过,您可能希望将它们汇集到一个请求中,从而形成一个连接,并返回多个结果集。 In this post我讨论如何实现SQL语句的单向排队;这可能不适合您,因为您可能期望得到响应,但它可能会为您提供一些关于如何实现一批请求以最小化连接数量和最小化等待时间的想法。

    最后你可以看看我去年写的这个工具来测试 SQL Azure 的连接/语句。该工具会自动关闭连接池以测量并发的影响。 You can download it here.

    最后,我还在 codeplex 上写了Enzo Shard Library。如果您决定为您的项目调查该库,请告诉我是否有任何问题。请注意,该库还将不断发展以支持 SQL Azure 数据联合的未来功能。

    【讨论】:

      【解决方案2】:

      每个 SQL Azure 实例的可用连接数似乎没有直接限制,但 Microsoft 声明他们保留在资源使用被视为“过度”的情况下限制连接的权利。

      有一些关于这个here 的信息,还有关于在这种情况下可能发生的情况here 的详细信息。

      一个好的解决方法是考虑“分片”,您可以根据一些易于定义的标准对数据进行分区并拥有多个数据库。当然,这确实会产生额外的费用。一个简洁的实现在这里:http://enzosqlshard.codeplex.com/

      另外:Azurescope 在这里有一些有趣的基准测试:http://azurescope.cloudapp.net/BestPractices/#ed6a21ed-ad51-4b47-b69c-72de21776f6a(不幸的是,在 2012 年初被删除)

      【讨论】:

      • Thanx Jeremy,“分片”是解决我问题的正确方向
      【解决方案3】:

      当我达到每个实例的连接数限制时,是否有能力扩展 SQL Azure?

      除了 Enzo sql 分片建议之外,还有一些 Microsoft 产品/功能正在建设中,以帮助扩展 SQL Azure。这些是 CTP(充其量),但可以通过允许您将负载分散到多个 SQL Azure 数据库中来为您提供一些可扩展性选项:

      【讨论】:

      • Thanx Stuart,这让我有了一些思考。
      猜你喜欢
      • 2017-11-21
      • 2016-10-10
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多