【问题标题】:Why is squid good for REST architectures?为什么 squid 适合 REST 架构?
【发布时间】:2009-11-28 12:10:49
【问题描述】:

this 文章中,有人认为如果您经常从数据库中获取随机实体,则使用 Memcache,如果您使用 REST 架构,则使用 Squid。请解释原因(关于 Squid)。

【问题讨论】:

    标签: optimization rest caching squid


    【解决方案1】:

    Memcache 是一个分布式对象存储 - 将对象放入和取出由您决定。它是任何用途的通用缓存。

    Squid 是一个代理服务器和一个网络缓存。如果一切都通过 URL(例如 REST),那么 Squid 将免费完成这项工作。

    总而言之,memcache 是通用的,Squid 是用于缓存 URL 的结果。

    【讨论】:

      【解决方案2】:

      REST 是关于 http 和资源的。

      squid 可以用作reverse proxy,因此它会从网络服务器中获取负载。服务器端可以设置some expires http header来表示缓存的时间窗口。

      这就是说,缓存主要是通过标准的 http 标头完成的,因此它比缓存 db 查询更接近于 rest 样式架构。

      【讨论】:

        【解决方案3】:

        Squid(作为代理和缓存)可以有效地与 REST 端点一起使用。在 REST 中,资源(应该)使用 ETAG/Last-Modified 标头显式传输,以便于缓存。

        此外,REST 中的许多操作(假定)是幂等的(重复而没有进一步的副作用):这对 Squid 来说是一个完美的情况。它可以单独执行这些操作,而不会打扰应用程序服务器。

        【讨论】:

          【解决方案4】:

          Rest 使用 http 动词进行正确操作,即 GET 始终是非破坏性的。网址的命名也是一致的。这意味着 Squid 中的 http 缓存可用于提高性能,而无需依赖底层编程技术(ASP MVC、Rails、CouchDB 等)

          【讨论】:

            【解决方案5】:

            (这个答案比最初的问题晚了十年——但鉴于我在我咨询过的大型组织中遇到过这个问题,我认为在这里解释一下很有用。)

            Roy Fielding查看SOAP时,他意识到如果HTTP Methods(GET、POST等)用于访问和修改资源而不是仅使用HTTP对于单纯的远程过程调用,可以利用 HTTP 规范的其余部分,例如缓存 (RFC-2616)。 Fielding's layered architecture 说明了这一点。这就是他设计REST的原因。

            作为 HTTP 缓存代理,Squid 是一种可以显着减少后端系统负载同时确保缓存数据是最新的实现。

            该标准允许定义项目在重新验证之前可以缓存多长时间,以及如何发出条件请求,因此只有新版本才会响应请求而发送。所有这些客户端行为已经在浏览器和主要语言使用的 HTTP 客户端中实现,例如 Java 的 Apache HttpComponents Clientaccompanying caching library

            由于现在所有这些机制都已明确定义和实现,因此使用它实际上只是使用这些组件的问题,其中大部分您可能已经在使用(例如,在撰写本文时,Apache HC 组件是SpringBoot 附带的默认实现 - 只需将缓存库添加到构建中)。

            如果您要使用 MemCache 或 Redis 来实现这一点,那么您只是在重新发明轮子,并且从那时起必须重复维护该自定义代码的负担。而且,如果您没有在代码中实现 RFC 2616 的等效项,您将使用过时的数据和低效的通信。

            【讨论】:

              猜你喜欢
              • 2023-03-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-07-08
              • 2010-11-20
              相关资源
              最近更新 更多