Please see https://issues.apache.org/jira/browse/HBASE-1400 as a proposed
contrib for HBase, a REST gateway -- code named "Stargate" -- which implements
an extended/enhanced set of Web enabled APIs for HBase over the current REST
gateway:
- Based on Jersey (hat tip to Brian Beggs) for clean and easily extendable
code base
- Batch upload/commit capability
- Protobuf encoding option for efficient data transfer, especially for bulk
transactions where HTTP header overhead is amortized.
- Zookeeper enabled load sharing and discovery, prelude to
gateway-to-gateway load balancing
- Support transparent (reverse) Squid cache in front of storage gateway by
setting Cache-Control header according to column family TTLs, or no-cache for
metadata or scanner instance results, etc.
- Gateway and cluster status reports
Note that the I implemented this to a set of internal design criteria. For this
version
contributed to the community, I think the community should change the
interfaces and semantics if
the consensus on various details differs from what is in place now, but I think
they are pretty good if a little different than the current REST gateway.
While the iron is hot I would be willing to do some of that work. Some items
that come to mind that I can/would do:
- Back fill Javadoc.
- Consider enhancing application/octet-stream encoding support with
multipart responses for multivalue queries (or batching scanners).
Then there are some larger issues:
- Authentication and access control
- Use something like S3's shared secrets and access keys?
- HTTP basic authentication?
- SSL client cert validity and revocation checking?
The above options can be handled by stacking an authentication and rule based
access controller on top of Stargate as a transparent proxy, so may be out of
scope. Or maybe it is worth considering if at least one or both of the first
two options is easily supportable by logic in Stargate plus an administrative
table containing security policy and key material?
- Implementation of transparent load balancing
Kindly take a look at this at your convenience.
Best regards,
- Andy