Hi All,

I would like to start the discussion of making HTTP the only protocol that
Apache TinkerPop supports starting with the next major version. There are
several reasons I'm suggesting this. First, we already support both
WebSockets and HTTP in Gremlin Server which causes a maintenance burden of
having to support both. Also, I ran some tests and a streaming version of
HTTP using chunked transfer encoding performs just as well as streaming via
WebSockets so there won't be a performance loss in terms of latency.
Second, HTTP is significantly more popular so it will be easier for other
third party clients to connect to. Third, this is an opportunity to rework
the remote Transaction API which in its current form causes unnecessary
complexity in the server. This will also serve as a good opportunity to
make the connection options more similar among all the GLVs.

I've experimented with replacing WebSockets with HTTP (both 1.1 and 2) and
noticed similar performance in most cases. For HTTP/1.1, there was some
slowdown in cases where thousands of queries with few results were issued
per second as lots of HTTP connections needed to be opened, but I feel like
this isn't a practical use case. My recommendation for now is to go with
HTTP/1.1 as it has all the features we need and it has mostly been
implemented already on the server side.

To ease the transition, I'm suggesting that we maintain WebSockets for the
foreseeable future in the 3.x line while the 4.x line is moved to use HTTP
exclusively. This will also give more time for us to build out support for
transactions over HTTP which is the only missing feature that is supported
when using WebSockets.

I'd like to hear any thoughts regarding this.

Thanks,
Ken

Reply via email to