独角兽养成记

    |     2018年12月12日   |   2018年   |     评论已关闭   |    1541

2018“11.11”期间京东平台成交金额再创新高,累计下单金额1598亿,较上年同期增长25.7%。据京东新发布的第三季度财报显示,京东前三季GMV(网站成交金额)较2017年同期增长30%,第三方平台GMV同比增长40%。
狂欢节带来的巨量购物潮极大地考验着电商平台的系统能力,同时随着京东在金融、物流、无界零售等领域的大步伐进军,业务复杂度与业务体量每年都在快速增长,而在业务峰值不断攀升与平均流量大幅增长的压力挑战下客服系统的表现却越来越稳定,快速的反应与问题解决带来了越来越好的用户体验,这在很大程度归功于京东自主研发和部署的一套呼叫中心系统——Unicorn所发挥的作用。

一、“独角兽”立项

2014年,京东上市美国纳斯达克,京东集团的组织架构进行了重大调整,考虑通过统一平台来管理新增业务的客服需求。在此之前,京东于2012年购买了一套某国际知名通讯厂商的呼叫中心系统,这套系统包括的座席许可证数量预计可以满足几年内的业务需求,但随着京东业务的快速增长,在2014年,许可证数量就捉襟见肘了,是继续购买价格昂贵的国际知名通讯厂商解决方案还是自主研发具有京东自主知识产权的通讯平台,成为当时必须进行的抉择。
2014年秋,在距离京东十几公里的银河SOHO,周国新正埋头进行着一款即时通讯产品的开发工作,突然他接到了过去同事王青山的电话。简单的寒暄之后对方单刀直入,邀请他去京东建设一套呼叫中心系统。王青山现在是京东集团通迅技术部负责人,当时他在客服研发部工作。在到京东之前,他与周国新曾在中国最大的Genesys代理商亿迅共事过,一起承接过很多大型呼叫中心项目的建设与运维,彼此非常熟悉和了解。王青山热情洋溢地说:“我们要技术有技术,要经验有经验,为什么不开发一套自己的呼叫中心系统?来吧,兄弟,我们干件大事。”这个召唤就像是一束光突然照进了朝九晚五的生活,但冲动是魔鬼,周国新并没有立刻接受邀请,而是在此后的几天跟王青山反复谈了很多次,确认京东是对的公司、项目是对的项目、人是对的人以后,周国新决定加入京东,他想让自己的青春再闪一次光。
经过一段时间的秣马厉兵,2015年6月,京东集团在王青山主持下成立了呼叫中心研发部,周国新担任呼叫中心新项目负责人。项目于 2015年8月正式启动,即将诞生的京东自主呼叫中心系统被命名为“UNICOM——独角兽”,这一神圣而美丽的名称寄托了初创者的雄心与梦想。新系统的目标是支撑京东业务增长所带来的客服增量,同时弥补原有商业系统的短板。

二、成功部署三地业务

项目启动之初,是架构讨论。最初的项目组一共七个人,除周国新外几乎都是呼叫中心的新兵,经常会有一些跳线的想法提出来。能把这些想法一巴掌拍死么?不能!如果不抱着一种空杯心态去迎接变化,经验就不是财富而是思想的桎梏——这是周国新一直坚信的。呼叫中心架构思想提出来很多年了,随着互联网技术突飞猛进的发展,显然有些过时了。不能再走老路了,要做一套有别于传统的东西出来,思想上的碰撞恰好让周国新能够从不同的视角去考虑问题。

在这期间,周国新还宣布了这样一个决定——尽量使用公司已有的基础架构。后来的发展证明这个决定非常正确——这样在控制成本的同时也节约了开发时间。
一个月的架构讨论之后就是捋起袖子大干90天,这是一段糟糕的日子——加班到凌晨两三点钟是家常便饭,晚上不回家、睡在公司的大有人在;这也是一段难忘的日子——他们看着一个牙牙学语、蹒跚走步的小娃在一天天长大,其中甘苦至今记忆犹新。四个月后,系统开发基本完成,周国新等一行五人到达宿迁客服中心进行项目推广,经过一系列的宣传、沟通之后客服中心的领导非常认可这套系统,这让他们充满了信心。此后经过一个月的安装调试,第一套Unicorn系统终于在2016年元旦的凌晨两点上线。在测试组同事经过一系列验证之后宣布系统上线的一刻,团队成员沉浸在极大的兴奋与欢乐之中。数月的艰难摸索,一路的磕磕绊绊,所有的纠结、气恼与烦闷都化作了成功的喜悦。
很快,2016年4月,独角兽团队又在成都部署了第二套Unicorn系统。鉴于宿迁、成都两地的成功部署起到的良好示范作用,2017年2月,扬州客服中心也提出要安装一套独角兽系统。至此,京东三地客服中心都部署了独角兽系统。

三、蜕变与革新

第一代独角兽系统按照敏捷开发的思想快速迭代而成。在系统逐步趋于稳定、承载更多的业务之后,周国新开始着手进行系统改造的第一步——提升系统的可扩展性。一代系统的问题是超过系统设计容量以后再想扩容就只能再建设一套完整、独立的系统,显然这是不能满足系统业务需要的,必须把系统改造成一个集群。
经过几个月的分析研究,2016年10月,周国新提出了一套架构改造方案,他要构建一个有别于传统呼叫中心架构的高可用集群,将服务发现、健康检查、错误熔断以及多种现代集群需要支持的特性都考虑进来。这套系统可以通过水平扩展服务器的方式来提升系统的负载能力,相当于将系统组件化,一个组件也即一个业务单元承载上千座席的业务量,关键业务组件采用的高可用方式构建。
这么大的调整,要么是脱胎换骨,要么是伤筋动骨,不想让大家流汗又流泪,周国新带领十几个兄弟又开始了一场鏖战。黄沙百战穿金甲,不破楼兰终不还,五个月之后新系统开发完成如期上线, 2017年4月,独角兽二代承担了第一条迁移进来的热线。
经过这次改造,新系统扩容变得非常简单,只需1天的部署加测试,新扩展的业务单元就可以投入使用了,而且扩展过程中原有的业务不受任何影响,可以正常工作。
系统需要改造的第二步就是在集群架构下高效地对呼入电话进行路由分配,问题的本质是一个负载均衡的问题,但相对于web服务来说呼叫中心的负载均衡方式要复杂的多——要平衡的不只是服务器这样的硬件资源,还有客服代表这样的人力资源。传统呼叫中心的业务单元数量较少,一种比较常见负载均衡方式类似菊花链算法,但这对于集群架构的独角兽来说太低效了,原因就是服务单元的数量太多了。如何用一种更优雅高效的方式来解决这个问题?在查阅一系列资料、思考了很长一段时间之后周国新终于想明白了问题的关键——要做一个两段式路由,根据每段路由的不同特性来应用不同的负载均衡策略。按照这个思路,他带领几个小伙伴先后进行了几次路由改造,最终把方案付诸实施。
但是,这个方案的实际运行效果怎样呢?经过一段时间的观察后周国新发现了一个问题:一边是电话在排队等待服务,一边是可以提供服务的客服处在空闲状态。为什么会产生这种现象呢?原因就在于需求的全局性与资源的局部性之间会产生矛盾。原有的方案实现了通话排队之前的均衡,但在排队过程中没进行动态的调整,这就造成了不均衡的发生。一种比较理想的做法是全程对排队通话进行动态调整,但这会使得系统的通讯量翻倍,使服务器的处理效率大打折扣,所以这种方式看起来很美但不现实。怎么办呢?在经过仔细分析之后周国新看到了问题的解决方法——实现一种惰性分配算法,在不均衡出现之前不做任何的动态调整,只有在不均衡真正出现以后再动态调整通话,这是一个折中的方案,在保证客服资源的利用率最高的同时并没有明显增加系统的压力。2017年12月新的路由分配方案上线之后再也没有出现明明有可以提供服务的空闲客服、客户打进来却还要排队的现象,并且几次线上压测都表明这种方案不会降低系统的并发性。通过这两次调整,独角兽二代可以支持上万规模的并发,截止到2018年11.11,新系统承载的业务量已接近原某国际知名通讯厂商系统的业务量,如果没有这两次调整打下的良好基础,这是绝对做不到的。
通向山峰的路从来都是迂回曲折的,总会遇各种沟沟坎坎横亘其间。在独角兽二代运行期间,周国新带领团队还解决了一系列的问题,其中让他们印象最深刻的一个就是困扰了研发团队很长时间的 “注册风暴”问题。
所谓“注册风暴”问题是这样造成的:有一部分电话会通过远程接入呼叫中心,这部分电话可能会由于链路问题或者人为的某个原因而断开跟呼叫中心的连接,过一段时间再恢复连接,这时就会突然涌进大量的注册信息,当遇到业务高峰时会给高峰时段的系统带来不小的冲击,甚至会影响系统的稳定性。
在一次次焦头烂额处理完这些注册问题后周国新带领他的小伙伴们从系统的各个方面寻找解决办法,最终他找到了解决问题的关键所在:实现一种注册缓存机制,这种机制实现以来,“注册风暴”再也没有对正常业务产生干扰了。

四、研发雪豹录音系统

在独角兽系统运行逐步趋于平稳以后,其他系统的开发也被提上了日程。2016年11月开始,周国新不断翻阅各种资料并与业务方频繁沟通,最终在12月完成了录音系统——雪豹的立项。
雪豹的开发团队只有五个人,就是这样一个小团队使周国新体会到了敏捷开发的乐趣——思想很容易统一、执行力出奇高,经常是提出一个想法后大家立刻开始讨论细节、制定方案,当天就能付诸实施。摒弃僵化的静态配置,采用全动态获取配置方式就是在这种不断碰撞中完成的,而迅速试错保证了系统的开发速度。
这其中也有波折,按照惯例,最初计划采用温备的备份策略,可两个月过去了,研发团队还没有找到一个简洁的方案,周国新决定直接实现热备。热备相对于温备来说其可靠性更高,也是业务方更想要的实现方式。他吸取了很多独角兽系统的构建经验,比如去掉重量的zookeeper,自己开发一套服务注册、发现、自动故障切换机制,以安全简洁的方式实现集群功能。
2017年5月,雪豹系统正式上线,运营以来表现非常平稳,很少发生问题。
五、独角兽漂洋过海
2017年,京东集团拓展海外市场,需要在印尼部署一套客服系统,独角兽漂洋过海。对于已经成功布署多地的研发团队来说在技术落地方面已经是轻车熟路,而不同的语言、不同的网络环境、不同的做事习惯又成为新的屏障。
语言是一道难关,双方的技术团队使用英文作常规交流还可以,每每到了关键的技术环节就出现沟通困难。有一次研发团队与印尼同事线上讨论运营商如何接入,经过多次解释,对方还是不能理解,一筹莫展中的周国新不得不玩起看图说话游戏,他让大家等一下,然后打开visio,刷刷刷画了一个交互图发了过去,几秒钟后对方发来一个大拇指,表示终于明白了。还有一次是在录音系统调测中,周国新说“得把网线换到另外一个交换机上”,印尼的网管兄弟回应“等一下”,可足足等了一个小时还不见对方动静,周国新试探性地发了一个消息,网管兄弟说还要等等,这时他意识到对方可能没有理解自己的意思,赶紧请当地的中国同事帮忙确认。果然,当地网管把这个临时性的调试措施当成了永久性的调整,正在汗流浃背地调整机房的布线,于是他赶紧请当地的中国同时帮忙沟通,还好只是等了一个小时。
2018年4月,印尼呼叫中心割接成功。

六、使命,当下与未来

截至2018年11.11,独角兽系统已经上线运行近三年的时间。除了承接京东商城的全部呼出和部分呼入业务以外它还承接了京东金融、京东物流的全部热线业务。此外京东的不少创新型业务也陆续引入进来,如京东与沃尔玛合作的山姆会员客服热线、京东无界零售门店的7Fresh热线等。
如果说这套系统最初只是一个传统的语音通讯平台,发展到今天,它已经脱胎换骨,演进成一个相当完善的全媒体联络平台了。研发部通过在APP端、公众号及微信小程序等渠道上的各种创新而实现了多媒体上即时通讯服务请求的接入和路由,如可视化IVR,当客户通过应用端发起服务请求,客服中心系统可以立即将获取的客户信息包括从点击、浏览到服务请求内容,路由给对应技能组的座席,使其能即时、准确地响应客户请求。
当前,AI技术正深刻地改变着人们的生活习惯与消费行为,在呼叫中心智能化领域,研发部已经开始布局并做出了多种尝试,目前已经实现的智能化场景包括通过智能外呼对大件物流在上门送货前进行预约以及金融业务的催收催缴。
据周国新介绍,外呼是呼叫中心占比非常多的业务,如果能结合NLP等深度学习技术来实现大部分外呼场景的智能化,将能够在极大节省呼叫中心人力资源投入的基础上提供更高品质的外呼服务,这也是他们正在进行的一个尝试。除此以外,未来京东将会在呼叫中心场景中引入更多的AI技术,以最大化地发挥系统潜力、提升人效。
往昔不忘,来日可期,既往以往,来日可待。周国新和他的小伙伴们在自主创新的道路上一路走来,理想和勇气将继续照亮他们的前程。

本文刊载于《客户世界》2018年12月刊;作者为本刊记者刘小青,根据京东集团周国新口述整理。

转载请注明来源:独角兽养成记

相关文章

噢!评论已关闭。