logo

得物自研客服IM SDK的突破与创新

作者:rousong2024.12.03 10:48浏览量:23

简介:得物为提升客服IM系统的稳定性和扩展性,选择自研消息通信SDK。通过优化消息链路、业务接入侧,引入RxJS等技术,实现了消息的可靠投递和高效处理,显著提升了客服与用户的沟通体验。

在电商平台的日常运营中,客服与用户之间的实时沟通至关重要。得物,作为一个深受年轻人喜爱的潮流网购社区,深知高效、稳定的客服IM系统对于提升用户体验的重要性。然而,在初期,为了快速支撑业务需求,得物客服IM系统是基于第三方SDK进行了二次开发。尽管这种方式在一定程度上加速了项目的进展,但同时也埋下了问题定位困难、特殊功能实现成本高等隐患。

随着得物业务的快速发展,用户对客服IM聊天的性能和体验要求日益提高,第三方SDK消息通信逐渐遇到了技术瓶颈。为了解决这些问题,得物决定自研一套可控、稳定、灵活的IM系统,以确保能够更好地满足用户需求,提升用户体验。

自研之路的挑战与应对

在自研IM系统的过程中,得物面临了诸多挑战。其中,如何设计IM聊天SDK,使客服在发送消息过程中感知不到卡顿,是一个关键难题。为了避免卡顿,得物对SDK的发送策略进行了合理设计,并避免了大量JS脚本的执行。

得物客服与用户之间的消息发送和接收流程链路清晰明了。当客服发送消息时,SDK会先创建消息体,将其封装成一个自定义的结构体,并存储到数据池中。然后,SDK会对消息体进行序列化,将其传递给socket接口,通过网络通道发送到网关。网关侧接收到消息后,会进行反序列化,并将消息传递到数据池中进行处理,组装成业务可识别的模型,最后推送到业务侧进行展示。

为了确保消息的可靠投递,得物在自研IM系统中实现了消息的抽象改造和业务接入侧的抽象改造。其中,消息链路的抽象改造主要涉及消息数据存储和消息排序的重构;而业务接入侧的抽象改造则主要是将业务逻辑和SDK源码进行解耦,使代码分层更加清晰。

RxJS的引入与消息监听

在SDK自研开发过程中,如何解耦框架代码和业务代码,做到灵活的消息监听,是另一个需要解决的问题。得物在经过前期调研后,选择了引入RxJS技术。

RxJS提供了几个核心概念,包括Observable(可观察对象)、Observer(观察者)和Subscription(订阅)。Observable表示一个可调用的未来值或事件的集合;Observer则监听由Observable提供的值;而Subscription则表示Observable的执行,并可以通过unsubscribe方法取消执行。

使用RxJS可以清晰地梳理出数据流向,通过发布订阅的方式实现数据的通信。这使得消息处理的整个流向非常清晰,框架底层接收消息,订阅者消费消息,从而实现了框架代码和业务代码的解耦。

消息框架的分层实现

得物自研的IM消息通信框架主要分为三层结构:网络层、数据链路层和应用层。

网络层作为消息发送的最底层,负责TCP的连接、消息发送和接收。得物选择了TCP协议作为网络协议,因为TCP可以提供可靠传输的服务,确保数据无差别、不丢失、不重复且按序到达。整个SDK的通信方式采用了Websocket+Json、grpc+protobuf。

数据链路层是SDK的核心层,主要涉及用户信息、聊天消息、数据池等。得物在这一层对消息协议类型进行了初始化,并设计了多种通信协议类型,如Hi、Login、Sub、Leave、Pub等,以支持不同的消息和事件发送需求。

应用层则主要负责与业务逻辑的交互,将接收到的消息推送到业务侧进行展示和处理。

成果与展望

通过自研IM系统,得物不仅解决了第三方SDK接入带来的潜在隐患,还提升了IM系统的稳定性和高扩展性。自研的IM系统能够更好地满足得物业务的发展需求,为用户提供更加高效、稳定的客服沟通体验。

未来,得物将继续优化自研IM系统,引入更多先进的技术和理念,不断提升系统的性能和用户体验。同时,得物也将积极探索IM系统在更多场景下的应用,为用户提供更加便捷、智能的服务体验。

在自研IM系统的过程中,得物选择了千帆大模型开发与服务平台作为技术支持之一。千帆大模型开发与服务平台提供了丰富的API接口和开发工具,为得物自研IM系统提供了强大的技术支撑。通过借助千帆大模型开发与服务平台,得物能够更加高效地实现IM系统的功能开发和优化升级。

综上所述,得物自研客服IM SDK的突破与创新不仅提升了用户体验和系统的稳定性与扩展性,还为得物未来的发展奠定了坚实的基础。

相关文章推荐

发表评论