【问题标题】:AppFabric Cache connection type and protocolAppFabric 缓存连接类型和协议
【发布时间】:2011-05-20 18:05:31
【问题描述】:

AppFabric 缓存 API(本地,而非 Azure)是否使用 WCF 作为其通信机制?我们将 AppFabric 集成到一个非常大容量的 Web 应用程序中,并且在一些 WCF 调用中看到了大量的瓶颈。探查器使它们看起来好像这些来自我们的缓存库,但它们都是非常低级的系统调用,所以我们很好奇..

是否通过一组直接的 TCP 套接字连接访问 appfabric 缓存?或者它们是一些更高级别的协议/设计,它们是分层的? Appfabric 比其他提供商(如 memcached)有很多好处,但是如果在大容量系统上协议开销如此之大,我们担心它可能会导致问题。

谢谢!

【问题讨论】:

    标签: asp.net memcached appfabric


    【解决方案1】:

    是的,它在幕后使用了 WCF。更具体地说,它在 tcp 传输上使用二进制消息编码,所有这些都具有自定义配置设置,我确信 AppFabric 缓存团队在大量负载测试场景后选择了这些设置。它还默认启用了安全性(传输和消息签名/加密),这肯定会增加一些 CPU 开销。如果您确定您的网络设计是安全的,您可以禁用这些。

    安全性往往会增加很多开销,如果您为缓存集群/客户端应用程序提供了安全环境,则应该尝试取消它。 Check out the section titled "Security Settings" on this MSDN page 了解有关如何配置客户端的更多详细信息。 Also check out the section titled "Cluster Configuration Storage Location Settings" on this MSDN page 了解如何在主机上配置安全性的详细信息(注意:您可以使用 Set-CacheClusterSecurity PowerShell 命令轻松设置这些)。

    【讨论】:

      【解决方案2】:

      AppFabric 的分布式缓存和本地缓存方面使用 WCF,是的。你在用性能吗? WCF 和 AppFabric Cache 都提供性能计数器,可以让您精确地确定这一点。如果您使用本地缓存,您是否使用通知?这当然会增加闲聊。

      访问缓存时,是否进行了大量锁定?根据我的经验,这似乎大大降低了 AppFabric 缓存的性能。

      此外,Windows 安全以及 Sign 或 EncryptAndSign 保护也会招致可观的惩罚。

      【讨论】:

        【解决方案3】:

        完全同意德鲁所说的。

        我认为通信部分已经针对性能进行了优化,因此不应该成为瓶颈。

        您可能还想查看此案例研究,了解 Windows Server AppFabric 的缓存性能http://www.griddynamics.com/images/files/af_cache_benchmarking_1.4.pdf

        【讨论】:

        • 对,我们也会这么想。然而,在我们的测试中,我们可能查看了错误的内容,我们看到 Appfabric 将我们的对象序列化为 XML 需要很长时间。 Drew 说不,它使用二进制序列化,但我找不到任何支持它的文档。关闭安全肯定会有所帮助,谢谢!
        • 这与其说是一个真正的答案,不如说是一个评论。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多