跳到主要内容

工具与资源库

一、数据采集工具

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: 原生 WebSocket API
  • Go: gorilla/websocket

1.2 Web爬虫

工具语言特点难度
Beautiful SoupPythonHTML解析
ScrapyPython完整框架⭐⭐⭐
PlaywrightNode/Python浏览器自动化⭐⭐⭐
PuppeteerNode.jsChrome自动化⭐⭐
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分布式Pandas10GB - 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');

对比

特性InfluxDBTimescaleDBPrometheus
SQL支持类SQL(Flux)标准SQLPromQL
压缩率
生态强(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.js3DWebGL600KB

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仓库获取最新更新!