Architecture
Core
MLGraph Daemon Design
The unified service providing comprehensive distributed vector index management through gRPC, REST API, and CLI.
Architecture Overview
mlgraphd
Interface Layer
gRPC API
REST API
CLI
▼
Service Layer
Index Manager
Train Manager
Search Engine
▼
Storage Layer
Local FS
S3
Azure
GCS
RocksDB
Command Line Interface
mlgraphd [options] Options: --config PATH Configuration file (default: /etc/mlgraph/mlgraphd.conf) --grpc-port PORT gRPC service port (default: 50051) --rest-port PORT REST API port (default: 8080) --admin-port PORT Admin/metrics port (default: 9090) --data-dir PATH Data directory (default: /var/lib/mlgraph) --log-level LEVEL Log level (debug|info|warn|error) --enable-tls Enable TLS for all services --tls-cert PATH TLS certificate path --tls-key PATH TLS key path --cluster-mode Enable distributed mode --discovery-method METHOD Service discovery (manual|consul|etcd|k8s) --daemon Run as daemon
Service Interfaces
gRPC API
Port: 50051
- • Index management
- • Training operations
- • Search operations
- • Cluster management
REST API
Port: 8080
- • /v1/indices
- • /v1/indices/:id/train
- • /v1/indices/:id/search
- • /v1/cluster/status
CLI Tool
- • mlgraph index create
- • mlgraph train
- • mlgraph search
- • mlgraph cluster status
Storage Backends
Local FS
AWS S3
Azure Blob
Google Cloud
RocksDB
Configuration Example
# /etc/mlgraph/mlgraphd.conf
daemon:
grpc_port: 50051
rest_port: 8080
admin_port: 9090
data_dir: /var/lib/mlgraph
log_level: info
cluster:
enabled: true
discovery_method: consul
consul_address: localhost:8500
replication_factor: 3
storage:
local:
enabled: true
path: /var/lib/mlgraph/indices
s3:
enabled: true
bucket: mlgraph-indices
region: us-east-1
performance:
max_concurrent_operations: 100
index_cache_size_mb: 4096
query_timeout_ms: 30000
monitoring:
prometheus:
enabled: true
endpoint: /metrics
tracing:
enabled: true
jaeger_endpoint: localhost:6831CLI Examples
# Index Management mlgraph index create --name my-index --dimension 128 --centroids 1000 mlgraph index list mlgraph index info my-index mlgraph index delete my-index # Training mlgraph train --index my-index --file training-data.parquet mlgraph train --index my-index --s3 s3://bucket/training-data.csv # Search mlgraph search --index my-index --vector "[0.1, 0.2, 0.3, ...]" --top-k 10 mlgraph search --index my-index --file query.npy --top-k 100 --nprobe 50 # Cluster Management mlgraph cluster status mlgraph cluster rebalance --index my-index mlgraph cluster set-replication --index my-index --factor 3
Kubernetes Deployment
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mlgraphd
spec:
serviceName: mlgraphd
replicas: 3
selector:
matchLabels:
app: mlgraphd
template:
spec:
containers:
- name: mlgraphd
image: mlgraph/daemon:latest
ports:
- containerPort: 50051
- containerPort: 8080
- containerPort: 9090
env:
- name: MLGRAPH_CLUSTER_MODE
value: "true"
- name: MLGRAPH_DISCOVERY_METHOD
value: "k8s"
volumeMounts:
- name: data
mountPath: /var/lib/mlgraph
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100Gi