什么Java / Clojure SPDY客户端用于将App Engine连接到计算引擎?

时间:2013-05-22 09:43:04

标签: java google-app-engine clojure spdy google-compute-engine

App Engine recently enabled socketsGoogle opened up Compute Engine to everyone因此现在可以使用SPDY将App Engine应用程序连接到后端计算引擎服务器。

但SPDY库支持可能仍然存在问题,因为Square's okhttp等热门Java SPDY客户使用的java.util.concurrent classes for its ConnectionPool不在Google JRE whitelist上。

是否存在Google员工推荐的或者已知可与App Engine配合使用的Java SPDY客户端库?

更新:我错了 - {J}白名单上有java.util.concurrent个类。

我在白名单页面上搜索了“并发”,找到了java.util.ConcurrentModificationException ...

java.util.Collection
java.util.Collections
java.util.Comparator
java.util.ConcurrentModificationException
java.util.Currency
java.util.Date
java.util.Deque

......并没有意识到页面下方有一大堆java.util.concurrent类。

感谢@jesse-wilson指出:

https://github.com/square/okhttp/issues/195

Jesse还说他刚刚在App Engine团队的I / O上与某人讨论过在App Engine上运行OkHttp,而App Engine的人说:

  

更大的问题是OkHttp需要一些特殊的SSL类   要在JVM上运行的bootclasspath。你永远不会那样做   应用程序引擎(太危险),以便在App Engine上制作SPDY   任何图书馆的非首发。

此外,Jesse表示OkHttp中的SPDY客户端是一个内部API,它会发生变化,因此不打算用作独立客户端。

但是,对于后端RPC来说这是SPDY,因此要处理GAE上的SSL问题,您应该能够禁用SSL并将原始SPDY帧传递给计算引擎服务器,因为Compute Engine会自动加密服务器之间的通信。

Ilya Grigorik(@igrigorik)讨论了在SPDY上的AirBnB TechTalk中禁用SSL。最后,他提出了将SPDY用于现代后端RPC的情况,而不是Thrift等等。请参阅......

“构建现代Web堆栈”

所以我仍然在寻找可以在App Engine上运行的Java SPDY客户端。它可能意味着分叉并剥离所有SSL内容,除非可以通过从构建中排除SSL类来使其工作。

赞赏任何指向优秀Java SPDY客户端的指针。

更新2 :SPDY开发名单上的人说Jetty和Netty现在有独立的SPDY客户端库:

Jetty SPDY客户端:

;; Clojure dependencies
[org.eclipse.jetty.spdy/spdy-core "9.0.3.v20130506"]
[org.eclipse.jetty.spdy/spdy-client "9.0.3.v20130506"]

Netty SPDY客户:

;; Clojure dependency
[io.netty/netty-codec-http "4.0.0.CR3"]

还有Twitter的Finagle SPDY客户端,它基于Netty:

Finagle的SPDY客户端:

;; Clojure dependency
;; [com.twitter/finagle-spdy "6.4.0"]

Jetty的SPDY客户端允许您通过SSL或以明文运行它,因此这可能会绕过App Engine的SSL限制,并且由于Jetty是App Engine用于其servlet容器的,所以这可能是被正式祝福或改编。

我向App Engine问题跟踪器添加了一项功能请求...

“将SPDY客户端添加到SDK以连接到计算引擎服务器” https://code.google.com/p/googleappengine/issues/detail?id=9398

0 个答案:

没有答案