服务治理项目开发规范


  1.  新增组件需要评估流量大小,是否超过带宽限制,深圳C【观澜】 云主机目前限制的是25M,深圳E【光明】目前没有限制。
  2.  新增组件不再依赖数据库生产序列号,必须使用LEAF 发好器生成。有出现过从数据库获取序列号,有出现过性能瓶颈的,必须更换成LEAF发号器。
  3.  不允许日志打印音视频二进制流文件、上传base64后字符串,高并发业务场景不允许使用LogUtils,每个类使用Logger.getLogger方式获取。
  4.  查询返回数据量,必须考虑是否会把内存撑爆,框架也会做限制(限制内的数据量,也许考虑每条数据大小)。
  5.  版本发布时理清依赖版本的顺序。
  6. server.tomcat.basedir 要指定为 /tmp 之外的其他目录,避免在 /tmp 下生成临时目录(存在被系统清理的风险)

  7. 接口定义信息除了“入参、出参、请求方式”,还应包含“预期响应时长

  8. 后端发起的 http 请求要确保设置合理的超时时长

  9. 熔断策略的配置不宜过于宽松

  10. 对路径进行校验要先进行标准化 

  11. Sql 中使用 interval、add_month 等方式调整日期时,注意多场景测试
  12. 正则表达式尽量使用独占模式
  13. 禁止在日志中打印大对象
  14. myBatis 存在一级缓存,会对同一 sqlSession 中的相同查询 SQL 产生干扰;需避免缓存干扰的场景要注意规避并进行并发测试
  15. 数据库查询避免数据量过大,注意字段拼接是否会出现极端场景

  16. 联合索引可能出现 null 字段时,可以考虑使用 partial index / conditional index

  17. 避免使用 spring cloud + 外置 tomcat 等非标微服务方案
  18. JAR 包依赖进行大版本升级时,需要事先筛查 API 兼容风险,并在升级后充分验证
  19. 使用 Apollo 管理配置,在配置注入 Map 的场景中,删除 key 值可能不会动态生效(需要使用 DisposableBean)
  20. 禁止使用 Executors 创建线程池,应该通过 ThreadPoolExecutor 的方式创建
  21. 对大表加字段时,找DBA评估,关注 DDL 锁表对 DML 的影响,可考虑把设置默认值的操作从 DDL 语句中分离出去

发表评论

0 评论
  • 最新评论
  • 按热度排序