🚀 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
This commit is contained in:
100
infrastructure/kubernetes/nats/streams.yaml
Normal file
100
infrastructure/kubernetes/nats/streams.yaml
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
# 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]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user