架构规范

2023-05-16

系统架构规范

  • 目录
  • 一、架构规范
  • 二、数据库规范
  • 三、SOA规范
  • 四、安全规范


目录

一、架构规范

  1. 所有的输入参数需要做合法性检验;
  2. 不允许出现空指针异常和数组越界异常;
  3. 不允许出现不受控制的大对象,如没有限定大小的本地缓存,或者没有限定大小的数据库结果集;
  4. 避免系统串联,对任何资源的依赖都要考虑该资源失败后的降级处理,包括缓存,数据库,Service 等;
  5. 系统需要做容量规划,对超限的请求主动失败,并告知原因;
  6. 所有的远程调用需要设置超时时间;
  7. 如果循环的次数由用户输入,一定要限制最大循环次数;
  8. 对于非核心特性,考虑提供开关,在必要时主动关闭,释放资源供核心特性;
  9. 不允许捕获异常后不做任何处理;
  10. 对于源数据就不存在的Key,需要将空值缓存一段时间,防止缓存穿透;
  11. 所有应用必须是无状态的,使用分布式缓存或者在调用方存放状态;

二、数据库规范

  1. 所有表必须有主键;
  2. 所有表必须有CREATE_TIME,CREATED_BY,UPDATE_TIME,UPDATED_BY 四个字段;
  3. 业务应用不能直接连接BI 库;如果需要用到BI 的数据,需要在业务系统的数据库中建立相关表,从BI 库中同步数据;
  4. BI 只能从业务数据库中批量抽取原始数据,不能再业务数据库上面直接进行数据分析;
  5. 所有持续增长的表必须有明确的数据归档方案;
  6. 不允许在数据库中存放二进制数据;
  7. 尽量减少表Join,超过3 个表JOIN 的SQL 需要通过DBA 的评审;
  8. 不允许Select *;
  9. 所有的数据库表名不可以重名,水平分库的除外,相同的表名在逻辑上就是同一张表;
  10. 分表的表名统一以,BASE_TABLE_XX 方式命名,其中_XX 为数字,只要BASE_TABLE 相同,逻辑上就认为是相同的表;

三、SOA规范

  1. Service(系统)间不允许出现循环依赖;
  2. Service 调用需要做故障隔离,当依赖的Service 调用失败,需要做优雅降级;
  3. 因失败而降级的服务恢复后,系统要自动恢复对其的调用;
  4. 所有Service 提供者需要做容量规划并做限流,当调用流量超限,主动失败并告知调用方原因;
  5. 尽可能异步调用写的Serivce,减少强依赖;
    每当有依赖其他的Service 的时候,确认异步调用不可行才使用同步调用。
  6. 所有的Serivce 调用需要有一个全局时间ID 关联整个调用栈,由入口生成该Id,在调用其他Service 将该Id 作为参数传递;
  7. Service 最多允许两层调用(连同应用最多三层),KISS;
  8. 异步调用的必须控制QUEUE 大小;

四、安全规范

  1. 必须使用参数化SQL,不允许拼硬编码SQL;
  2. 坚决不允许将服务器异常直接暴露给客户端;
  3. 尽量使用POST 而不是GET 提交表单;
  4. 检查用户输入的合法性,确信输入的内容只包含合法的数据;
  5. 迫不得已一定要使用硬编码SQL,必须转义单引号,防止攻击者修改SQL命令的含义;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

架构规范 的相关文章

  • PyQt——按钮类控件QPushButton

    span class token keyword import span sys span class token keyword from span PyQt5 span class token punctuation span QtCo
  • spss入门基本用法

    一 xff0e 数据 1 个案排序 xff1a 对数据视图中的某个个案进行排序 xff0c 具体排序规则可以点进去选择 2 变量排序 xff1a 对变量视图中某个变量进行排序 xff0c 具体规则可以点进去选择 3 转置 xff1a 行列互
  • 基于OMAPL138的linux平台8250快速串口实现--UART+EDMA

    本文源码基于dvsdk omapl138 evm 04 03 00 06 setuplinux程序包里的linux3 3 0版本的内核 实现EDMA支持UART功能主要修改dma和8250的源码 首先为OMAPL138的arm和DSP分配d
  • 自定义组件——仪表盘

    span class token keyword from span PyQt5 span class token punctuation span QtCore span class token keyword import span s
  • 基于pyqt5的Demo软件开发

    一 功能 从软件界面上打开一个txt文件 xff0c 后台提取内容 xff0c 显示在界面上 通过这个Demo软件 xff0c 可以练习软件开发的基本流程 不进行异常的设计 xff0c 仅设计按照正常流程走的程序 二 环境 OS xff1a
  • 使用Graphviz和Pyreverse绘制Python项目结构图

    简介 Graphviz开源的图形绘制工具包 Pyreverse分析Python代码和类关系的工具 安装 安装Graphviz 官网下载地址 注意添加bin 目录的路径到系统路径 测试是否安装成功 dot help 安装Pyreverse 现
  • python获取当前时间的用法

    1 先导入库 xff1a import datetime 2 获取当前日期和时间 xff1a now time 61 datetime datetime now 3 格式化成我们想要的日期 xff1a strftime xff08 xff0
  • PyQt——用Matplotlib绘制动态曲线、柱形、二维、三维图

    span class token comment coding utf 8 span span class token keyword from span PyQt5 span class token keyword import span
  • PyQt——QRadioButton

    span class token keyword import span sys span class token keyword from span PyQt5 span class token punctuation span QtCo
  • PyQt——QCheckBox

    span class token keyword import span sys span class token keyword from span PyQt5 span class token punctuation span QtCo
  • PyQt——QComboBox

    span class token keyword import span sys span class token keyword from span PyQt5 span class token punctuation span QtCo
  • 目录

    PyQt 目录 第四章 xff1a PyQt5 基本窗口控件 4 5 按钮类控件 QAbastractButtonQPushButtonQRadioButtonQCheckBox 4 6 下拉列表框 QComboBox 4 7 计数器 QS
  • PyQt中常见问题解决

    1 ModuleNotFoundError No module named PyQt5 QtChart sudo apt get install reinstall python3 pyqt5 pip3 install upgrade fo
  • lingo入门教程之一 --- 初识lingo

    lingo对于一些线性或者非线性的规划 xff0c 优化问题非常有效 首先介绍一下 xff0c 在lingo中运行程序时出现的页面 xff08 在工具栏点击类似靶子一样的图标便可运行 xff09 Solver status 求解器 求解程序
  • PyQt——QSpinBox(计数器)

    span class token keyword import span sys span class token keyword from span PyQt5 span class token punctuation span QtCo
  • PyQt——QSlider(滑动条)

    span class token keyword import span sys span class token keyword from span PyQt5 span class token punctuation span QtCo
  • PyQt——QTableView

    span class token keyword from span PyQt5 span class token punctuation span QtWidgets span class token keyword import spa
  • 正则表达式——验证数字

    验证数字 xff1a span class token operator span span class token punctuation span span class token number 0 span span class to
  • PyQt——QTableWidget

    span class token keyword import span sys span class token keyword from span PyQt5 span class token punctuation span QtWi

随机推荐

  • PyQt——QListView

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQt5中 QListView 例子
  • PyQt——QListWidget

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQt5中 QListWidget 例
  • PyQt——QTabWidget

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQt5中 QTabWidget 例子
  • PyQt——QStackedWidget

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQt5中 QStackedWidge
  • PyQt——QDockWidget

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQt5中 QDockWidget 例
  • lingo入门教程之二 --- 集合运用

    lingo中的集合用法很多 xff0c 这里主要通过几个例题来进行讲解 对于每一个问题 xff0c 都要先找到对应的目标函数 xff0c 然后对相应值进行初始化 xff0c 然后找到约束条件等进行求解 例1 xff1a SAILCO公司需要
  • PyQt——MDI(多文档界面)

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQt5中 QMdiArea 例子 3
  • PyQt——QScrollBar

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQt5中 QScrollBar 例子
  • PyQt——QTimer

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQT5中 QTimer例子 39 3
  • PyQt——QThread

    span class token comment coding utf 8 span span class token triple quoted string string 39 39 39 简介 PyQT5中 QThread 例子 39
  • PyQt——事件处理

    PyQt事件处理 前言1 低级的事件处理程序2 事件处理机制1 事件机制与信号槽机制的区别2 事件处理的方法3 事件处理实例 前言 1 低级的事件处理程序 span class token comment coding utf 8 span
  • python——精华技巧

    1 大量的if else结构采用字典key来匹配 days span class token operator 61 span span class token string 34 Mon Tue Wed Thu Fri Sat Sun 3
  • Python使用struct处理二进制(pack和unpack用法)

    python有时需要处理二进制数据 xff0c 例如 存取文件 xff0c socket操作时 这时候 xff0c 可以使用python的struct模块来完成 可以用struct来处理c语言中的结构体 一 struct模块中最重要的三个函
  • PyQt——QGroupBox

    QGroupBox为构建分组框提供了支持 分组框通常带有一个边框和一个标题栏 xff0c 作为容器部件来使用 xff0c 在其中可以布置各种窗口部件 布局时可用作一组控件的容器 xff0c 但是需要注意的是 xff0c 内部必须使用布局控件
  • PyQt——高清屏幕自适应设置

    Qt Designer 设计界面 xff1a 在高清屏未设置AA EnableHighDpiScaling的预览界面 xff1a 布局字体控件尺寸上明显存在偏差 设置了AA EnableHighDpiScaling的预览界面 xff1a 运
  • PyQt——实现多窗口

    主窗口通过按钮显示子窗口 1 使用qtdesigner设计窗口 主窗口 xff1a main window 子窗口 xff1a Dialog 生成的是ui文件 2 为两个窗口生成py文件 3 创建两个窗口的继承类 span class to
  • 《统计学习方法》各章节代码实现与课后习题参考解答

    待完成 统计学习方法 各章节代码实现与课后习题参考解答 章节代码课后习题第1章 统计学习方法概论 LeastSquaresMethod 传送门传送门 第2章 感知机 Perceptron 传送门传送门第3章 k近邻法 KNearestNei
  • Opencv的鼠标事件

    span class token keyword import span cv2 span class token keyword import span numpy span class token keyword as span np
  • python多线程之事件触发(线程间通信)

    span class token keyword import span threading event span class token operator 61 span threading span class token punctu
  • 架构规范

    系统架构规范 目录一 架构规范二 数据库规范三 SOA规范四 安全规范 目录 一 架构规范 所有的输入参数需要做合法性检验 xff1b 不允许出现空指针异常和数组越界异常 xff1b 不允许出现不受控制的大对象 xff0c 如没有限定大小的