ClusterMate-DropWizard

Foundation for ClusterMate-based services that run on DropWizard container.

License

License

Categories

Categories

DropWizard Container Microservices
GroupId

GroupId

com.fasterxml.clustermate
ArtifactId

ArtifactId

clustermate-dropwizard
Last Version

Last Version

0.10.5
Release Date

Release Date

Type

Type

jar
Description

Description

ClusterMate-DropWizard
Foundation for ClusterMate-based services that run on DropWizard container.
Project Organization

Project Organization

fasterxml.com

Download clustermate-dropwizard

How to add to project

<!-- https://jarcasting.com/artifacts/com.fasterxml.clustermate/clustermate-dropwizard/ -->
<dependency>
    <groupId>com.fasterxml.clustermate</groupId>
    <artifactId>clustermate-dropwizard</artifactId>
    <version>0.10.5</version>
</dependency>
// https://jarcasting.com/artifacts/com.fasterxml.clustermate/clustermate-dropwizard/
implementation 'com.fasterxml.clustermate:clustermate-dropwizard:0.10.5'
// https://jarcasting.com/artifacts/com.fasterxml.clustermate/clustermate-dropwizard/
implementation ("com.fasterxml.clustermate:clustermate-dropwizard:0.10.5")
'com.fasterxml.clustermate:clustermate-dropwizard:jar:0.10.5'
<dependency org="com.fasterxml.clustermate" name="clustermate-dropwizard" rev="0.10.5">
  <artifact name="clustermate-dropwizard" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.fasterxml.clustermate', module='clustermate-dropwizard', version='0.10.5')
)
libraryDependencies += "com.fasterxml.clustermate" % "clustermate-dropwizard" % "0.10.5"
[com.fasterxml.clustermate/clustermate-dropwizard "0.10.5"]

Dependencies

compile (13)

Group / Artifact Type Version
javax.validation : validation-api jar 1.1.0.Final
org.slf4j : slf4j-api jar 1.7.5
com.fasterxml.storemate : storemate-shared jar 1.1.2
com.fasterxml.storemate : storemate-store jar 1.1.2
com.fasterxml.clustermate : clustermate-api jar 0.10.5
com.fasterxml.clustermate : clustermate-service jar 0.10.5
com.fasterxml.clustermate : clustermate-servlet jar 0.10.5
io.dropwizard : dropwizard-assets jar 0.7.1
io.dropwizard : dropwizard-core jar 0.7.1
io.dropwizard : dropwizard-jetty jar 0.7.1
com.codahale.metrics : metrics-core jar 3.0.2
com.codahale.metrics : metrics-annotation jar 3.0.2
com.codahale.metrics : metrics-healthchecks jar 3.0.2

provided (2)

Group / Artifact Type Version
javax.servlet : servlet-api jar 2.5
javax.ws.rs : jsr311-api jar 1.1.1

test (3)

Group / Artifact Type Version
com.fasterxml.storemate : storemate-backend-bdb-je jar 1.1.2
com.fasterxml.storemate : storemate-backend-leveldb jar 1.1.2
junit : junit jar 4.11

Project Modules

There are no modules declared in this project.

General

ClusterMate project implements basic components of a multi-node storage system using single-node storage components provided by StoreMate project. It is designed as a toolkit for building distributed storage systems, either for stand-alone systems or as base for other distributed systems (like message queues).

ClusterMate adds hash-based partitioning of content to implement replicated storage. Although most work is done by clients (base client library implementation included), additional timestamp-based synchronization mechanism is provided for content repair. Repair mechanism is also used when replacing failed nodes or expanding/shrinking cluster. Conflict resolution is configurable; details depend on higher-level system (TransiStore, for example, has very simple model due to immutable contents).

Project license is Apache 2.0.

Check out Project Wiki for more.

Status

Project is complete to the degree that other systems can be built on it.

Publicly available projects that build on ClusterMate include:

  • TransiStore is a distributes temporary data storage: useful for things like storing intermediate results for Map/Reduce systems, or for buffering large database result sets.

Features

Default storage system has following features:

  • Data store
  • Immutable: that is, write-once, can not modify
  • No size limitations, storage works for data of any size, although may not be optimal for smallest payloads
  • Metadata/data separation: metadata stored in a database (by StoreMate), data on filesystem or inlined (small entries)
  • Automatic on-the-fly compression of data (not metadata)
  • Access
  • Clustered CRUD (PUT, GET/HEAD, DELETE)
  • Streaming (for large data)
  • On-the-fly compression/uncompression
  • Hash-based routing
  • Range queries within specified prefixes (that is, routing can use path prefixes)
  • Distributed operation
  • Configurable N-way replication and sharding
  • Automatic server-to-server data repair to handle partial updates and transient outages
  • Clients can choose subset of N for successful operations with lower latency

Sub-modules

Project is a multi-module Maven project. Sub-modules are can be grouped in following categories:

  • api: Basic datatypes shared by client and service modules
  • json: Jackson converters for core datatypes from 'api' module and StoreMate or client-server and server-server communication
  • client:
  • single-node access components ("call")
  • clustered-access ("operation")
  • Specific sub-modules for different HTTP clients:
  • client-ahc for implementation using Async HTTP Client
  • client-jdk that uses basic JDK-provided java.net.HttpURLConnection
  • service:
  • Configurable implementation of distributed store and matching entry points
  • dropwizard
  • Deployable container around service that exposes CRUD endpoints, entry listing, building on DropWizard framework (which runs on Jersey+Jetty)

Versions

Version
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.26
0.9.25
0.9.24
0.9.23
0.9.22
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.14
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0