]
Tristan Tarrant updated ISPN-5357:
----------------------------------
Fix Version/s: 9.3.0.Final
(was: 9.2.0.Final)
Hot Rod protocol 3.0
--------------------
Key: ISPN-5357
URL:
https://issues.jboss.org/browse/ISPN-5357
Project: Infinispan
Issue Type: Enhancement
Reporter: Galder ZamarreƱo
Assignee: Galder ZamarreƱo
Fix For: 9.3.0.Final
Infinispan should expose a single endpoint which should behave as follows:
- by default offer an HTTP/1.1 RESTftul interface
- through HTTP upgrade allow switching to better protocols
- support an HTTP/2 RESTful interface
- support Hot Rod 3.0, which would be a gRPC protocol with additional L2 and L3
intelligence for capable clients
*UPDATE (6/10/2015)*: Hot Rod 3.0 could become a HTTP REST protocol taking advantage of
existing infrastructure to deal with HTTP requests efficiently, and if it was based on
HTTP 2.0, we could have binary data inside of it. Performance should be on par. Text mode
could be available for debug or demos. This essentially would mean REST and Hot Rod would
merge into one.
A binary protocol rethink is needed to take better advantage of CPUs and buffering. This
is based on the ideas of Martin Thompson's Simple Binary Encoding [blog
post|http://mechanical-sympathy.blogspot.cz/2014/05/simple-binary-encoding.html]
In essence, we need to move Hot Rod protocol towards having mostly fixed size fields,
hence getting rid of `vInt` and `vLong` formats which although safe some bytes, they
hinder long stream reading patterns.
An optional part here would be whether to consider using SBE directly, but this JIRA
should be mostly oriented at making sure we have a protocol that can be read fast and
efficiently.