c7a02c3905
5 层 + 1 条 NATS 零拷贝消息总线的 monorepo(Monolith First → Microservices Morph B)。 纵向主干(任务流 + Token 流回流)已真实跑通,横向各层能力为带注释的桩。 已贯通(real code): - sundynix-shared: 共享契约 + JetStream/core NATS 真实收发(bus) + 内嵌 NATS(devnats) + e2e 测试 - sundynix-gateway: Gin 接入 + DSL 解析组装 + NATS Publish + SSE 流式输出 - sundynix-dispatcher: NATS 消费 + Eino Orchestrator 流式回流 + 熔断器 + LLM Pool 占位流式 - 链路: HTTP POST → DSL → sundynix.tasks.* → Dispatcher → Token 经 sundynix.streams.<id> 回流 → SSE - 基础设施: docker-compose(nats/postgres/redis/neo4j/milvus) + Makefile(make demo/e2e) 待填(桩): - Eino 图编排 compose.NewGraph、LLM Pool 接 vLLM/Ollama - Gateway store 换真实 pgx/redis - sundynix-mcp-go: Bleve+Milvus+Neo4j 混合检索 / UniOffice / 外部 API - sundynix-mcp-py: gVisor 沙箱 / MinerU(PaddleOCR) / Docker 解释器 - sundynix-desktop: React Flow 画布 → DSL 导出 → SSE 展示
72 lines
2.0 KiB
YAML
72 lines
2.0 KiB
YAML
version: "3.9"
|
|
|
|
# 基础设施 — NATS 零拷贝骨干网 + 业务存储 + 向量/图数据库
|
|
services:
|
|
nats:
|
|
image: nats:2-alpine
|
|
command: ["-c", "/etc/nats/nats-server.conf"]
|
|
ports: ["4222:4222", "8222:8222"]
|
|
volumes:
|
|
- ./deploy/nats/nats-server.conf:/etc/nats/nats-server.conf:ro
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_USER: sundynix
|
|
POSTGRES_PASSWORD: sundynix
|
|
POSTGRES_DB: sundynix
|
|
ports: ["5432:5432"]
|
|
volumes: ["pg_data:/var/lib/postgresql/data"]
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports: ["6379:6379"]
|
|
|
|
# --- Milvus 向量数据库 (standalone 需 etcd + minio) ---
|
|
milvus-etcd:
|
|
image: quay.io/coreos/etcd:v3.5.14
|
|
environment:
|
|
ETCD_AUTO_COMPACTION_MODE: revision
|
|
ETCD_AUTO_COMPACTION_RETENTION: "1000"
|
|
ETCD_QUOTA_BACKEND_BYTES: "4294967296"
|
|
ETCD_SNAPSHOT_COUNT: "50000"
|
|
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
|
|
volumes: ["milvus_etcd:/etcd"]
|
|
|
|
milvus-minio:
|
|
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
|
|
environment:
|
|
MINIO_ACCESS_KEY: minioadmin
|
|
MINIO_SECRET_KEY: minioadmin
|
|
command: minio server /minio_data
|
|
volumes: ["milvus_minio:/minio_data"]
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
|
interval: 30s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
milvus:
|
|
image: milvusdb/milvus:v2.4.13
|
|
command: ["milvus", "run", "standalone"]
|
|
environment:
|
|
ETCD_ENDPOINTS: milvus-etcd:2379
|
|
MINIO_ADDRESS: milvus-minio:9000
|
|
ports: ["19530:19530", "9091:9091"] # 19530=gRPC, 9091=metrics/health
|
|
volumes: ["milvus_data:/var/lib/milvus"]
|
|
depends_on: [milvus-etcd, milvus-minio]
|
|
|
|
neo4j:
|
|
image: neo4j:5-community
|
|
environment:
|
|
NEO4J_AUTH: neo4j/sundynix
|
|
ports: ["7474:7474", "7687:7687"]
|
|
volumes: ["neo4j_data:/data"]
|
|
|
|
volumes:
|
|
pg_data:
|
|
milvus_etcd:
|
|
milvus_minio:
|
|
milvus_data:
|
|
neo4j_data:
|