Need your data highly available? HaHelper

Overview

HaHelper

Need your data highly available but don't want the overheard of deploying and managing a third party database? Attach your data directly to your app! HaHelper is a client library that turns your server into a highly available data store for itself!

HaHelper stores your data and provides many configuration options to help facilitate how your data is made available.

  • Easily replicate your data to tolerate node failures
  • Cross Language support! Link two servers in any language!
  • Listen for data changes and act on updates!
  • Choose between disk-based or memory-based storage
  • Configurable service discovery methods

Getting Started

To being using HaHelper, simply download the HaHelper client library for the language of your choice. Read the documentation for your language for more details about implementation.

Starting a Server

Making your server HA is as simple as starting the HAHelper server/client library.

HaHelper(HaHelperServerConfig.load()).start()

Configuration

Configuration can be provided to HaHelper in a number of ways. Using HaHelperServerConfig.load() will search the following default locations in order of priority:

  • File defined at by the environment variable: HA_HELPER_CONFIG_PATH
  • ./ha_helper_config.yaml
  • ./config/ha_helper_config.yaml

If multiple configuration files exist, the first file found will be used. You must provide a configuration, no defaults exist.

The following configuration options are available:

Config Value Description DataType
local.serverPort The port to start the server on Int
cluster.clusterSize The number of services your cluster contains. Used to determine quorum. Int
cluster.multiMaster If the cluster should have evnetualConsistency instead of using leaderElection. Boolean
cluster.discoveryMethod How the server should detect other servers in the cluster. Either one of knownHosts or domainDiscoverey should be used. Object
cluster.discoveryMethod.knownHosts A list of known IP addresses and ports that are in the cluster. Example:
cluster.discoveryMethod.knownHosts:
- hostname: localhost
port: 9998
List may or may not include itself.
List
cluster.discoveryMethod.domainDiscovery A list of domain names to search List
persistence.enabled If data should be written to disk Boolean
persistence.replicas The number of locations where the data should be written. Int
persistence.storageLocation The file path of where files should be written String
persistence.compactionIntervalSeconds If compaction should occur. Compaction will minimize stored files to only include the most recently committed key-value pairs. Otherwise, all deltas are kept. Set to zero to disable compaction. Long

Storing Data

TODO

Fetching Data

TODO

Listening for Changes

TODO

You might also like...
Simple view which allow you to customise your pizza's toppings and size as per your choice.
Simple view which allow you to customise your pizza's toppings and size as per your choice.

TwistedPizzaToppingsView Overview Simple view which allows options to customize your pizza toppings and size as per your choice. Features Android 12 s

Algorithms and data structures in Kotlin.
Algorithms and data structures in Kotlin.

Here you can find the most common algorithms and data structures written in Kotlin. The goal of this project is to create the most eloquent implementa

Small kotlin library for persisting _single instances_ of kotlin data classes
Small kotlin library for persisting _single instances_ of kotlin data classes

PerSista Small library for persisting single instances of kotlin data classes. NB: PerSista uses typeOf() internally which is marked as @ExperimentalS

A clean-aesthetically pleasing Measuring Application, which uses relevant sensors-converts raw sensor data into human readable formatted outputs-and displays accurate measurements.
A clean-aesthetically pleasing Measuring Application, which uses relevant sensors-converts raw sensor data into human readable formatted outputs-and displays accurate measurements.

Measure App A clean-aesthetically pleasing Measuring Application, which uses relevant sensors-converts raw sensor data into human readable formatted o

Multi-thread ZX0 data compressor in Kotlin

ZX0-Kotlin ZX0-Kotlin is a multi-thread implementation of the ZX0 data compressor in Kotlin. Requirements To run this compressor, you must have instal

An AutoValue extension that generates binary and source compatible equivalent Kotlin data classes of AutoValue models.
An AutoValue extension that generates binary and source compatible equivalent Kotlin data classes of AutoValue models.

AutoValue Kotlin auto-value-kotlin (AVK) is an AutoValue extension that generates binary-and-source-compatible, equivalent Kotlin data classes. This i

Basic application that uses Retrofit, Moshi and Coil libraries to parse data from web API

DogAlbum_Api_CodeThrough Basic application that uses Retrofit, Moshi and Coil libraries to parse data from web API This folder contains the completed

Data structures in kotlin that maintain order

Ordered Data Structures I came from C++ and fell in love with kotlin. I used the C++ stdlib a lot. I have really been wanted to reach for map and unor

FirestoreCleanArchitectureApp is an app built with Kotlin and Firestore that displays data in real-time using the MVVM Architecture Pattern. For the UI it uses Jetpack Compose,  Android's modern toolkit for building native UI.
FirestoreCleanArchitectureApp is an app built with Kotlin and Firestore that displays data in real-time using the MVVM Architecture Pattern. For the UI it uses Jetpack Compose, Android's modern toolkit for building native UI.

FirestoreCleanArchitectureApp FirestoreCleanArchitectureApp is an app built with Kotlin and Cloud Firestore that displays data in real-time using Andr

Owner
Quinn Bast
Software Engineer in Training. Learning as much as I can!
Quinn Bast
NPS android library to get the feedback you need from users

netpromoterscore NPS android library helps you to get the feedback you need from the users Gradle Dependency: implementation 'com.github.quantumlibs:n

Nithin Naubad 1 May 12, 2022
Highly customizable, 1.8.9 Forge Hypixel Duels bot!

What is Duck Dueller? Duck Dueller is a free and open-source Hypixel Duels bot, designed to work for Forge 1.8.9! It is planned to support many modes

null 9 Jan 1, 2023
Demo Spting REST Service on Kotlin. Works with PostgreSQL via Spring Data. Data initialization provided by liquibase

Spring Boot REST API with Kotlin Spring Boot REST API service. Spring Data with PostgreSQL. Data initialization with Liquibase. Swagger UI Reference D

null 0 Jun 10, 2022
Detailing about the data provided (Data Visualization Application)

Detailing about the data provided (Data Visualization Application): • In the application, the data provided in the CSV is used for the Scatter plot cr

Neha Sharma 0 Nov 20, 2021
Use Android Data Binding wih Live Data to glue View Model and Android

Gruop-C Spliff Summary Use Android Data Binding wih Live Data to glue View Model and Android. Asynchronous communications implemented with KotlinX Cor

null 2 Nov 21, 2021
This repository is a simple humidity and temperature dashboard to present data from sensors on your phone

ChilliBook This repository is a simple humidity and temperature dashboard to present data from sensors on your phone. It uses Bluetooth LE and an ESP3

Alejandro Mera 1 Nov 8, 2021
Easy app for managing your files without ads, respecting your privacy & security

Simple File Manager Can also be used for browsing root files and SD card content. You can easily rename, copy, move, delete and share anything you wis

Simple Mobile Tools 1.2k Dec 29, 2022
To help to promote your android app by prompting users to rate your app in a bottom Sheet.

RateBottomSheet This an Android library to help to promote your Android App by prompting users to rate your app in the Google Play Store with a materi

Farham Hosseini 5 Jul 8, 2022
TakeNotes, taking care of your tasks and your health

Take Notes - Para tornar sua rotina mais Saudável TakeNotes, cuidando de suas tarefas e de sua saúde Sobre • Funcionalidades • Layout • Como executar

null 0 Dec 7, 2021
Binding your extras more easier, more simpler for your Android project

Ktan Ktan make your intent / arguments more easier and readable. And most important, will help you bind all extras for your activity / fragment. And a

Ade Fruandta 3 Jan 7, 2023