代理重定向策略及其用户感受的分析

大家会碰到类似这样的事情,比如,找你的租房中介负责人让处理一下空调坏了,中介负责人回答你说“我现在不负责你了 ,你去联系A。”你觉得这件事有些不爽,没办法,去联系A。说不定A又会说自己不负责了,让你联系B。

碰到这种“你去联系XXX”的情况,我想没有人会开心的。

如果这样的“重定向”形成了环,那么用户一直被“踢皮球”,不会得到处理。用户就要抓狂了!

PS:是不是想到了有关部门的处理方式,哈哈

作为客户,是体验差的问题;作为服务方,其实意味着客户的流失!

我们把这个问题,称为“事务转手”,服务方的负责人称为“代理”。“事务转手”的情况常常会有,“代理”如何处理才合理呢?

代理的处理方式及分析

1) 一杆到底

代理把问题提给接手的同学,处理完了,再把结果反馈给用户。

即代理“一杆到底”都处理了,用户不需要感知有转手这件事,体验最好。但问题是

  • 每次这样的处理,多了一次传手,效率低。
  • 如果每次都这么处理,事务便没有办法转交出去了,一直陷在里面。

2) 重定向用户到下一任去

重定向,即让用户去联系下一任。上文也提到可以会出现“踢皮球”的风险(这是一个不能接受的情况)。

另外,之前代理承诺了是负责该用户的,用户在要代理处理事务时,用户如果没有被事先告知代理有变化,那么之前代理承诺是没有变化的。所以,用户在要代理处理事务时,用户被重定向到A,代理并没有负责处理好(用户要做额外的联系工作,并不期望要做),这个“用户被重定向”是代理违背了自己的承诺!

PS: 这让我想到了“契约精神”!

上面2种处理方式很容易想到,但存在问题。从方法2的分析可以看出,一个关键点是“事先告知用户代理有变化”,展开说明如下:

  1. 如果事先告知了用户,那么用户应该去联系下一任,
  2. 如果没有事先告知了用户,那么这次处理用户不能被重定向。
    结合上面的2点,得到了第三种处理方式。

3) 本次“一杆到底”处理;找出真正可以处理代理A并告知用户以后的事务已转交A

可以看出这个处理方式包含了1方式和2方式的内容。能避免前两种方式中会有的问题:

  1. 只有第一次有传手,不会每次都效率低。
  2. 避免 代理无法转交业务的问题(方法1)。代理处理了这一次,以后不用再处理这个用户了,业务转交成功。
  3. 代理没有违背承诺。
  4. 避免“踢皮球”这样恶性情况!因为使用这种方式,本次事务一定会得到直接处理。
    细心的你可能发现,这种方式代理的第二步骤是

    找出真正可以处理代理A”并告知用户以后的事务已转交A
    为什么不是
    告知用户以后的事务已转交自己的下一任
    原因是这样可以避免下面的情况:

用户会连续多次被告知业务交给了下一任(当次的事务会被直接处理),如果下一任也转交了任务。

总结

从上面给出的方法中可以看到,应该提前通知用户事务转交的事情,让用户早有准备。

即广播变化后的代理信息。

当然最好的情况还是避免告知用户转交这种情况的发生。可以方法有:

用户联系的是一个稳定信息比如服务中心(像10086),而不是某个直接某个代理。

即从一个中心获得代理信息,而不是直接联系代理。

当然服务中心本身的信息同样面临这个问题,即可以会变更转手,不能使用服务中心的方式(否则这是死循环的方法了)。这是个小概率事件,并且要慎重处理。

事务处理关心的指标

  • 用户的体验:被重定向的次数、响应时间
  • 系统成本:处理效率/所用的资源

后记

这段时间在调研Paxos,看了Paxos相关论文。Paxos包含了很多代理间的交互,触发了生活中代理问题(由租房中介的事引起)的思考。

后面会整理出一系列Paxos分享来 :)

PS: 本文也放在我的个人博客:事务转手策略及其用户感受的分析

企业级互联网架构Aliware,让您的业务能力云化:https://www.aliyun.com/aliware