`
y806839048
  • 浏览: 1107008 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

序列号生成buge修改---超时问题,999溢出异常

阅读更多

 

 

超时的引发和影响

 

引发:

1,数据量大,---优化sql,优化实现逻辑,例如:缓存和数据库定时同步-或同时更新,对比去重用缓存,最终的过滤之后的数据放在数据库中

2,循环中有程序sleep----去掉sleep

3,socket阻塞长链接---换nio

4,网络限制

 

 

影响:

  逻辑执行不完整,引发脏数据,上下游,缓存和数据数据不一致-----事物超时回滚(设置事物回滚的传播机制)

  占用大量线程连接,不能及时释放

  客户体验差,页面一直转圈圈

  分布式框架不断重试请求---重复提交

 

 

 

分布式考虑

1,高并发,2,网络延迟---事物回滚,3,排查问题每步的预期和结果

 

生成序列号的工具类由于加入了sleep(1000),每生成一个序列号睡眠1秒,势必导致超时,超时数据中最大的序列号无为更新,然后实际内存已生成

 

去除导致超时因素或者设置不会到时事物回滚的异常类为timeOut(noRollbackFor)或用传播属性控制回滚的粒度---例如原事物挂起,另起新的事物,或 新的不用在事物中运行,可以保住前面的事物不回滚

 

///有异常有catch掉,然后又没打印异常信息,程序可以继续运行

 

 

try{

} catch (Exception e) {

} finally {

   Long end = System.currentTimeMillis();

   Long useTime = end - start;

}

 

 

 

buge2:

修正currNo = "RG-20180815999";   最后几位数字位例如3位都为999情况的截取异常

 

 

3位随机数

 

initVar.substring(len_currNo - 3, len_currNo);

 

换成  initVar.substring(initVar.length() - 3, initVar.length());

 

 

 6位随机数

 

 initVar.substring(len_currNo - 6, len_currNo);

 

 换成 

 

initVar = initVar.substring(initVar.length() - 6, initVar.length());

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics