- 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
101 lines
2.7 KiB
YAML
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]
|
|
}
|
|
]
|
|
}
|