Kvnode

KVNode is a key-value node for low-latency JSON storage with an HTTP API and NDJSON replication stream. It is part of the HolaCloud ecosystem.

Key Features

WAL-Based Persistence

Every write is recorded in a Write-Ahead Log (WAL) before being applied to the in-memory store. The WAL feeds the replication stream used by child nodes.

Pluggable WAL Backends

KVNode supports multiple WAL backends — memory, Kafka, PostgreSQL, Redis, and MongoDB — so you can choose the persistence layer that best fits your infrastructure.

Multi-Language SDKs

Official SDKs are available for Go, Python, Java, JavaScript, Kotlin, PHP, and Node.js, making it easy to integrate KVNode into any stack.

Replication Stream

Replication uses /v1/replicate and uppercase NDJSON commands such as SET, DELETE, BASELINE_BEGIN, BASELINE_END, and PING.

Use Cases

  • Configuration Storage: Store application configuration as JSON key-value pairs.
  • Feature Flags: Manage feature toggles centrally and propagate changes in real time.
  • Service Discovery: Register and discover service endpoints with low-latency reads.
  • Session Store: Store user sessions with fast lookups.

API Overview

KVNode exposes a RESTful API at https://api.hola.cloud. Internal endpoints require the presence of X-Glue-Authentication or both apikey and secret headers; missing headers return 403 forbidden.

Method Path Description Auth
GET /healthz Health check Public
GET /readyz Readiness (checks parent connection) Public
GET /v1/status Node status (collections, replication, uptime) Internal
GET /v1/metrics Node metrics (writes, reads) Internal
GET /v1/collections List collections Internal
POST /v1/collections Create collection Internal
DELETE /v1/collections/{col} Delete collection Internal
GET /v1/collections/{col}/keys List keys (limit, prefix) Internal
GET /v1/collections/{col}/keys/* Get key value Internal
POST /v1/collections/{col}/keys/* Set key value Internal
DELETE /v1/collections/{col}/keys/* Delete key Internal
POST /v1/replicate Replication stream (NDJSON) Internal

Comments

Leave a comment