【问题标题】:Are Retrofit and OkHttp suitable for Java EE/Server-side use?Retrofit 和 OkHttp 是否适合 Java EE/服务器端使用?
【发布时间】:2015-05-09 03:40:57
【问题描述】:

我喜欢 Square 的 RetrofitOkHttp rest/http 库的 API。我正在评估编写服务器端休息客户端的选项。对于基于 SOAP 的 Web 服务的每个请求,我都必须使用另一个 Restful Web 服务,因此我需要一个 Rest 客户端。

我的问题是,Retrofit 和 OkHttp 是否适合在高并发 Web 应用程序中的服务器端使用,或者是否可能存在已知或其他问题,源于这些 API 主要用于服务器外部-边?

阅读文档并仔细阅读代码后,我发现没有任何东西表明这些库不适合。但我也不想成为一只豚鼠。有没有人遇到过在高负载/并发下使用服务器端的任何问题?成功了吗?这些库的开发团队中的任何人都愿意发表评论吗? ;)

【问题讨论】:

    标签: rest jakarta-ee server-side retrofit okhttp


    【解决方案1】:

    我们在 Square Cash 服务器上使用 OkHttp,没有遇到任何问题。

    【讨论】:

      【解决方案2】:

      有些默认设置不适合服务器端使用,例如每台主机的最大并发请求数默认为5。

      https://github.com/square/okhttp/issues/4354 对此进行了一些讨论。

      【讨论】:

        【解决方案3】:

        在微服务架构世界(使用 Spring 框架)中,Retrofit/Okhttp 可能不适合作为服务间通信的 REST 客户端。使用 WebClient/RestTemplate 至少比使用改造用于相同目的具有以下优势:

        1. RestTemplate/WebClient 可以轻松配置为使用客户端负载平衡(功能区),从而可以在各种实例或其他微服务之间轮换请求。
        2. Hystrix 可以使用 RestTemplate 轻松配置,从而提高整个系统 w.r.t 服务间通信的容错能力(断路器模式)。
        3. 可以使用 Eureka 或 Consul 轻松配置服务发现,因此客户端无需知道目标 Web 服务的主机/端口/协议。我们只需要启用发现客户端。

        另外,您还可以探索 Feign,它是一个类似于 Retrofit 的声明式 Web 服务客户端,但具有 RestTemplate 的所有优点。

        您还可以在以下文章中获得战利品:

        https://www.javacodemonk.com/retrofit-vs-feignclient-on-server-side-with-spring-cloud-d7f199c4

        【讨论】:

          猜你喜欢
          • 2015-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-21
          • 2014-03-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多