ClusterMate-parent

Parent pom for shared settings for project sub-modules

License

License

GroupId

GroupId

com.fasterxml.clustermate
ArtifactId

ArtifactId

clustermate-parent
Last Version

Last Version

0.10.5
Release Date

Release Date

Type

Type

pom
Description

Description

ClusterMate-parent
Parent pom for shared settings for project sub-modules
Project URL

Project URL

https://github.com/cowtowncoder/ClusterMate
Project Organization

Project Organization

fasterxml.com
Source Code Management

Source Code Management

http://github.com/cowtowncoder/ClusterMate

Download clustermate-parent

How to add to project

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

Dependencies

test (1)

Group / Artifact Type Version
junit : junit jar 4.11

Project Modules

  • clustermate-api
  • clustermate-json
  • clustermate-client
  • clustermate-client-ahc
  • clustermate-client-jdk
  • clustermate-service
  • clustermate-servlet
  • clustermate-dropwizard

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