Initial commit of akmon project

This commit is contained in:
2026-01-20 08:04:15 +08:00
commit 77a2bab985
1309 changed files with 343305 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
Node.js + Fastify + Postgres + Kafka 是非常成熟且高性能的现代数据采集与处理技术栈,适合高并发、高吞吐、可扩展的物联网、日志、消息处理等场景。具体优缺点和建议如下:
---
### 优点
1. **高并发与高吞吐**
- Fastify 是 Node.js 生态中性能最优的 Web 框架之一,异步 IO单机可支撑上万 QPS。
- Kafka 作为分布式消息队列,天然支持削峰填谷、异步解耦,适合大规模数据流入。
2. **数据可靠与可扩展**
- Kafka 保证消息持久化、顺序、可重放,适合高可靠场景。
- Postgres 作为关系型数据库,支持强一致性、复杂查询、分区表,配合 TimescaleDB 可做时序数据。
3. **易于开发与维护**
- Node.js 生态丰富Fastify 插件多,开发效率高。
- Kafka、Postgres 都有成熟的 Node.js 客户端库。
4. **架构灵活**
- Webhook/Fastify 负责接收和初步校验数据,快速写入 Kafka。
- 后端独立消费 Kafka批量写入 Postgres便于横向扩展和容错。
---
### 架构建议
- **入口层**Fastify 接收 HTTP/Webhook/MQTT 转发请求,快速响应,数据写入 Kafka。
- **消息队列**Kafka 做缓冲和解耦,防止高峰期数据库压力过大。
- **消费层**Node.js/Kafka Consumer 批量消费消息,批量写入 Postgres建议用 COPY/批量 INSERT
- **数据库层**Postgres 分区表/索引优化,必要时用 TimescaleDB 插件PG15/16
- **监控与容错**Kafka 支持消息重试、死信队列Postgres 可主从/分区。
---
### 适用场景
- 物联网/传感器数据采集
- 日志/埋点/行为数据收集
- 实时数据分析与持久化
- 需要高可用、高扩展、高可靠的业务
---
### 注意事项
- 批量写入 Postgres避免单条 insert提升写入性能。
- Kafka 分区数、消费组数需根据流量和业务扩展合理规划。
- Postgres 建议用分区表、定期归档,防止单表过大。
- Node.js 进程建议用 PM2/Cluster/容器编排保证高可用。
---
**结论**
这个组合是业界主流的高性能数据采集与持久化方案,适合每天百万级以上数据写入。只要架构设计合理,完全可以支撑大规模生产环境。
如需具体代码模板、架构图或性能调优建议,可继续提问!