Chuyển tới nội dung chính

Configuration Guide

application.yml Structure

spring:
profiles:
active: docker # Options: local, docker, prod

application:
name: smart-city-platform

# MongoDB Configuration
data:
mongodb:
warm:
uri: mongodb://admin:password123@core-mongo-warm:27017/warm_db?authSource=admin
cold:
uri: mongodb://admin:password123@core-mongo-cold:27017/cold_db?authSource=admin

# Redis Configuration
redis:
host: core-redis-hot
port: 6379
timeout: 60000

# RabbitMQ Configuration
rabbitmq:
addresses: rabbitmq-edge-1:5672,rabbitmq-edge-2:5673
username: edge_user
password: edge_pass
template:
receive-timeout: 2000

# ML Service Configuration
ml:
service:
url: http://smart-city-ml:8000
timeout: 5000 # milliseconds

# Data Ingestion Configuration
ingestion:
batch:
size: 1000
max-size: 5000
schedule:
fixed-rate: 10000 # milliseconds (10 seconds)

# Storage Configuration
storage:
hot:
ttl-seconds: 3600 # 1 hour
warm:
retention-days: 30
cold:
retention-days: 365

# Server Configuration
server:
port: 8080

# Logging Configuration
logging:
level:
root: INFO
com.smartcity: DEBUG

Environment Variables

MongoDB

# WARM Tier
MONGODB_WARM_URI=mongodb://admin:password123@core-mongo-warm:27017/warm_db?authSource=admin

# COLD Tier
MONGODB_COLD_URI=mongodb://admin:password123@core-mongo-cold:27017/cold_db?authSource=admin

Redis

REDIS_HOST=core-redis-hot
REDIS_PORT=6379

RabbitMQ

RABBITMQ_ADDRESSES=rabbitmq-edge-1:5672,rabbitmq-edge-2:5673
RABBITMQ_USERNAME=edge_user
RABBITMQ_PASSWORD=edge_pass

ML Service

ML_SERVICE_URL=http://smart-city-ml:8000
ML_SERVICE_TIMEOUT=5000

Application

SERVER_PORT=8080
SPRING_PROFILES_ACTIVE=docker

Profile Configurations

local Profile (application-local.yml)

spring:
data:
mongodb:
warm:
uri: mongodb://localhost:27018/warm_db
cold:
uri: mongodb://localhost:27019/cold_db
redis:
host: localhost
port: 6379
rabbitmq:
addresses: localhost:5672,localhost:5673

ml:
service:
url: http://localhost:8000

docker Profile (application-docker.yml)

spring:
data:
mongodb:
warm:
uri: mongodb://admin:password123@core-mongo-warm:27017/warm_db?authSource=admin
cold:
uri: mongodb://admin:password123@core-mongo-cold:27017/cold_db?authSource=admin
redis:
host: core-redis-hot
rabbitmq:
addresses: rabbitmq-edge-1:5672,rabbitmq-edge-2:5673

ml:
service:
url: http://smart-city-ml:8000

Configuration Properties Reference

Ingestion Properties

PropertyTypeDefaultDescription
ingestion.batch.sizeint1000Batch size cho mỗi pull
ingestion.batch.max-sizeint5000Maximum batch size
ingestion.schedule.fixed-ratelong10000Pull interval (ms)

Storage Properties

PropertyTypeDefaultDescription
storage.hot.ttl-secondsint3600Redis TTL (seconds)
storage.warm.retention-daysint30MongoDB WARM retention
storage.cold.retention-daysint365MongoDB COLD retention

ML Service Properties

PropertyTypeDefaultDescription
ml.service.urlstring-ML Service base URL
ml.service.timeoutint5000Request timeout (ms)

Docker Compose Configuration

services:
smart-city-backend:
image: smart-city-backend:latest
environment:
- SPRING_PROFILES_ACTIVE=docker
- MONGODB_WARM_URI=mongodb://admin:password123@core-mongo-warm:27017/warm_db?authSource=admin
- MONGODB_COLD_URI=mongodb://admin:password123@core-mongo-cold:27017/cold_db?authSource=admin
- REDIS_HOST=core-redis-hot
- RABBITMQ_ADDRESSES=rabbitmq-edge-1:5672,rabbitmq-edge-2:5673
- ML_SERVICE_URL=http://smart-city-ml:8000
ports:
- "8080:8080"
depends_on:
- rabbitmq-edge-1
- rabbitmq-edge-2
- core-redis-hot
- core-mongo-warm
- core-mongo-cold
- smart-city-ml
networks:
- smartcity-network

Tuning Guide

High Throughput

Để tăng throughput, adjust các parameters sau:

ingestion:
batch:
size: 5000 # Tăng batch size
max-size: 10000
schedule:
fixed-rate: 5000 # Giảm interval (pull frequency hơn)

Low Memory

Nếu memory hạn chế:

ingestion:
batch:
size: 500 # Giảm batch size
max-size: 1000

storage:
hot:
ttl-seconds: 1800 # Giảm TTL (30 phút)

Production Deployment

logging:
level:
root: WARN
com.smartcity: INFO # Giảm logging

storage:
warm:
retention-days: 90 # Tăng retention
cold:
retention-days: 730 # 2 years