Developer Preview: Client Protocol

Hazelcast Open Binary Client Protocol – Developer Preview

Hazelcast is offering developers a preview of our new protocol, the Hazelcast Open Binary Client Protocol. This is a huge move, as it brings Hazelcast closer to being platform-independent. With this new protocol, developers can write clients in any programming language of their choice and only implement the client to the extent to which they need. You don’t need to implement a client to see this for yourself, you can take a look at a Python client that implements this protocol here – https://github.com/hazelcast/hazelcast-python-client.

The Open Binary Client Protocol is based entirely on writing bytes and receiving bytes from a TCP connection, so any programming language that has the capability to write and receive bytes over a TCP socket also has the capability to be a Hazelcast client. Now, Hazelcast is an even better option for developers to use across any platform. I’m particularly excited to see Hazelcast become more prevalent in web applications. No longer is Hazelcast strictly limited to Java engineers, now it can be integrated into any backend by writing a client in your native backend language.

Developer’s choice

In addition to the Open Binary Client Protocol being platform independent, it’s extremely versatile. A client can be as complete as the Hazelcast Java client or as incomplete as a client that connects to the cluster and can only execute one operation — it’s completely up to the developer. If you’re only using Hazelcast for maps, then you only need to implement the map data structure in your client. If the client must be used in a production-intense environment, then you may choose to implement a smart client with capabilities similar to our C++, C# and Java clients. This allows the protocol to be extended from a few functions written for a client to a complete API if the project necessitates it.

Finally, the Open Binary Client Protocol still takes steps towards rolling-updates. Clients that use older versions of the open binary client protocol will still be able to communicate with clusters that use a newer version of the protocol. Once you write a client, you’ll be able to keep using it even if members in the cluster are using newer versions. This means no painful migrations when new versions of Hazelcast are released and no staying behind on deprecated releases to maintain compatibility.

"Python" - https://xkcd.com/353/
“Python” – https://xkcd.com/353/

To implement your own Hazelcast client, we provide developers with two documents – the Open Binary Client Protocol Specification – Developer Preview and a Client Implementation Guide – Developer Preview. The implementation guide makes heavy use of the protocol specification, so I recommend you at least skim that document first. In addition, the implementation guide uses the Python implementation as an example.

I hope that you’re as excited to try implementing your own client as I was to work on this project. It was a lot of fun to work on the Python implementation and work with our engineering team to produce the documents. As long as you’re using Hazelcast 3.6 (EA), you don’t need to update your version or download any additional libraries to write your own client – just download the documents and start writing code!