VRRP

老王开了个餐馆,对外提供服务。老王雇佣了小明当报菜员。顾客点菜,通通由小明负责向后面的伙头师傅报菜。但是小明有可能身体不舒服导致请假不在,老王不能没人报菜。老王需要找个人当替班。小明不在,就让小刚顶上;小刚不在,就让小强顶上。

老王想了个机制,让他们可以自行处理请假缺人导致报菜员空缺,进而让合适的人自己补上去。小明,小刚,小强这些人现在统称为报菜员,任一时刻,只有一个人是主报菜员,其他人都是替班报菜员。替班报菜员有先后顺序,这是老王事先排好了的。主报菜员在履行日常报菜职责的时候,会定时摁一下身上的按钮,店里所有替班报菜员身上某个地方都感受到了震动(。当主报菜员不在了,就没法摁按钮了。最优先的那个替班报菜员在一定的时间间隔里没收到震动,他就会认为主报菜员不在了。这是他就肩负起了报菜任务,成为了主报菜员,履行主报菜员的职责,并且定时让其它替班报菜员都感受震动。

特别地,每个替班报菜员发出来的震动强度都不一样,当原来的主报菜员回来上班了,就会发出更强的震动。这会导致当前的主报菜员认识到前任回来上班了,于是退隐不报菜了。 我们发现,这个流程很有用,除了用来报菜,还能用于很多其它的场景。这个流程,就叫 VRRP(虚拟路由器冗余协议)。

其它通知方案?小明当然可以跟老王打电话说我要请假了,让别的替班报菜员顶上。但是,小明不声不响的去上厕所了呢?我们必须有个机制能确保报菜员一直在。当然,也有别的机制可以让替班报菜员发现主报菜员不在了,比如让替班报菜员一直扫视大堂看下人在不在,但这会导致替班报菜员效率降低,扫视间隔加大了又会导致有可能长时间没人报菜。

替班报菜员可以是老王雇的专职替班,没事就站着等主报菜员不在时接活;也可以是洗完工兼任。这取决于老王的经营成本。一般来说,我们会选择兼任,毕竟节省成本很重要呢。兼任的时候效率可能降低,但是餐馆毕竟能正常运转。老王可以加紧让小明回到岗位。但是,缺人是万万不行的。

对了,餐馆大了,老王还可能分角色,有荤菜报菜员,素菜报菜员,可以共用上面的震动收发器。震动收发器可以发出不同震动类型来区隔。这是后话了。


  • 学习笔记:http://wiki.soasme.com/RTFD/rfc5798
  • RFC文档: https://tools.ietf.org/html/rfc5798