Files
microdao-daarion/infrastructure/kubernetes/nats/streams.yaml
Apple 8fe0b58978 🚀 NATS JetStream: K8s deployment + streams + job schema v1
- K8s deployment (2 replicas, PVC, initContainer для server_name)
- Streams definitions (MM_ONLINE, MM_OFFLINE, MM_WRITE, MM_EVENTS)
- Job payload schema (JSON v1 з idempotency)
- Worker contract (capabilities + ack/retry)
- Init streams script
- Оновлено ARCHITECTURE-150-NODES.md (Control-plane vs Data-plane)

TODO: Auth (nkeys), 3+ replicas для prod, worker-daemon implementation
2026-01-10 10:02:25 -08:00

101 lines
2.7 KiB
YAML

---
# NATS JetStream Streams Configuration
# Memory Module v1: 4 streams для різних класів даних та SLO
apiVersion: v1
kind: ConfigMap
metadata:
name: nats-streams-config
namespace: nats
data:
streams.json: |
{
"streams": [
{
"name": "MM_ONLINE",
"subjects": [
"mm.embed.online",
"mm.retrieve.online",
"mm.summarize.online"
],
"retention": "limits",
"max_age": 1800000000000,
"max_deliver": 3,
"ack_policy": "explicit",
"storage": "file",
"replicas": 3,
"discard": "old",
"duplicate_window": 300000000000
},
{
"name": "MM_OFFLINE",
"subjects": [
"mm.embed.offline",
"mm.index.offline",
"mm.backfill.offline"
],
"retention": "limits",
"max_age": 2592000000000000,
"max_deliver": 10,
"ack_policy": "explicit",
"storage": "file",
"replicas": 3,
"discard": "old"
},
{
"name": "MM_WRITE",
"subjects": [
"mm.qdrant.upsert",
"mm.pg.write",
"mm.neo4j.write"
],
"retention": "limits",
"max_age": 604800000000000,
"max_deliver": 10,
"ack_policy": "explicit",
"storage": "file",
"replicas": 3,
"discard": "old"
},
{
"name": "MM_EVENTS",
"subjects": [
"mm.event.audit",
"mm.event.status"
],
"retention": "limits",
"max_age": 2592000000000000,
"ack_policy": "explicit",
"storage": "file",
"replicas": 3,
"discard": "old"
}
],
"consumers": [
{
"stream_name": "MM_ONLINE",
"name": "online-worker-tier-a",
"durable_name": "online-worker-tier-a",
"ack_policy": "explicit",
"ack_wait": 30000000000,
"max_ack_pending": 5000,
"filter_subject": "mm.embed.online",
"deliver_policy": "all",
"max_deliver": 3,
"backoff": [1000000000, 5000000000, 30000000000]
},
{
"stream_name": "MM_OFFLINE",
"name": "offline-worker-tier-b",
"durable_name": "offline-worker-tier-b",
"ack_policy": "explicit",
"ack_wait": 300000000000,
"max_ack_pending": 10000,
"filter_subject": "mm.embed.offline",
"deliver_policy": "all",
"max_deliver": 10,
"backoff": [10000000000, 60000000000, 300000000000, 1800000000000]
}
]
}