zoukankan      html  css  js  c++  java
  • 模块分析(四)

      事件的处理需要考虑对于状态/数据的影响。所谓的状态是指数据的存储和变更;比如在压缩机处理中,每次来一个压缩任务,需要对其进行记录(Map形式,key是任务Id,value是压缩任务,以备压缩机发生异常后,能够追溯那个任务需要重新下发;这就增加了一个状态;其次,就是在压缩完成后,要从内存中删除这个状态。这个和前面说的匹配也是相关联。

      其次要考虑在事件处理步骤中可能发生的异常的处理,比如数据库异常,上面提到的压缩异常,是否有异常流程来保证正常进行(通常需要配以告警操作),比如对于一些网络异常,是否需要将任务放置到重试列表中进行定时尝试重试,但是有一点,就是异常流和正常流的处理最好是分开,因为如果异常比较多,定时任务到了,可能会有大量的重新处理任务放置到待处理队列中,因为异常问题很可能会再再次问题,这样大量的重试任务将会挤占正常新来的任务;甚至一直被阻塞(大量的任务被重发,可能还没有处理完,第二波定时任务来了,又重新下发一次,这样新任务可能永远得不到执行);所以如果处理尽量可以处理为两套线程池,两套资源,但是对于正常分支则资源要有倾斜。

  • 相关阅读:
    解决Flask使用pymysql驱动的Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...'
    java中的抽象类
    java中的接口
    java中获取数组中的最大值
    java中的面向对象
    java中的数组
    java中的方法
    java中的流程控制结构
    java中的运算符
    java中的类型转换
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/6834128.html
Copyright © 2011-2022 走看看