2022.12.11开发问题阶段性记录
阿昌 Java小菜鸡
# 2022.12.11开发问题阶段性记录

Hi,我是阿昌,今天我来记录一下针对10、11月的一些开发问题的记录,见笑了哈哈。

1、ThreadLocla问题

问题点
不要为了传参方便而选择使用threadlocal去改造你的业务

结论

  1. ThreadLocal会让业务代码的不方便管理,当大量的去使用ThreadLocal来方便参数的传递,但后面如果出现了串用户的情况,就会很难的排查问题所在
  2. ThreadLocal会造成对应代码无法多线程代码性能优化的改造,因为ThreadLocal是线程独立的,如果多线程改造就会让其内容无法多线程公用

2、领域服务问题

问题点
领域服务之间不能出现服务循环依赖问题

结论
当对应业务Web获取请求,需要订单服务/库存服务的内容时,不应该出现领域服务之间的循环依赖,这样子如果是单节点服务的情况下,当某个领域服务宕机重启,会出现两个领域服务都相互依赖,就会无法启动对应服务

3、分布式事务问题

问题点
A服务开启事物修改id1的数据,并调用B服务,同时也开启事物修改id1点数据,此时会出现死锁,最后事物等待超时;

结论
减少事务的粒度;让A服务结束事务,然后B服务再操作。

4、sql中inner/Left join问题造成的事故

事故背景
通过sql的方式,去删除用户对应老需求的异常数据

问题点
使用了left join并搭配调剂等于null的情况,导致所以数据都符合条件,因此对于用户的所以相关数据都被删除

解决方案
业务的B表还好冗余了A表对应的业务字段,就可以通过查询分组B表的数据去创建出被删除A表的数据。

结论
区分inner/left 查询的区别效果,是否包含外链接表null的数据。避免不必要的开发和生产事故

 请作者喝咖啡