routeHints.put(
new RouteHint(
"orders",
EntityMetadata.empty(),
"10.0.0.12:8443"));
One local-looking put(...)
Open Source Distributed Coordination
Local-looking code. Distributed consistency and coordination built in.
After registering a collection, call put, acquire, or apply. DSM packages replication, conflict resolution, fencing, convergence, and repair into the runtime your service already owns.
routeHints.put(
new RouteHint(
"orders",
EntityMetadata.empty(),
"10.0.0.12:8443"));
One local-looking put(...)
Healthy peers repair toward the same route hint.
REGISTER capability stage 1 of 4.
Platform highlights
DSM focuses on the problems enterprise teams actually have to solve: metadata replication, shard ownership, consistent routing, and observability that matches operational reality.
Registers, lease collections, and CRDT collections share one runtime contract so teams can choose the right consistency primitive per workload.
Runtime sync combines delta flow, proactive anti-entropy, adaptive replay/snapshot repair, and relay health gating for long-lived clusters.
HMAC signing, replay protection, admission validation, sender bans, and optional payload encryption protect replication channels.
RecordCodec schema fingerprints and structured error codes make incompatible payload rollouts visible instead of silently corrupting state.
Choose standalone, multicast, or unicast gossip membership based on your deployment topology and trust boundaries.
Starter and autoconfiguration modules expose the runtime facade and collection handles with explicit YAML configuration and documented validation rules.
Cross-cluster federation supports register repair, lease observation, and CRDT delta propagation through an explicit relay SPI.
Enterprise workloads
DSM is a strong fit for routing metadata, ownership coordination, distributed counters, and service-local control-plane state that still needs multi-node replication.
Replicate route hints and gateway metadata across nodes so request steering stays locally fast while updates propagate through the DSM runtime.
Matches the route-hints register example in the standalone runtime sample.Lease collections coordinate shard ownership with autonomous renewal and fencing-aware handoff for workers that need a single active owner.
Backed by the shard-owner lease example and the runtime lease diagnostics surface.Forward selected register, lease, and CRDT collection state across independent runtimes without merging membership domains.
Backed by the dsm-federation bridge, relay SPI, and federation integration tests.Use CRDT collections for counters and convergent state so each node can update locally while the cluster repairs toward a consistent view.
Modeled on the request-counter CRDT example in the runtime sample factory.From API to operations in three steps
DSM keeps collection modeling, runtime wiring, cluster sync, and operator-facing diagnostics aligned. The documentation follows the same sequence: guide first, reference second, operations and architecture when needed.
Register collections through a runtime-first API where tenant, application, and collection IDs are explicit instead of hidden behind framework magic.
1CollectionSpecBuilder.<RouteHint>register(2 "shared",3 "gateway",4 "route-hints")5 .schemaId("route-hints/v1")6 .codec(new RouteHintCodec())7 .build();Wire DSM directly or let the Spring Boot starter assemble the runtime, membership, and configured collection handles from application properties.
1dsm:2 cluster-id: runtime-example3 service-id: gateway-service4 cluster:5 mode: unicast6 collections:7 - bean-name: routeHintsCollection8 tenant-id: shared9 application-id: gateway10 collection-id: route-hints11 schema-id: route-hints/v112 type: REGISTER13 entity-type: com.example.RouteHint14 sync:15 anti-entropy:16 sweep-enabled: trueRead runtime snapshots, cluster membership state, lease-specific diagnostics, and metrics callbacks without bolting on a second observability model.
1RuntimeDiagnostics diagnostics = runtime.diagnostics();2 3int totalEntries = diagnostics.totalEntries();4ClusterView clusterView = diagnostics.clusterView();5List<CollectionDiagnostics> collections = diagnostics.collections();6List<LeaseCollectionDiagnostics> leaseCollections = diagnostics.leaseCollections();Start in minutes
The same runtime contracts support direct Java wiring for embedded services and explicit Spring Boot configuration for platform-standard deployments. After the first setup, use the reference pages and scenario cookbooks as the day-to-day implementation manual.
1<dependency>2 <groupId>com.leanowtech.dsm</groupId>3 <artifactId>dsm-runtime</artifactId>4 <version>${dsm.version}</version>5</dependency>1DsmRuntime runtime = DsmRuntimeBuilder.builder()2 .clusterId("runtime-example")3 .serviceId("gateway-service")4 .membership(new StandaloneClusterMembership(self))5 .build();6 7runtime.start();Module architecture