工具与资源库
一、数据采集工具
1.1 API客户端
HTTP请求
# Python
pip install requests httpx aiohttp
# Node.js
npm install axios got node-fetch
# Rust
cargo add reqwest tokio
WebSocket客户端
- Python:
websockets,websocket-client - JavaScript: 原生
WebSocketAPI - Go:
gorilla/websocket
1.2 Web爬虫
| 工具 | 语言 | 特点 | 难度 |
|---|---|---|---|
| Beautiful Soup | Python | HTML解析 | ⭐ |
| Scrapy | Python | 完整框架 | ⭐⭐⭐ |
| Playwright | Node/Python | 浏览器自动化 | ⭐⭐⭐ |
| Puppeteer | Node.js | Chrome自动化 | ⭐⭐ |
| Selenium | 多语言 | 跨浏览器 | ⭐⭐ |
1.3 流数据源
金融
- Alpha Vantage API (免费层)
- IEX Cloud (股票)
- Coinbase Pro API (加密货币)
- Binance WebSocket (实时行情)
社交媒体
- Twitter API v2 (需申请)
- Reddit API (PRAW库)
- Mastodon API (开放)
天气
- OpenWeatherMap (免费5000次/天)
- Weather.gov (美国免费)
- Tomorrow.io
IoT/传感器
- Adafruit IO (IoT平台)
- ThingSpeak (数据收集)
- MQTT Brokers (Mosquitto, HiveMQ)
二、数据处理框架
2.1 流处理
Apache Kafka
# 安装(Docker)
docker run -d --name kafka \
-p 9092:9092 \
apache/kafka:latest
# Python客户端
pip install kafka-python confluent-kafka
Apache Flink
# 下载
wget https://dlcdn.apache.org/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz
tar -xzf flink-*.tgz
# Python API
pip install apache-flink
其他选择
- Apache Spark Streaming
- Apache Storm
- Redis Streams
- RabbitMQ
2.2 批处理
| 工具 | 适用场景 | 数据规模 |
|---|---|---|
| Pandas | 单机数据分析 | < 10GB |
| Dask | 分布式Pandas | 10GB - 1TB |
| Apache Spark | 大数据处理 | > 100GB |
| Polars | 高性能替代Pandas | < 100GB |
三、数据存储
3.1 时序数据库
InfluxDB
# Docker安装
docker run -d -p 8086:8086 \
-v influxdb2:/var/lib/influxdb2 \
influxdb:2.7
# Python客户端
pip install influxdb-client
TimescaleDB
-- PostgreSQL扩展
CREATE EXTENSION IF NOT EXISTS timescaledb;
-- 创建时序表
CREATE TABLE sensor_data (
time TIMESTAMPTZ NOT NULL,
sensor_id INT,
temperature DOUBLE PRECISION
);
SELECT create_hypertable('sensor_data', 'time');
对比
| 特性 | InfluxDB | TimescaleDB | Prometheus |
|---|---|---|---|
| SQL支持 | 类SQL(Flux) | 标准SQL | PromQL |
| 压缩率 | 高 | 中 | 高 |
| 生态 | 中 | 强(PostgreSQL) | 强(监控) |
| 学习曲线 | 中 | 低 | 中 |
3.2 NoSQL数据库
Redis(缓存、队列)
# 安装
brew install redis # macOS
sudo apt install redis # Linux
# Stream示例
XADD mystream * sensor_id 1 temp 25.3
XREAD COUNT 10 STREAMS mystream 0
MongoDB(文档存储)
// 存储JSON文档
db.events.insertOne({
timestamp: new Date(),
type: "user_action",
data: {userId: 123, action: "click"}
});
// 时序查询
db.events.find({
timestamp: {$gte: ISODate("2024-01-01")}
}).sort({timestamp: -1});
Cassandra(分布式、高写入)
-- 适合大规模时序数据
CREATE TABLE sensor_readings (
sensor_id UUID,
timestamp TIMESTAMP,
value DOUBLE,
PRIMARY KEY (sensor_id, timestamp)
) WITH CLUSTERING ORDER BY (timestamp DESC);
四、可视化工具
4.1 实时仪表盘
Grafana
# Docker运行
docker run -d -p 3000:3000 grafana/grafana
# 支持数据源
- Prometheus, InfluxDB, PostgreSQL
- Elasticsearch, CloudWatch
- 自定义JSON API
特性:
- 拖拽式面板
- 告警规则
- 变量模板
- 权限控制
替代方案
- Kibana(ELK栈)
- Datadog(商业)
- Superset(Apache开源)
4.2 Web可视化库
JavaScript
| 库 | 类型 | 特点 | 大小 |
|---|---|---|---|
| D3.js | 底层 | 灵活强大 | 247KB |
| Chart.js | 图表 | 简单易用 | 60KB |
| ECharts | 图表 | 丰富样式 | 800KB |
| Plotly.js | 科学 | 交互式 | 3.4MB |
| Three.js | 3D | WebGL | 600KB |
Python(用于数据探索)
- Matplotlib(静态)
- Plotly(交互式)
- Altair(声明式)
- Bokeh(Web应用)
五、算法生成工具
5.1 噪声与程序生成
Perlin/Simplex噪声
# Python
pip install noise
from noise import pnoise2
value = pnoise2(x/scale, y/scale, octaves=4)
// JavaScript
npm install simplex-noise
import { createNoise2D } from 'simplex-noise';
const noise2D = createNoise2D();
const value = noise2D(x, y);
5.2 机器学习框架
深度学习
- TensorFlow / Keras
- PyTorch
- JAX (Google)
生成模型
- Stable Diffusion(图像)
- Whisper(语音识别)
- GPT-4 API(文本生成)
- MusicGen(音乐生成)
推荐系统
- LightFM(混合推荐)
- Surprise(协同过滤)
- implicit(隐式反馈)
六、开发工具
6.1 实时开发
热重载
# Node.js
npm install -g nodemon
nodemon server.js
# Python
pip install watchdog
watchmedo auto-restart --patterns="*.py" --recursive python app.py
代码生成器
- Yeoman(脚手架)
- Cookiecutter(模板)
- Plop(组件生成)
6.2 测试工具
负载测试
# Apache Bench
ab -n 1000 -c 100 http://localhost:8080/
# Hey (Go)
hey -n 10000 -c 100 http://localhost:8080/
# k6 (现代化)
k6 run script.js
WebSocket测试
- wscat(命令行)
- Postman(GUI)
- Artillery(负载测试)
6.3 监控与调试
性能分析
- Chrome DevTools
- Node.js --inspect
- Python cProfile
- Prometheus + Grafana
日志管理
- ELK Stack(Elasticsearch + Logstash + Kibana)
- Loki + Grafana
- Papertrail(云服务)
七、部署与基础设施
7.1 容器化
Docker
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
docker build -t my-realtime-app .
docker run -p 3000:3000 my-realtime-app
Docker Compose
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
redis:
image: redis:alpine
ports:
- "6379:6379"
postgres:
image: timescale/timescaledb:latest-pg14
environment:
POSTGRES_PASSWORD: secret
7.2 云平台
PaaS(快速部署)
- Heroku(简单)
- Render(现代化)
- Fly.io(边缘计算)
- Railway(开发友好)
IaaS(完全控制)
- AWS(EC2, Lambda, ECS)
- Google Cloud(Compute Engine, Cloud Run)
- DigitalOcean(简单VPS)
- Hetzner(性价比高)
Serverless(按需计费)
- AWS Lambda + API Gateway
- Cloudflare Workers
- Vercel Edge Functions
八、学习资源
8.1 在线课程
免费
- Fast.ai(深度学习)
- freeCodeCamp(全栈开发)
- MIT OpenCourseWare(计算机科学)
- Coursera Audit Mode(多数课程)
付费
- Udemy(实战项目)
- Pluralsight(技术深度)
- Frontend Masters(前端专家)
- Egghead.io(短视频教程)
8.2 书籍推荐
基础
- 《JavaScript高级程序设计》
- 《Python编程:从入门到实践》
- 《数据密集型应用系统设计》
进阶
- 《Streaming Systems》(流处理)
- 《Designing Data-Intensive Applications》
- 《High Performance Browser Networking》
算法与艺术
- 《The Nature of Code》(Daniel Shiffman)
- 《Generative Design》
- 《Code as Creative Medium》
8.3 社区与论坛
开发者社区
- Stack Overflow
- GitHub Discussions
- Reddit (r/programming, r/datascience)
- Dev.to
实时技术
- Realtime Conference
- WebSocket邮件列表
- Apache Kafka用户组
生成艺术
- Processing Forum
- OpenProcessing
- Creative Coding Discord
九、代码片段库
9.1 实时数据流
简单HTTP流
# Python服务器
from flask import Flask, Response
import time, json
app = Flask(__name__)
@app.route('/stream')
def stream():
def generate():
while True:
data = json.dumps({'timestamp': time.time(), 'value': random.random()})
yield f"data: {data}\n\n"
time.sleep(1)
return Response(generate(), mimetype='text/event-stream')
# JavaScript客户端
const eventSource = new EventSource('/stream');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data);
};
9.2 轮询vs长轮询vs SSE对比
// 1. 短轮询(简单但低效)
setInterval(async () => {
const res = await fetch('/api/data');
const data = await res.json();
updateUI(data);
}, 5000);
// 2. 长轮询(服务器等待新数据)
async function longPoll() {
const res = await fetch('/api/long-poll');
const data = await res.json();
updateUI(data);
longPoll(); // 递归
}
// 3. Server-Sent Events(单向推送)
const es = new EventSource('/api/sse');
es.onmessage = (e) => updateUI(JSON.parse(e.data));
十、快速启动模板
10.1 实时聊天应用
# 克隆模板
git clone https://github.com/socketio/socket.io/tree/main/examples/chat
cd chat
npm install
npm start
# 访问 http://localhost:3000
10.2 实时仪表盘
# Grafana + Prometheus + Node Exporter
git clone https://github.com/stefanprodan/dockprom
cd dockprom
docker-compose up -d
# Grafana: http://localhost:3000 (admin/admin)
10.3 程序生成艺术
# p5.js项目
npm install -g @p5.js/cli
p5 new my-sketch
cd my-sketch
p5 serve
十一、有用的在线工具
11.1 API测试
- Postman:HTTP/WebSocket测试
- Insomnia:API开发工具
- WebSocket King:浏览器扩展
11.2 数据可视化
- Observable:在线JavaScript Notebook
- Shadertoy:WebGL着色器社区
- JSFiddle/CodePen:前端原型
11.3 正则表达式
- Regex101:测试与学习
- RegExr:可视化
11.4 JSON工具
- JSON Formatter
- JSON Schema Validator
- jq Play(在线jq)
十二、开源项目学习
12.1 实时应用案例
聊天应用
- Socket.io Chat Example
- Discord Clone(多个实现)
- Slack Clone(多个实现)
协作工具
- Etherpad(协作编辑)
- Draw.io(流程图)
- Excalidraw(手绘白板)
游戏
- Agar.io Clone
- Slither.io Clone
- 在线象棋/五子棋
12.2 数据流项目
- Apache Superset:BI仪表盘
- Redash:数据查询与可视化
- Metabase:简单BI工具
总结使用指南
快速选型决策树
1. 我需要实时推送数据给客户端
- 单向 → SSE
- 双向 → WebSocket
- 跨域限制多 → Long Polling
2. 我需要处理大量实时数据
- < 10k events/sec → Redis Streams
- 10k - 1M/sec → Kafka
-
1M/sec → Kafka + Flink
3. 我需要存储时序数据
- SQL熟悉 → TimescaleDB
- 监控场景 → Prometheus
- 通用 → InfluxDB
4. 我需要可视化
- 仪表盘 → Grafana
- 探索性分析 → Plotly/Altair
- 自定义复杂可视化 → D3.js
5. 我需要生成内容
- 图像 → Stable Diffusion
- 文本 → GPT API
- 音乐 → MusicGen/Magenta
- 程序化 → Perlin噪声 + 算法
持续更新
本资源库持续更新,欢迎贡献:
- 推荐好用工具
- 分享学习资源
- 提交代码示例
- 报告失效链接
Star & Watch GitHub仓库获取最新更新!