新系统设计
New steps of system design
- Understand problem and establish Design Scope
- ask clarify questions
- functional/non-functional requirement
- QPS estimation
- High-level design(draw a picture)
- API
- Database
- Low-level design(dive deep into each component)
- Summary(trade off)
- bottlenecks
- single point of failure
- replicas of the data if lost
- monitoring
- alert
- autofix/ticket
- follow up question
- trade off etc.
Redis vs Kafka
Difference Between Pub/Sub Messaging Systems
Redis | Kafka | |
---|---|---|
消息大小 | 较小 | 通过压缩和分层存储,最大1GB |
息传输 | 基于推送,发布者在事件发生时向所有订阅者分发消息 | 基于拉取,发布者和订阅者共享一个公共消息队列,订阅者根据需要从中提取消息 |
消息保留 | 不保留消息 | 检索后保留消息 |
错误处理 | 在应用程序级别处理 Redis 异常,包括超时、客户端限制和内存缓冲容量。 | 强大错误处理,死信队列、事件重试和重定向。 |
并行性 | 不支持 | 支持,多个使用者可以同时检索同一条消息。 |
吞吐量 | 较高 | 高,异步读/写 |
延迟 | 分发较小的消息时延迟极低 | 低延迟,默认会进行数据复制 |
容错能力 | 默认不备份,可配置RDB或者AOF,存在少量数据丢失的风险 | 自动将分区备份到不同的代理 |
新系统设计
引用
- [Redis vs Kafka - Difference Between Pub/Sub Messaging System](https://aws.amazon.com/compare/the-difference-between-kafka-and-redis/#:~:text=Kafka generally has higher throughput,storage%2C which optimizes read speed.)