- Автоматичне створення streams при старті worker - Перевірка наявності streams перед створенням - Підтримка всіх 4 streams (MM_ONLINE, MM_OFFLINE, MM_WRITE, MM_EVENTS) Це вирішує проблему з DNS в K8s Job
Worker Daemon — Memory Module
Дата: 2026-01-10
Версія: 1.0.0
📋 Призначення
Worker daemon запускається на кожній ноді і:
- Реєструє capabilities в capability registry
- Підписується на NATS consumers
- Виконує jobs з перевіркою requirements
- Звітує метрики та статуси
🔧 Deployment
K8s (NODE1, NODE3)
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: memory-worker
namespace: daarion
spec:
selector:
matchLabels:
app: memory-worker
template:
metadata:
labels:
app: memory-worker
spec:
containers:
- name: worker
image: memory-worker:latest
env:
- name: NODE_ID
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: TIER
value: "A" # або B, C
- name: NATS_URL
value: "nats://nats-client.nats:4222"
- name: CAPABILITY_REGISTRY
value: "postgresql://..." # або Consul
Docker (NODE2)
docker run -d \
--name memory-worker \
-e NODE_ID=node2-macbook-m4 \
-e TIER=C \
-e NATS_URL=nats://nats-client.nats:4222 \
memory-worker:latest
📊 Capability Registry Schema
Postgres Table
CREATE TABLE worker_capabilities (
node_id VARCHAR(255) PRIMARY KEY,
tier VARCHAR(10) NOT NULL,
region VARCHAR(50),
trust_zone VARCHAR(50),
hardware JSONB NOT NULL,
capabilities JSONB NOT NULL,
status VARCHAR(20) NOT NULL,
last_heartbeat TIMESTAMP WITH TIME ZONE NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_worker_capabilities_tier ON worker_capabilities(tier);
CREATE INDEX idx_worker_capabilities_status ON worker_capabilities(status);
CREATE INDEX idx_worker_capabilities_heartbeat ON worker_capabilities(last_heartbeat);
🔄 Worker Flow
-
Startup:
- Реєстрація capabilities в registry
- Heartbeat (кожні 30s)
-
Job Processing:
- Підписка на consumer (durable)
- Перевірка
requirementsvscapabilities - Виконання job
- ACK/NAK
-
Metrics:
- Експорт метрик в Prometheus format
- Відправка алертів в Matrix (якщо потрібно)
📁 Структура коду
worker-daemon/
├── main.py # Entry point
├── registry.py # Capability registry (Postgres/Consul)
├── nats_client.py # NATS consumer
├── job_executor.py # Job execution
├── metrics.py # Prometheus metrics
└── requirements.txt # Python dependencies
Документ створено: 2026-01-10 19:30 CET