目录

[TOC]来生成目录:

文章目录

  • 目录

##系统的基本设计规范

1.减少跨系统的交互,一个系统尽量只能CURD自己业务域的数据库,不要跨域去操作其他应用的数据。
2.尽量减少IO以及网络的访问,将多次的调用整合在一次操作中完成,尽量减少IO资源的浪费。
3.禁止在操作数据库或者外部接口时候放在循环里面,尽量做成批量接口调用。
4.系统间调用最好是只读,系统间的修改用事件或者消息来实现比较靠谱。
5.对于系统的配置文件,数据库字段修改,或者其他显示复杂逻辑修改;尽量采用增加的操作;而少采用update的操作;update永远比insert成本大的很多
6.系统必须支持横向扩展;底层数据库以及上层应用本身都需要支持扩展来满足未来业务的增长需求。
7.强一致性在微服务架构下不合适,互联网公司一般采用的基于消息【本地消息或者消息微服务;开源的消息中间件只是投递工具】的一致性事务的解决方案。
8.系统需要有区分主次功能,对于主要功能需要加日志层面或者监控层面的告警逻辑;比如资金变动。
9.尽量充分利用CPU的资源,很多情况下,一个应用的CPU资源都利用不充分;瓶颈往往在于IO层面;所以可多引入线程池,让CPU的使用率最大化。
10.系统之间交互,拉的效果往往比推来的稳定性高;选择只读API,而不是读写API,写部分尽量采用事件驱动或者消息驱动。
11.往往内存中的复杂数据结构组装要优先于数据库的链接;

##数据库设计规范

1.尽可能在数据模型上控制业务对象的约束关系;如果通过程序逻辑去保证完整性与一致性,会存在一定的风险。
2.数据模型总的唯一性约束【比如订单号】,一定要在数据库层面得到控制;程序层面的幂等不太安全。
3.尽量少用存储过程;将复杂的业务逻辑抽离到上层应用中;也就是时候尽量使用程序中的数据结构完成复杂的关系运算,避免用存储过程或者复杂的sql语句。因为应用服务器的扩展以及优化的成本往往比DB服务器的成本小的多。
4.sql语句尽量不要依据业务逻辑以及动态拼接的sql字符串,而是采用预编译的方式;否则有sql注入的风险
5.如果主表与子表是一对一的关系,主键尽量相同。
6.数据库是各个业务系统的私有资源;其他系统对于该数据结构应该是透明的;只能通过接口和事件去访问和修改数据。

##外部交互设计规范

1.最好是拉对方的数据比较好;比对方推过来稳定性好;
2.异步消息处理的时候,最好先落地到本地库再进行处理;这样避免消息的丢失,以及消息队列的堆积,导致消息系统挂掉。
3.系统中只能有一种异常:处理中状态等待超时或者重试次数达到最大值。

后续有时间可以单独聊下事件驱动;而不是直接API调用

更多干货:
reids开发实战
数据库拆分方案
分布式事务系列
深入浅出spring系列

常见的系统设计规范(约束)相关推荐

  1. 系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]

    一.上章回顾 在上篇中我们讲解了几类UML2.0语言新推出的建模图形,总体来说通过这些图形能更详细的将某类信息表达出来.在这里我们简单回顾上篇讲解的内容. 上图中已经简单介绍了上章讲述的内容,具体内容 ...

  2. SHELL常见的系统变量解析

    SHELL常见的系统变量解析 : $0 当前脚本的名称 $n 当前脚本不能的 第n个参数,n=,1,2-10 $* 当前脚本的所有参数(不包括程序本身) $# 当前脚本的参数个数不包括程序本身() $ ...

  3. 常见混沌系统—Chen模型

    混沌是非线性动力系统的固有特性,是非线性系统普遍存在的现象. 概念 1999年,美国休斯顿大学陈关荣教授发现了一个新的混沌吸引子--Chen系统,即陈氏混沌系统,它与Lorenz系统类似,但不拓扑等价 ...

  4. 常见的系统架构风格有哪些?各有什么优缺点?

    常见的系统架构风格有哪些?各有什么优缺点? 1.单体架构 介绍: 优点: 缺点: 2.MVC架构 MVC架构特点: 优点: 缺点: 3.面向服务架构(SOA) 介绍: 面向服务架构特点: 优点: 缺点 ...

  5. XigmaNas系统(一):常见NAS系统选择比较

    @FREENAS.XigmaNas(Nas4free).OpenMediaVault.万由U-Nas.群晖.linux等 XigmaNas系统(一):常见NAS系统选择比较 FREENAS.Xigma ...

  6. 天融信防火墙web配置_常见web系统默认口令总结

    前言 在渗透测试过程中,最常见的情况就是遇到弱口令得到入口从而攻陷整个系统,由于很多系统管理员缺少安全意识,口令往往是系统默认设置的口令.本文总结了常见的系统默认口令以及默认口令在线查询网站,修补自身 ...

  7. SQL Server 常见的7种约束以及where条件表达式

    一.常见的7种约束 --主键约束(primary key): --唯一约束(unique) --检查约束(check) --默认约束(default)-----for 字段名 --外键约束(forei ...

  8. 常见安全产品系统默认口令

    0x00 前言 这是在网络中收集到关于通用设备默认口令的文档整理. 0x01 下载地址 通用设备默认口令: https://github.com/NepoloHebo/Common-device-de ...

  9. 常见iOS系统错误代码含义 英文版

    这里大概总结了目前所有常见iOS系统错误代码的意义 Iphone Error Collection With Solution Errors -9815 Set exact date**** rest ...

  10. 自动喷水灭火系统设计规范

    自动喷水灭火系统设计规范 Code of design for sprinkler systems GB 50084-2001 主编部门:×××公安部 批准部门:×××建设部 施行日期:2 0 0 1 ...

最新文章

  1. Java synchronized解析
  2. 开源ImageFilter库For IOS源码发布
  3. Git远程:分支的upstream
  4. Android之如果解决Android studio项目里面的类名不能重命名
  5. Cisco asa 5520 oid
  6. 【CodeForces - 144C】Anagram Search(尺取,滑窗问题,处理字符串计数)
  7. BJFU-ACM 12月8日月赛官方题解
  8. hdu 1559 最大子矩阵 (简单dp)
  9. NetScreen下“区域”与“路由”、“策略”基本概念
  10. ArcGIS10.6使用ArcGIS Diagrammer
  11. 数据结构(C语言)-串
  12. 代码比较工具——DiffMerge的安装教程
  13. linux 终端翻译,linux下终端使用有道翻译
  14. arm交叉编译ntpdate与服务器进行时间同步
  15. 解决路由报错Uncaught (in promise) NavigationDuplicated:
  16. 如何将PDF转为word
  17. 小哥Cadence Allegro 132讲字幕版PCB设计视频教程-cadence视频-allegro视频-PCB视频
  18. OSR(on-stack replacement) IN V8
  19. 查找算法2——折半查找
  20. 字典序问题(排列组合)

热门文章

  1. vue设置页面取消滚动和可以滚动
  2. error A2070:invalid instruction operands 错误原因
  3. CET UTC GMT CST 各种时区区别
  4. Filebeat log @timestamp处理
  5. 只要方向正确,路远不是事
  6. IB和A-Level哪个的含金量高?
  7. 获取select选中的值php,js如何获取select标签选中的值
  8. 【操作系统】进程管理
  9. 浙大开源lidar_imu_calib源码安装过程
  10. axios请求文件流下载文件