系统架构设计的检查清单
2023-12-19 21:03:00
系统设计很复杂,在实际中我总结了一些检查清单,帮助在系统设计的过程中快速的核对。
- 对于大量“读”的系统 —— 考虑使用缓存。
- 对于大量“写”的系统 —— 考虑使用消息队列进行异步处理。
- 对于低延迟要求的系统 —— 考虑使用缓存 或 CDN。
- 需要原子性、一致性、隔离性、耐用性兼容的系统 —— 选择关系型数据库。
- 拥有非结构化数据的系统 —— 考虑 NoSQL 数据库。
- 拥有复杂的数据(视频、图像、文件) —— 考虑Blob存储或者对象存储。
- 对于复杂的预计算 —— 考虑使用消息队列和缓存。
- 海量数据搜索 —— 考虑数据库索引、或者搜索引擎(如Elasticsearch、Couchbase)。
- 需要扩展 SQL 数据库 —— 考虑数据库分片。
- 有高可用性、性能和吞吐量要求时 —— 考虑使用负载均衡器。
- 需要大范围数据交付时(比如全国、或全球)—— 考虑使用 CDN。
- 有图形数据(包含节点、边和关系的数据)场景是 —— 考虑利用图形数据库(如Neo4j)。
- 服务能否水平扩展
- 需要高性能数据库查询时 —— 数据库索引设计的如何。
- 有批处理业务时 —— 考虑批处理方式和消息队列。
- 考虑服务器负载管理与防止 DOS 攻击 —— 使用速率限制器。
- 微服务架构 —— 使用 API 网关。
- 针对单点故障 —— 考虑冗余方案。
- 为了实现容错和持久性 —— 考虑实施数据备份和复制方案。
- 对于用户间的快速通信 —— 考虑使用 Websockets。
- 分布式系统中的故障检测方式 —— 考虑心跳方案。
- 数据完整性要求的场景 —— 使用校验算法。
- 高效的服务器扩展 —— 考虑一致性哈希算法。
- 去中心化数据传输场景 —— 考虑 Gossip 协议。
- 基于位置的功能需求 —— 使用四叉树、Geohash 等。
- 避免命名时使用特定的技术名称 —— 使用通用术语。
- 高可用性和一致性权衡 —— 要符合最终一致性。
- 对于 IP 解析和域名查询场景 —— 使用DNS。
- 处理网络请求中的大数据 —— 采用分页技术。
- 缓存替换策略 —— 通常情况下首选 LRU。
- 应对流量高峰 —— 实施自动扩展以动态管理资源。
- 需要分析和审计跟踪 —— 考虑使用数据湖或附加数据库。
- 处理大规模同时连接 —— 使用连接池并考虑使用 Protobuf 来最小化数据负载。
文章来源:https://blog.csdn.net/guohuang/article/details/135077934
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!