开发者社区> 问答> 正文

客服分配并发场景怎么设计比较好?

请教一个客服场景下的并发解决方案。
假设1个客服可以服务10个用户,然后有10个客服。
1.客服登录,用户请求分配客服,如果客服都在忙,则返回排队号,等有客服空闲时,则分配给排队队列队首的用户。
2.客服随时会登录,退出。用户随时会加入,放弃排队。

  1. 客服服应该平均分配,比如10个用户进来,应该是每个客服服务一个。
    1.请问下这个队列怎么设计比较好?

2.java中用什么并发集合比较合适?

展开
收起
蛮大人123 2016-02-26 18:07:02 2932 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    1.用户存在一个队列里就好
    2.用户放弃不用特殊处理,排到的时候叫号不答应扔掉找下一个
    3.客服可以这样做:开一个线性表 n[11],它的每一个元素是一个链表,存着一些客服,其中 n[i] 存着正在服务 i 个用户的客服。每次一个客服新接到或服务完用户后,把它从 n[i] 中取出,放进 n[i - 1] 或 n[i + 1]。维护一个变量 s,表示当前服务用户最少的客服。每次 n[s] 有一个客服搬进 n[s - 1] 时令 s -= 1,n[s] 最后一个客服搬进 n[s + 1] 时令 s += 1。
    例如:
    假设有三个客服a,b,c,每个客服最多服务三个用户:
    开始:
    screenshot
    来了一个用户,分配给客服a
    screenshot
    又来了一个用户,分配给客服b
    screenshot
    又来了一个用户,分配给客服c。
    注意到这个时候 n[s] 里只有一个客服了,然后这个客服被挪到 n[s + 1],所以令 s += 1。
    screenshot
    然后客服a服务的客户走了,注意到a就在n[s]里,所以令s -= 1。
    screenshot
    然后比如说又来了 6 个客户,分配完以后是这种情况:
    screenshot

    2019-07-17 18:48:36
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Phoenix在客服系统的实践 立即下载
# Apache Spark系列技术直播# 第八讲 【 微软Azure平台利用Intel Analytics Zoo构建AI客服支持实践 】 立即下载
客服领域的数据智能实践 立即下载