Skip to content

Module Map

DSM is organized as a multi-module toolkit so teams can pull in only the layers they need.

This page explains module boundaries. If you are integrating DSM into a service, start with the guides and Reference section first.

ModulePurpose
dsm-apiPublic contracts: runtime facade, collection handles, specs, diagnostics, conflict resolvers, change streams, observability and error SPI. No runtime implementation.
dsm-runtimeDefault dsm-api implementation: DsmRuntimeBuilder, in-memory register/lease/CRDT collections, collection and spec builders, built-in CRDTs, record codec, and eviction scheduling. Most application code depends here.
dsm-cluster-protoProtobuf message definitions for cluster envelopes and gossip, including the service_id isolation field.
dsm-clusterTransport-level membership: standalone, multicast, and unicast gossip implementations, plus the relay health SPI.
dsm-securityMessage signing, replay protection, cluster admission validation, optional AEAD payload encryption, and sender rate-limiting.
dsm-syncRuntime control-plane and data-plane replication services with digest, snapshot, replay repair, and adaptive per-peer repair planning.
dsm-federationCross-cluster federation bridge for register, lease, and CRDT tiers with anti-entropy repair.
dsm-metrics-micrometerMicrometer adapter for the DsmMetrics SPI, feeding Prometheus, Grafana, and OpenTelemetry pipelines.
dsm-spring-boot-autoconfigureRuntime-first Spring Boot autoconfiguration and the trace-context filter.
dsm-spring-boot-starterStarter dependency for standard Boot integration.
dsm-examplesRunnable standalone, Spring Boot, and interactive multi-node REPL examples.
dsm-test-supportFakes and reusable test transports plus chaos and fault-injection helpers.
dsm-integration-testEnd-to-end integration coverage across modules.
dsm-benchmarkJMH benchmark suite for register, lease, CRDT, digest, and serialization hot paths.

Layered View

Layered module view: application code depends on dsm-runtime, which implements dsm-api and exposes collection contracts, a runtime facade with builders, and the diagnostics/observability SPI. dsm-runtime is used by the dsm-spring-boot modules, extended by dsm-federation, used by dsm-sync (which drives replication and repair flows), and paired with dsm-cluster and dsm-security.

Read dsm-api first for the contracts, then dsm-runtime for the runtime API surface and collection builders.

From there:

  • read dsm-sync if you need to understand replication internals
  • read dsm-cluster to choose membership behavior
  • read dsm-security before planning production rollout
  • read dsm-federation if you span more than one cluster
  • read the Spring modules only if your service uses Boot

Integration Reading Path

text
first integration?
	|
	+--> Getting Started
	+--> Standalone Quickstart or Spring Boot
	+--> Runtime API / Collection Specs / Collection Handles
	+--> scenario cookbooks
	+--> architecture internals only when needed