2
回答
哈,碰个系统设计问题,“抖”
科大讯飞通用文字识别100000次/天免费使用。立即申请   

这两天在整系统架构的总结。关于系统设计,我们经常遇到一类问题,竞争与死锁。这在多任务中存在相同资源要求时会出现。其实还有一类问题,“周期与振动”,说白了就是一个字,“抖”。哈。

不说太需要业务背景的例子。就说人吧。我想可能有些人会有这种情况,打算去干啥事,才转身,突然想到另外个事情,然后又转回来,接着再转身。这就是“抖”。简单说,大脑没决策好先做哪件事。但已经身不由己了。

通常出现这种情况需要两个条件,第一决策在反复,第二,每次反复中的决策速度过快。如果决策慢,等你到了蹲坑,想起来还要泡茶,那也索性蹲完再泡。

“周期与振动”,实际是指,我们的系统,本身至少包括了决策层和执行层。而执行层对一个完整处理工作(并不是原子操作,类似一个完整作业)的最小周期是存在的。如果决策层的速度过快,导致一个完整处理工作刚起个头就被挂起,又开始把另一个挂起的工作准备铺展开进行执行。而这多个决策在执行目标上还存在冲突,如同你一会想去厕所,一会想去泡茶,方向还不一样。此时系统会长时间处于一个“任意任务均无法推进”的原地转圈的状态。

在我们的纯软系统中,或许这种情况比较好处理,因为喷点就是一个字“卡”。当然真正“卡”的原因很多。而在非纯软的系统,如机电控制或传输等存在固有处理周期时(无法通过提高硬件计算速度来解决执行层处理速度),抖动就会出现。特别是存在实物运动的系统中。

解决“抖”的问题,我能想到的两类处理方式是,其一,拉长上层如决策层的处理周期,因为执行层的处理周期存在客观约束不可无限缩小,这里所谓的拉长,实际是通过修正带选的作业任务来实现,其二,执行层增加一个非受控时间段,在该时间段内,不接受上层新的决策,保证最小执行任务能完成。

抖不抖,不是架构能解决的,系统包括了控制流、数据流等不属于架构的内容。抖的问题,还是需要工程经验来处理。当然,良好的架构,可以便于做分离测试以及对系统模块的参数调整,来解决“抖”的问题。哈。

 

<无标签>
举报
中山野鬼
发帖于1年前 2回/244阅
顶部