设计优秀系统的22条军规
系统 设计 22 优秀 军规
2023-09-11 14:15:00 时间
优秀系统的定义:高可扩展性、高性能、高吞吐量、高可维护性、高可靠性、高可用性、高。。。。
一家之言,轻喷。
。。以下正题開始(没有华丽的切割线):
1、按20倍正常訪问量设计、按3倍正常訪问量实现、按部署1.5倍正常訪问量部署
2、简化系统范围(按80/20原则)、简化设计(成本/扩展性折中)、简化实现(很多其它靠经验)
3、分布方式:拷贝分布(每一个机器部署相同的服务或相同的数据)、垂直分布(按业务,每一个系统提供不同功能)、水平分布(sharding)
4、设计系统时如果你手头仅仅有少量低端server或常见设备
5、使用合适的数据存储方式。而不拘泥于关系型数据库
6、尽量少用或不用重定向(即使用也要用Httpserver支持的原生配置)
7、CDN是分流的非常好方式,适合静态内容获取
8、假设是HTML站点,重视Http expire和Cache-control头;也要充分利用服务端Cache
9、设计并实现feature时务必保证可回滚(尤其是SQL脚本的可回滚性)
10、不要使用多阶段提交事务。由于堵塞导致性能急剧下降
11、不要用select for update,由于有行级锁。可用select for read only
12、不要select *
13、合理规划系统组成失败隔离域,域之间禁止同步call。限制异步call。实际上失败隔离域的概念也是高内聚低耦合设计的体现
14、避免单点(利用active/passive, active/active, master/slave等)
15、尽量降低调用关系上是串联的组件数量(也就是降低串联深度)
16、设计系统的功能开关(就可以降级指定的功能)
17、力求达到系统的无状态;实在不行。状态信息可放到clientcookie,或者单独的分布式缓存中,或者服务化(比方用户是否购买过某物)
18、通信尽可能的使用异步。即使同步也必需要有超时时间和异常处理
19、防止消息总线拥堵,消息要少而精
20、分隔商业智能和线上事务处理系统,both Service and data
21、设计和实现时必须考虑监控和记录
22、数据库设计:不要用外键、不要delete(表加入disabled字段标示记录是否有效)
未完待续,欢迎补充。。。
。。
。
相关文章
- 系统性能优化传送门
- 怎么设计一个秒杀系统
- 如何设计一个单点登录系统(3)?
- 设计稳定的微服务系统时不得不考虑的场景
- 如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始
- Mac 系统如何利用软链接在根目录创建文件夹?
- 【原创】CentOS 系统时间超前 8 小时解决办法
- 大型网站系统架构的演化
- Redis Linux系统上的配置优化
- 《安富莱嵌入式周报》第301期:ThreadX老大离开微软推出PX5 RTOS第5代系统,支持回流焊的自焊接PCB板设计,单色屏实现多级灰度播放视频效果
- 在Windows 10 系统上启用Hyper V遇到的错误:0x800f0831
- atitit.userService 用户系统设计 v4 q316 .doc
- SAP Gateway 在开发系统和生产系统上的缓存控制
- Python编程:psutil模块获取系统信息
- 【架构实践】《业务实时质量监控预警平台》系统设计文档
- 4.第一章 计算机基础和Linux安装 -- Linux系统安装(四)
- 制造业企业为什么都纷纷上MES系统?
- 自己动手制作系统安装盘
- Win10系统病毒隔离文件在哪里?详细位置介绍
- 闪存系统性能优化方向?NAND Cache Read(闪存缓冲读) 原理与实战?
- 4.python 系统批量运维管理器之paramiko模块
- 导入导出的系统设计
- 权限系统设计详解
- 基于Java+SpringBoot+Vue前后端分离图书借阅系统设计与实现(有视频讲解)
- 基于Java+SpringBoot+Vue前后端分离农产品物流系统设计与实现(有视频讲解)
- 基于Java+SpringBoot+Vue前后端分离商城系统设计与实现
- 三维重建(6)之双目视觉系统设计及测量误差估计
- 【逻辑与计算机设计】数码系统和数字系统 | Digital systems and number systems
- [SSD架构 1] SSD固态硬盘系统架构与组成原理