Skip to content

Overview ​

A Mink deployment is Mink nodes next to a Kafka cluster, a Postgres database and an S3-compatible bucket. Nodes hold only caches. Any node can stop at any time, and the others take over its work.

ComponentHolds
KafkaThe records, the only copy
PostgresTables, indexed offset ranges, data files and their statistics, snapshots, leases, members
BucketIceberg table metadata, manifest lists, manifests and statistics files
NodeCaches of built data files and metadata objects
Schema Registry, optionalThe schemas typed columns come from

Anatomy of a node ​

A node runs any of four roles, all four by default.

RoleRunsListens on
catalogThe Iceberg REST catalogcatalog_address
s3The S3 endpoint that serves metadata objects and builds data filess3_address
indexerIndexers, writers and topic following
adminThe admin API, the console and /metricsadmin_address
Postgrestables, files, snapshots, leasesmink nodeindexers, writersindexer roles3S3 endpoint, :9100catalogREST, :8181admin:9180cachememory, diskKafkarecordsbucketIceberg metadatafiles, snapshotstables, snapshotsdata filesbuildindexmetadatametadata

Background work ​

WorkRuns onDoes
MembershipEvery nodeRegisters the node in Postgres. See Cluster.
Topic followingindexer nodesFollows each table's topic in Kafka: new partitions, deleted or recreated topics
Lease sharingindexer nodesSpreads each table's partition leases over the indexing nodes, and gives each table one writer. See Cluster.
IndexerHolder of a partition leaseReads the partition's committed records once and records data files. See Indexing.
WriterHolder of a table's writer leaseCommits snapshots, assembles small files, publishes statistics, expires snapshots and collects old objects. See Snapshots.