FYI

We have an open discussion regarding replacing Jute, using gRPC and related 
things in this sub channel on the ASF Slack board. All are welcome to join in:

https://the-asf.slack.com/archives/CQKS7A3FT 
<https://the-asf.slack.com/archives/CQKS7A3FT>

-Jordan

> On Nov 18, 2019, at 9:25 AM, Jordan Zimmerman <jor...@jordanzimmerman.com> 
> wrote:
> 
> Hi Folks,
> 
> I've written a proof of concept implementation of a ServerCnxnFactory that 
> implements gRPC. The goal is to make it possible to easily write ZooKeeper 
> clients in non-JVM languages. Using the proof of concept I was able to write 
> a Golang client easily. What's the interest level of something like this? 
> Let's discuss if it's worth pursuing. I'd be willing to move this from proof 
> of concept to production but I'll need help (1 or 2 co-developers).
> 
> If you want to try it, I've pushed the Golang client and some instructions 
> here (let me know if you have any issues - I'm a go neophyte). Note: 
> "zookeeper/test.go" is the interesting file:
> 
>       https://github.com/Randgalt/zkgrpc <https://github.com/Randgalt/zkgrpc>
> 
> Here's the proof of concept on the ZK server side (the interesting files are 
> RpcServerCnxn.java, RpcServerCnxnFactory.java, RpcZooKeeperServer.java and 
> zookeeper.proto):
> 
>       https://github.com/apache/zookeeper/compare/master...Randgalt:wip-grpc 
> <https://github.com/apache/zookeeper/compare/master...Randgalt:wip-grpc> 
> 
> Issues:
> Writing a client, even with gRPC, will require some work. Sessions have to be 
> maintained, watchers have to be maintained, etc.
> Currently, Jute is deeply embedded in ZooKeeper. The proof of concept has to 
> emulate Jute byte buffers. Ideally, this will be abstracted so that only 
> records could be used so that the gRPC connection doesn't have to keep 
> marshalling/unmarshalling byte buffers
> I don't know enough about the gRPC client/server implementations to know if 
> it will meet the needs of ZooKeeper. Anyone have experience here?
> I haven't completely thought through how much work it will take to write 
> useful clients. As I've shown with the proof of concept simple ZK CRUD db 
> operations work well. I need to spend time writing a recipe such as Leader 
> Election to see how much work is required.
> I'm not sure how things like SASL and reconfig would work with gRPC
> 
> -Jordan

Reply via email to