本发明专利技术公开了一种支持高并发、高可用的电子商城客服系统,包括客服服务端,由提供http服务的web服务器集群构成,用于客服登录、消息的上传、坐席管理、用户接待管理、消息保存到数据源、消息推送到kafka队列和供客户通过http接口登陆及发送消息;推送服务单元,用于订阅kafka消息队列、消息队列的消息;kafka集群,用于提供消息队列的发布与订阅;数据源,将坐席管理和用户接待管理数据持久化。本发明专利技术用kafka集群,对“客服服务”和“推送服务”做了解耦,在应对大量并发的消息发送时,“推送服务”能有条不紊从kafka集群消费队列数据,然后快速的推送给接收者;推送服务采用websocket服务器集群,集群的每个节点采用自身ip作为kafka的group id,实现websocket服务器集群可扩展,高可用。
【技术实现步骤摘要】
一种支持高并发、高可用的电子商城客服系统
本专利技术属于信息
,特别涉及一种支持高并发、高可用的电子商城客服系统。
技术介绍
电子商城系统通常会设置客服系统为客户服务,但是现有的客服系统存在如下问题:1、响应较慢,由于采用客户端轮询的方式,用户得到客服的响应不够及时;2、不支持支持海量数据,由于采用聊天记录保存再数据库,当累计数据达到上亿级别的时候,查询性能会很低,响应慢,需要定时删除旧的数据,难于维护且不利于统计分析运营数据;3、不支持高并发、高可用,当在线用户量很高的时候,以及客户端轮询的机制,数据库承载很高的并发压力,数据库性能下降,客服系统可能出现拒绝服务等。
技术实现思路
为解决上述技术问题,本专利技术公开了一种支持高并发、高可用的电子商城客服系统。本专利技术用kafka集群,对“客服服务”和“推送服务”做了解耦,在应对大量并发的消息发送时,“推送服务”能有条不紊从kafka集群消费队列数据,然后快速的推送给接收者;推送服务采用websocket服务器集群,集群的每个节点采用自身ip作为kafka的groupid,实现websocket服务器集群可扩展,高可用。本专利技术的目的通过下述技术方案实现:一种支持高并发、高可用的电子商城客服系统,包括客服服务端,由提供http服务的web服务器集群构成,用于客服登录、消息的上传、坐席管理、用户接待管理、消息保存到数据源、消息推送到kafka队列和供客户通过http接口登陆及发送消息;推送服务单元,用于订阅kafka消息队列、消息队列的消息;kafka集群,用于提供消息队列的发布与订阅;数据源,用于将坐席管理和用户接待管理数据持久化;用户发送消息后进行队列排队,客服自客服服务端登陆推送服务单元得到分配到自身的用户队列信息;客服从数据源查询发送消息的用户的接待状态,若查询不到则将对应用户设置为“未接待”状态并持久化到数据源,并推送一条“用户等候接待”消息到kafka集群;kafka集群将“用户等候接待”消息通过websocket广播给所有的客服,所有的客服所在的前端浏览器收到“用户等候接待”消息后将“用户等候接待”消息对应的消息内的用户加入到“等候队列”;当某一客服服务端的客服接待消息内的用户后,客服服务端将息内的用户标记为“已接待”状态;并持久化到数据源,同时向kafka集群推送“用户已接待”的消息,将所有队列排队中的所述消息内的用户移除。进一步的改进,所述数据源为mysql数据库。进一步的改进,所述推送服务单元由websocket服务器集群组成。进一步的改进,用户通过客服服务端的http接口发送消息给客服服务端,“客服服务端接收到消息后对消息的内容进行封装得到“消息体”,包括消息类型、发送者、接收者、内容类型和消息内容;所述websocket服务器集群的每个节点采用自身ip作为kafka集群的集群id,节点消费相同的“消息体”,每个节点确定消费到的“消息体”内的“接收者”是否已经连接到本节点,如果没连接则丢弃该消息,否则推送“消息体”内的消息内容给“接收者”;这样当某个节点出现故障,“接收者”重连到另一个节点,由于另一个节点也消费到了同一份“消息体”,就可以将“消息体”内的消息内容推送给“接收者”,防止因为节点故障消息内容无法推送到目标用户,达到客服系统高可用的目的。进一步的改进,还包括用于管理订单的订单管理系统和用于管理商品的商品管理系统;若所述消息是一个订单消息,则从订单管理系统查询订单的详细信息,所述订单的详细信息包括订单价格、下单时间和收货地址,将订单的详细信息封装成json格式的“消息体”;“消息体”中消息类型为“聊天消息”,发送者为用户a,接收者为客服b,内容类型为“订单类型”,消息内容为订单的详细信息。进一步的改进,若消息是一个商品消息,则商品管理系统查询商品的详细信息,商品的详细信息包括商品价格、商品名称和、商品规格,将品的详细信息封装成json格式的“消息体”,“消息体”中消息类型为“聊天消息”,发送者为用户a,接收者为用户b,内容类型为“商品类型”,消息内容为商品的详细信息。进一步的改进,客服服务端封装好“消息体”后,将消息体保存到ES,同时将消息体推送到kafka消息队列。进一步的改进,还包括cdn资源存储,用于加速资源文件的下载与上传;所述资源文件包括图片和视频。本专利技术的优点:1、去除客户端轮询的机制,利用websocket技术,可以做到让服务端主动推送消息给客户端,这样客户端就可以得到快速响应。2、聊天记录等海量数据,从持久化到mysql改为持久化到Elasticsearch(简称ES)。由于ES是一个分布式可扩展的实时搜索和分析引擎,可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据,所以即便我们的聊天记录等累计到几十亿的数据量级别,仍然可以满足快速查询聊天记录和统计运营数据的需求。3、设计一个单独的“推送服务”,该服务有websocket服务器集群组成,其订阅kafka集群的消息,由于kafka具有高扩展性、削峰填谷、可恢复性、顺序保证、送达保证、异步通信等特性,非常适合作为我们推送服务的中间件。当高峰期有大量并发消息需要推送时,先经过kafka消息队列,而后由websocket服务器集群均匀平稳从kafka消息队列消费,可以避免高峰期大量并发带给“推送服务”的压力。4、websocket服务器集群的每个节点采用自身ip作为kafka的groupid,这样每个节点可以一起消费topic相同的消息(每个节点消费的数据是相同的),每个节点根据消费到的“消息体”内的“接收者”是否已经连接到本节点,如果没连接则丢弃该消息,否则推送该消息给“接收者”。这样当某个节点出现故障,“接收者”重连到另一个节点,由于另一个节点也消费到了同一份消息,就可以将该消息推送给“接收者”,不会因为节点故障就无法推送到目标用户,因此达到客服系统高可用的目的。附图说明图1为用户的接待排队流程图;图2为推送服务工作流程图。具体实施方式下面结合实施例对本专利技术作进一步详细的描述,但本专利技术的实施方式不限于此。本专利技术的客服系统主要由客服服务、kafka集群、推送服务、数据源(mysql和ES)、cdn资源存储等模块构成。下面是对各模块机器功能的介绍:1.客服服务,由提供http服务的web服务器集群构成,其主要有用户登录、消息的上传、坐席管理、用户接待管理、消息保存到数据源、消息推送到kafka队列、从电子商城查询订单与商品信息、消息体的封装等功能。2.kafka集群,主要提供消息队列的发布与订阅功能。3.推送服务,由提供websocket服务的web服务器集群构成,其主要功能:订阅kafka消息队列、消费消息队列的消息、拆解消息体发送给对应的客服和用户。4.数据源,mysql数据库负责将坐席管理、用户接待管理等数据持久化,本文档来自技高网...
【技术保护点】
1.一种支持高并发、高可用的电子商城客服系统,其特征在于,包括客服服务端,由提供http服务的web服务器集群构成,用于客服登录、消息的上传、坐席管理、用户接待管理、消息保存到数据源、消息推送到kafka队列和供客户通过http接口登陆及发送消息;/n推送服务单元,用于订阅kafka消息队列、消息队列的消息;/nkafka集群,用于提供消息队列的发布与订阅;/n数据源,用于将坐席管理和用户接待管理数据持久化;/n用户发送消息后进行队列排队,客服自客服服务端登陆推送服务单元得到分配到自身的用户队列信息;客服从数据源查询发送消息的用户的接待状态,若查询不到则将对应用户设置为“未接待”状态并持久化到数据源,并推送一条“用户等候接待”消息到kafka集群;kafka集群将“用户等候接待”消息通过websocket广播给所有的客服,所有的客服所在的前端浏览器收到“用户等候接待”消息后将“用户等候接待”消息对应的消息内的用户加入到“等候队列”;当某一客服服务端的客服接待消息内的用户后,客服服务端将息内的用户标记为“已接待”状态;并持久化到数据源,同时向kafka集群推送“用户已接待”的消息,将所有队列排队中的所述消息内的用户移除。/n...
【技术特征摘要】
1.一种支持高并发、高可用的电子商城客服系统,其特征在于,包括客服服务端,由提供http服务的web服务器集群构成,用于客服登录、消息的上传、坐席管理、用户接待管理、消息保存到数据源、消息推送到kafka队列和供客户通过http接口登陆及发送消息;
推送服务单元,用于订阅kafka消息队列、消息队列的消息;
kafka集群,用于提供消息队列的发布与订阅;
数据源,用于将坐席管理和用户接待管理数据持久化;
用户发送消息后进行队列排队,客服自客服服务端登陆推送服务单元得到分配到自身的用户队列信息;客服从数据源查询发送消息的用户的接待状态,若查询不到则将对应用户设置为“未接待”状态并持久化到数据源,并推送一条“用户等候接待”消息到kafka集群;kafka集群将“用户等候接待”消息通过websocket广播给所有的客服,所有的客服所在的前端浏览器收到“用户等候接待”消息后将“用户等候接待”消息对应的消息内的用户加入到“等候队列”;当某一客服服务端的客服接待消息内的用户后,客服服务端将息内的用户标记为“已接待”状态;并持久化到数据源,同时向kafka集群推送“用户已接待”的消息,将所有队列排队中的所述消息内的用户移除。
2.如权利要求1所述的支持高并发、高可用的电子商城客服系统,其特征在于,所述数据源为mysql数据库。
3.如权利要求1所述的支持高并发、高可用的电子商城客服系统,其特征在于,所述推送服务单元由websocket服务器集群组成。
4.如权利要求3所述的支持高并发、高可用的电子商城客服系统,其特征在于,
用户通过客服服务端的http接口发送消息给客服服务端,“客服服务端接收到消息后对消息的内容进行封装得到“消息体”,包括消息类型、发送者、接收者、内容类型和消息内容;
所述webso...
【专利技术属性】
技术研发人员:戴跃锋,唐星剑,尹彬,陈喆,谭清明,
申请(专利权)人:湖南御家科技有限公司,
类型:发明
国别省市:湖南;43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。