详细对比 Wali 数据中台的两种部署模式,帮助你根据业务规模选择最合适的部署方案。
李工
9 分钟阅读
选择合适的部署模式是 Wali 数据中台成功实施的关键。本文将详细介绍单机模式和分布式模式的特点、适用场景和配置方法。
部署模式对比
快速对比表
| 特性 | 单机模式 | 分布式模式 |
|---|---|---|
| 硬件要求 | 1台服务器 | 3台以上服务器 |
| 数据规模 | < 1TB | 无限制 |
| 并发能力 | 1000 QPS | 10000+ QPS |
| 高可用 | ❌ | ✅ |
| 部署复杂度 | ⭐ | ⭐⭐⭐ |
| 运维成本 | 低 | 中高 |
| 适用场景 | 中小型项目 | 大型企业应用 |
单机模式详解
适用场景
单机模式适合以下场景:
- 🏢 中小型企业的数据整合需求
- 🚀 快速验证和原型开发
- 💰 预算有限的项目
- 📊 数据量在 TB 级别以内
- 👥 并发用户数在 100 以内
系统要求
最低配置:
CPU: 4核
内存: 8GB
磁盘: 100GB SSD
操作系统: Linux (CentOS 7+, Ubuntu 18.04+)
推荐配置:
CPU: 8核
内存: 16GB
磁盘: 500GB SSD
操作系统: Linux (CentOS 7+, Ubuntu 18.04+)
网络: 千兆网卡
安装步骤
1. 环境准备
# 更新系统
sudo yum update -y
# 安装依赖
sudo yum install -y java-11-openjdk wget
# 创建安装目录
sudo mkdir -p /opt/wali
cd /opt/wali
2. 下载安装包
# 下载最新版本
wget https://wali.run/download/wali-standalone-latest.tar.gz
# 解压
tar -xzf wali-standalone-latest.tar.gz
# 设置权限
chmod +x bin/*.sh
3. 配置文件
编辑 config/application.yml:
server:
port: 8080
host: 0.0.0.0
database:
type: embedded # 使用内置数据库
path: /opt/wali/data
storage:
type: local
path: /opt/wali/storage
max_size: 500GB
logging:
level: INFO
path: /opt/wali/logs
4. 启动服务
# 启动
./bin/start.sh
# 查看日志
tail -f logs/wali.log
# 检查状态
./bin/status.sh
5. 验证安装
# 健康检查
curl http://localhost:8080/health
# 预期输出
{
"status": "UP",
"version": "1.0.0",
"mode": "standalone"
}
性能优化
JVM 参数调优
编辑 bin/start.sh,添加 JVM 参数:
JAVA_OPTS="-Xms4g -Xmx8g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/opt/wali/logs"
数据库优化
database:
pool:
min_size: 10
max_size: 50
timeout: 30000
cache:
enabled: true
size: 1GB
分布式模式详解
架构设计
分布式模式采用主从架构:
┌─────────────────────────────────────────┐
│ 负载均衡器 (Nginx) │
└─────────────────────────────────────────┘
│
┌─────────┼─────────┐
│ │ │
┌───▼───┐ ┌──▼────┐ ┌──▼────┐
│ Node1 │ │ Node2 │ │ Node3 │
│(Master)│ │(Slave)│ │(Slave)│
└───┬───┘ └───┬───┘ └───┬───┘
│ │ │
└─────────┼─────────┘
│
┌─────────▼─────────┐
│ 分布式存储集群 │
│ (MinIO/Ceph) │
└───────────────────┘
适用场景
- 🏢 大型企业级应用
- 📈 数据量超过 TB 级别
- 🔄 需要高可用保障
- 👥 高并发访问需求
- 🌍 多地域部署需求
集群规划
最小集群配置(3节点):
节点配置:
CPU: 16核
内存: 32GB
磁盘: 1TB SSD
网络: 万兆网卡
节点角色:
- Master节点: 1个(负责协调和管理)
- Slave节点: 2个(负责数据处理)
安装步骤
1. 准备集群环境
在所有节点上执行:
# 配置主机名
hostnamectl set-hostname wali-node1 # node2, node3
# 配置 hosts
cat >> /etc/hosts << EOF
192.168.1.10 wali-node1
192.168.1.11 wali-node2
192.168.1.12 wali-node3
EOF
# 时间同步
yum install -y chrony
systemctl enable chronyd
systemctl start chronyd
2. 安装 Master 节点
在 node1 上执行:
# 下载分布式版本
wget https://wali.run/download/wali-distributed-latest.tar.gz
tar -xzf wali-distributed-latest.tar.gz
cd wali
# 配置 Master
cat > config/cluster.yml << EOF
cluster:
mode: distributed
role: master
nodes:
- host: 192.168.1.10
role: master
- host: 192.168.1.11
role: slave
- host: 192.168.1.12
role: slave
coordination:
type: zookeeper
servers:
- 192.168.1.10:2181
- 192.168.1.11:2181
- 192.168.1.12:2181
storage:
type: distributed
backend: minio
endpoints:
- http://192.168.1.10:9000
- http://192.168.1.11:9000
- http://192.168.1.12:9000
EOF
# 启动 Master
./bin/start-master.sh
3. 安装 Slave 节点
在 node2 和 node3 上执行:
# 解压安装包
tar -xzf wali-distributed-latest.tar.gz
cd wali
# 配置 Slave
cat > config/cluster.yml << EOF
cluster:
mode: distributed
role: slave
master: 192.168.1.10:8080
coordination:
type: zookeeper
servers:
- 192.168.1.10:2181
- 192.168.1.11:2181
- 192.168.1.12:2181
EOF
# 启动 Slave
./bin/start-slave.sh
4. 验证集群状态
# 在 Master 节点查看集群状态
curl http://192.168.1.10:8080/cluster/status
# 预期输出
{
"cluster_id": "wali-cluster-001",
"status": "healthy",
"nodes": [
{
"host": "192.168.1.10",
"role": "master",
"status": "online"
},
{
"host": "192.168.1.11",
"role": "slave",
"status": "online"
},
{
"host": "192.168.1.12",
"role": "slave",
"status": "online"
}
]
}
负载均衡配置
使用 Nginx 配置负载均衡:
upstream wali_cluster {
least_conn;
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=2;
server 192.168.1.12:8080 weight=2;
}
server {
listen 80;
server_name wali.example.com;
location / {
proxy_pass http://wali_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 健康检查
proxy_next_upstream error timeout http_500 http_502 http_503;
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
迁移方案
从单机到分布式
当业务增长需要从单机迁移到分布式时:
步骤 1:数据备份
# 在单机模式下备份数据
./bin/backup.sh --output /backup/wali-backup-$(date +%Y%m%d).tar.gz
步骤 2:搭建分布式集群
按照上述分布式安装步骤搭建新集群。
步骤 3:数据迁移
# 在新集群的 Master 节点恢复数据
./bin/restore.sh --input /backup/wali-backup-20240201.tar.gz
步骤 4:切换流量
# 更新 DNS 或负载均衡配置
# 逐步切换流量到新集群
监控和运维
关键指标监控
监控指标:
系统指标:
- CPU 使用率
- 内存使用率
- 磁盘 I/O
- 网络流量
应用指标:
- QPS (每秒查询数)
- 响应时间 (P50, P95, P99)
- 错误率
- 数据同步延迟
业务指标:
- 数据源连接状态
- 同步任务成功率
- 数据质量分数
告警配置
alerts:
- name: high_cpu_usage
condition: cpu_usage > 80%
duration: 5m
action: notify
- name: sync_task_failed
condition: task_failure_rate > 10%
duration: 1m
action: notify_and_retry
- name: node_offline
condition: node_status == 'offline'
duration: 1m
action: notify_urgent
成本分析
单机模式成本
硬件成本:
服务器: ¥15,000 (一次性)
运维成本:
人力: ¥5,000/月 (兼职)
总成本:
第一年: ¥75,000
后续每年: ¥60,000
分布式模式成本
硬件成本:
服务器 x3: ¥45,000 (一次性)
负载均衡器: ¥10,000 (一次性)
运维成本:
人力: ¥15,000/月 (专职)
总成本:
第一年: ¥235,000
后续每年: ¥180,000
选择建议
选择单机模式,如果:
- ✅ 数据量 < 1TB
- ✅ 并发用户 < 100
- ✅ 可接受短暂停机
- ✅ 预算有限
选择分布式模式,如果:
- ✅ 数据量 > 1TB
- ✅ 并发用户 > 100
- ✅ 需要 99.9% 可用性
- ✅ 有专业运维团队
总结
选择合适的部署模式需要综合考虑:
- 业务规模:当前和未来 1-2 年的数据量和用户数
- 可用性要求:能否接受计划内停机
- 预算约束:硬件和人力成本
- 技术能力:团队的运维能力
建议从单机模式开始,随着业务增长再迁移到分布式模式。Wali 提供了平滑的迁移路径,确保业务连续性。
需要部署帮助?联系我们的技术支持团队:support@wali.run
