Since last updage of GKVS all connections and channels beween clients ans servers are protected by SSL/TLS.
gRPC has the option to leverage SSL in protocol, that option is enforced for GKVS. because Generic Key Value Service
is intended to transfer raw data between clients and servers.
Certstrap is not required, but simplifies keys/certs generation. All operations you can do by using OpenSSL.
Grab your copy now!
Performance
GKVS showed good and acceptable results on peformance tests with enforced SSL.
GKVS-java-client has a native implementation of SSL security provider, so makes Java really good on this.
Future is the class in JDK that gives ability to get result somehow in the future.
During the interval application can perform another task that how parallelism can give immediate benefit without deep refactoring of application.
Here is the example of GET operation with future:
GkvsFuture<Record>future=Gkvs.Client.get(KEY).async();// do something elseRecordrecord=future.getUnchecked();// blocking code
And MULTI_GET example:
GkvsFuture<Iterable<Record>>records=Gkvs.Client.multiGet(LOAD_KEYS).async();// do something elsefor(Recordrec:records.getUnchecked()){System.out.println(rec.key().get());}
GkvsFuture also supports classical get() function with all checked exceptions in the list.
Additionally GkvsFuture has ability to register a listener and get notification when data will be available.
Java client works throught GRPC and supports auto-balancing.
Performance: 10000 get random requests in 4622 milliseconds.
It compiled with all shadow libs to avoid any jar conflicts on applications side.
Java API
Valuevalue=Gkvs.Client.get("TEST","key").sync().value();Gkvs.Client.put("TEST","key","value").sync();Gkvs.Client.remove("TEST","key").sync();// compare and setRecordrecord=Gkvs.Client.get("TEST","key").sync();booleanupdated=Gkvs.Client.put("TEST","key","replace_value").compareAndPut(record.version()).sync().updated();booleanexists=Gkvs.Client.exists("TEST","key").sync().exists();