一种服务端、数据推送方法、数据推送系统与流程

文档序号:22428328发布日期:2020-10-02 10:05阅读:118来源:国知局
一种服务端、数据推送方法、数据推送系统与流程

本发明实施例涉及数据推送技术,尤其涉及一种服务端、数据推送方法、数据推送系统。



背景技术:

随着信息系统的不断推广,人工智能的不断普及,实时聊天,热点信息推送等应用场景越来越丰富,系统数据交互效率显得尤为重要。

现有的获取系统实时数据只能通过轮询的方式定时向服务器发送请求,目前,云客服项目接入实时聊天,智能问答场景的租户越来越多。用户对数据的时效性要求越来越高,大量用户访问随之而来的是访问量攀升,现有的智能问答,人工客服大多采用用户端ajax轮询的方式向服务器请求数据,服务器查询到数据后返回给请求,没有数据则返回空,用户端获取到数据再进行渲染。轮询有以下弊端:

(1)时效性差。设置定时时间,用户每5秒钟向服务器请求一次,如果客服、智能机器人在5.1秒的时候发送了一条信息,那么用户需要在第二个请求也就是10秒后才能获取这条信息,数据时效性低用户体验差。

(2)轮询无视网络延迟。无论网络状况如何,它都会去一遍又一遍的发送请求,如果网络状况不良,一个请求发出,还没有返回结果,它会坚持不懈的继续发送请求,最后导致的结果就是请求堆积。

(3)大量的请求导致服务器压力大。如果大量用户接入,都使用轮询的方式,会消耗更多的资源,甚至导致服务宕机。用户端在服务端没有数据返回的时候依然会发起http请求,造成很多无谓的网络传输。



技术实现要素:

本发明实施例提供一种服务端、数据推送方法、数据推送系统,以实现实时推送数据消息的效果。

第一方面,本发明实施例提供了一种服务端,该服务端包括:多个服务器,各服务器上分别部署至少一个服务,所述服务与客户端之间长连接,并存储有客户端连接对象;

所述服务端生成数据信息,并确定所述数据信息的客户端连接对象;

所述服务端基于所述长连接将所述数据信息推送至与所述客户端连接对象对应的目标客户端。

第二方面,本发明实施例还提供了数据推送方法,该方法包括:

服务端生成数据信息,并确定所述数据信息的客户端连接对象;

所述服务端基于所述长连接和所述客户端连接对象将所述数据信息推送至与所述客户端连接对象对应的目标客户端;

其中,所述服务端包括多个服务器,各服务器上分别部署至少一个服务,所述服务与客户端之间长连接,并存储有客户端连接对象。

第三方面,本发明实施例还提供了一种数据推送系统,该系统包括:客户端和如本发明实施例中任一所述的服务端;

其中,所述服务端用于生成数据信息,并基于与所述客户端之间的长连接将所述数据信息发送至所述客户端;

所述客户端用于监听所述服务端推送的数据信息,并将所述数据信息进行渲染。

本发明实施例的技术方案,通过开发一种服务端,服务端包括多个服务器,各服务器上分别部署至少一个服务,各服务与客户端之间建立长连接,并存储客户端连接对象,服务端可基于长连接,将数据信息推送至与客户端连接对象对应的目标客户端,这样解决了现有技术中需通过轮询的方式获取推送数据消息的问题,实现了实时推送数据信息的效果,提高了用户体验。

附图说明

图1是本发明实施例一中的一种服务端的结构示意图;

图2是本发明实施例二中的一种服务端的结构示意图;

图3是本发明实施例二中的路由工作示意图;

图4是本发明实施例三中的一种服务端的结构示意图;

图5是本发明实施例四中的一种服务端的结构示意图;

图6是本发明实施例四中的数据频道与服务的关系示意图;

图7是本发明实施例四中的数据频道的作业示意图;

图8是本发明实施例五中的一种数据推送方法的流程图;

图9是本发明实施例六中的一种数据推送系统的结构框架示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种服务端的结构示意图,本实施例可适用于实时推送数据消息的情况,如图1所示,该服务端10包括:多个服务器11,各服务器上分别部署至少一个服务12,所述服务与客户端之间长连接,并存储有客户端连接对象;所述服务端生成数据信息,并确定所述数据信息的客户端连接对象;所述服务端基于所述长连接将所述数据信息推送至与所述客户端连接对象对应的目标客户端。

示例性的,这里的服务端可以是基于socket.io开发的。这里的客户端连接对象可以是客户端的唯一标识信息,例如,可以是客户端的id、客户端的唯一编码等。每一个客户端均有唯一一个客户端连接对象。这里的数据信息可以是服务端生成的推送消息,例如,可以是一则时事新闻、娱乐新闻等。这里的目标客户端可以是数据信息要推送的客户端。

服务端中的各服务器上分别部署的至少一个服务与客户端建立长连接,并在服务中存储有该客户端的客户端连接对象,当服务端确定生成的数据信息的客户端连接对象时,基于长连接关系,将数据新推送给与客户端连接对象对应的目标客户端。

这里服务端确定生成的数据信息的客户连接对象,具体可以是,服务端根据生成的数据信息、数据信息的属性、用户端连接对象的浏览信息等可确定客户端连接对象。例如,服务端对生成的数据信息进行解析确定该数据信息为娱乐新闻,同时根据各用户端连接对象的浏览信息习惯等,确定用户端连接对象a常浏览娱乐新闻,则服务端确定该数据信息的客户端连接对象为用户端连接对象a,则服务端将该数据信息推送值与该客户端连接对象a对应的客户端。

通过将各服务与客户端之间建立长连接,并存储客户端连接对象,服务端基于长连接将数据信息推送至与客户端连接对象对应的目标客户端,这样解决了现有技术中需通过轮询的方式获取推送数据消息的问题,实现了实时推送数据信息的效果,提高了用户体验。

本发明实施例的技术方案,通过开发一种服务端,服务端包括多个服务器,各服务器上分别部署至少一个服务,各服务与客户端之间建立长连接,并存储客户端连接对象,服务端可基于长连接,将数据信息推送至与客户端连接对象对应的目标客户端,这样解决了现有技术中需通过轮询的方式获取推送数据消息的问题,实现了实时推送数据信息的效果,提高了用户体验。

实施例二

图2为本发明实施例二提供的一种服务端的结构示意图,本发明实施例与上述实施例中各个可选方案可以结合。在本发明实施例中:

可选地,服务端10还包括路由13;路由13接收客户端发送的长连接请求,基于所述长连接请求的服务类型,将所述长连接请求发送至与所述服务类型对应的任一服务13中,以使服务13创建并存储与所述长连接请求对应的客户端连接对象。

示例性的,长连接请求可以是客户端发送的要建立与任一服务进行长连接的请求。服务类型可以是客户端所要得到的具体服务类型,例如,可以是京东服务、淘宝服务、娱乐新闻服务和时事新闻服务等。同种类型的服务可以分布在不同的服务器中,这样保证了服务的稳定性。路由根据长连接请求的服务类型,将长连接请求发送至与该服务类型对应的任一服务中,在该服务中创建与所述长连接请求对应的客户端连接对象的长连接,并存储与所述长连接请求对应的客户端连接对象。

例如,参考图3所述的路由工作示意图,其中,socket.io服务1和socket.io服务2可以是两个不同类型的服务,这两个服务可以部署在一个服务器上,也可以分别部署在两个不同的服务器中。

客户端(例如客户端q)向路由发送了一个长连接请求,该长连接请求的服务类型为需要娱乐新闻的数据信息,与娱乐新闻对应的服务有3个,这3个服务分别部署在3个不同的服务器中,路由根据该娱乐新闻的服务类型,将客户端q的客户端连接对象与3个服务器中任一个服务器中的娱乐新闻服务建立长连接,比如,将客户端q的客户端连接对象与1号服务器中的娱乐新闻服务建立长连接,并在1号服务器中的娱乐新闻服务中存储客户端q的客户端连接对象。

需要说明的是,当客户端连接对象与服务建立长连接后,客户端也会接收到服务的唯一标识信息,例如id。然而,在这里客户端接收的并不是服务的id,而是接收的路由的id,具体的这里可以是,利用spring-cloud(一种微服务架构)的zuul(微服务架构的一个组件),对服务提供路由,这样用户端直接访问路由地址即可。

这样通过路由,可将用户端与服务建立连接,达到了高可用、高系统容量的目的。

可选的,所述路由接收所述用户端发送的通信检查请求;若所述路由检测所述通信检查请求失败,则控制所述客户端与至少一个服务器端中的其他任一服务建立长连接。

示例性的,通信检查请求可以是检查通信是否建立连接的请求。当路由接收到用户端发送的通信检查请求时,路由检查与客户端对应的客户端连接对象与其建立长连接的服务的通信是否完好,若不完好,则路由控制与客户端建立长连接的服务同种服务类型的其他服务器上的服务与客户端建立长连接。

本发明实施例的技术方案,通过路由接收客户端发送的长连接请求,基于所述长连接请求的服务类型,将所述长连接请求发送至与所述服务类型对应的任一服务中,以使所述服务创建并存储与所述长连接请求对应的客户端连接对象,这样达到高可用、高系统容量的目的。此外路由还可以接收所述用户端发送的通信检查请求;若所述路由检测所述通信检查请求失败,则控制所述客户端与至少一个服务器端中的其他任一服务建立长连接,这样可确保客户端连接上完好、健康的服务,避免无法接收到服务推送的数据信息。

实施例三

图4为本发明实施例三提供的一种服务端的结构示意图,本发明实施例与上述实施例中各个可选方案可以结合。在本发明实施例中:

可选的,所述服务端还包括业务层14,业务层14用于根据数据信息的类型确定所述客户端连接对象,其中,所述数据信息的类型包括广播数据和指定用户数据。

示例性的,广播数据可以是可推送给与某一服务建立长连接的所有用户端连接对象所对应的所有用户端的数据信息。指定用户数据可以是可推送给与某一服务建立长连接的某一个或某几个指定用户端连接对象所对应的用户端的数据信息。

服务端确定数据信息的客户端连接对象时,是服务中的业务层基于数据信息,确定的数据信息的客户端连接对象。

具体的,可以是当某一服务生成数据信息后,业务层根据该数据信息的类型,即判断该数据信息是广播数据还是指定用户数据,即判断该数据信息是要推送给与该服务建立长连接的所有用户端连接对象所对应的所有用户端,还是要推送给与该服务建立长连接的某一个或某几个指定用户端连接对象所对应的用户端。

这样业务层可根据数据信息的类型确定所述客户端连接对象,以便后续将数据信息推送给对应的客户端连接对象所对应的客户端。

可选的,业务层14将所述数据信息和所述目标客户端对应的客户端连接对象通过路由转发至各所述服务中;若任一服务中存储有所述客户端连接对象,则基于所述客户端连接对象对应的长连接将所述数据信息推送给与所述客户端连接对象对应的目标客户端。

示例性的,当业务层基于某一服务生成的数据信息确定了与该数据信息对应的某一客户端连接对象时,例如,业务层基于某一服务a生成数据消息1,确定数据消息1对应的某一客户端连接对象为c,则业务层将该数据消息1和客户端连接对象c发送至服务a中,服务a判断其内是否存储有客户端连接对象c,若有,则基于客户端连接对象c与服务a建立的长连接,将数据消息1发送给与客户端连接对象c对应的目标客户端。

这样解决了现有技术中需通过轮询的方式获取推送数据消息的问题,实现了实时推送数据信息的效果,提高了用户体验。

本发明实施例的技术方案,通过服务端包括的业务层,根据数据信息的类型确定所述客户端连接对象,其中,所述数据信息的类型包括广播数据和指定用户数据,以便后续将数据信息推送给对应的客户端连接对象所对应的客户端。业务层将所述数据信息和所述目标客户端对应的客户端连接对象通过路由转发至各所述服务中;若任一服务中存储有所述客户端连接对象,则基于所述客户端连接对象对应的长连接将所述数据信息推送给与所述客户端连接对象对应的目标客户端,这样解决了现有技术中需通过轮询的方式获取推送数据消息的问题,实现了实时推送数据信息的效果,提高了用户体验。

实施例四

图5为本发明实施例四提供的一种服务端的结构示意图,本发明实施例与上述实施例中各个可选方案可以结合。在本发明实施例中:

可选的,所述服务端还包括:数据频道15;当至少一个服务与客户端建立长连接后,至少一个服务订阅所述数据频道。

示例性的,数据频道可以是一个数据传输的通道,这里例如可以是redis频道。参考图6所述的数据频道与服务的关系示意图,其中,socket.io服务1和socket.io服务2可以是两个不同类型的服务,这两个服务可以部署在一个服务器上,也可以分别部署在两个不同的服务器中。当服务与客户端建立长连接后,服务可启动订阅一个数据频道,例如,服务可启动订阅一个redis频道single_msg(频道名称,可自定义)。这样数据信息可在该数据频道中进行传输。

可选的,业务层基于当前服务生成的数据信息,以及基于当前服务生成的数据信息确定的客户端连接对象,若当前服务中未存储有基于当前服务生成的数据信息所确定的客户端连接对象,则所述当前服务将所述当前服务生成的数据信息发送至数据频道;除当前服务之外的任一其他服务中存储有基于当前服务生成的数据信息所确定的客户端连接对象时,存储有基于当前服务生成的数据信息所确定的客户端连接对象的服务,将所述当前服务生成的数据信息推送给与基于当前服务生成的数据信息所确定的客户端连接对象对应的客户端。

示例性的,当前服务可以是当前生成的需要推送的数据消息的服务。参考图7所述的数据频道的作业示意图,当业务层基于当前服务生成的数据信息确定了与该数据信息对应的某一客户端连接对象时,例如,业务层基于当前服务a生成数据消息1,确定数据消息1对应的某一客户端连接对象为c,则业务层将该数据消息1和客户端连接对象c发送至当前服务a中,当前服务a判断其内是否存储有客户端连接对象c,若没有,则将该数据消息1发送到数据频道(例如,可以是redis频道)上,数据频道将该数据消息1发送至出服务a外的其他所有服务,比如服务b、服务c和服务d,当服务b、服务c和服务d中任一服务中存储有客户端连接对象c时,例如,服务d上存储有客户端连接对象c,则服务d将数据消息1发送给与客户端连接对象c对应的客户端。

如图7所示,任一服务除了判断其自身生成的数据消息在其自身能否找到对应的客户端连接对象外,还需要判断经由数据频道传输来的数据信息在其自身上能够找到对应的客户端连接对象。

这样通过建立数据频道,实现了将不同实例的分布式服务,解决了服务无法分布式部署的问题,达到了高可用,高系统容量目的。

本发明实施例的技术方案,通过服务端还包括:数据频道;当至少一个服务与客户端建立长连接后,至少一个服务订阅所述数据频道,这样以便于数据信息可在该数据频道中进行传输。业务层基于当前服务生成的数据信息,以及基于当前服务生成的数据信息确定的客户端连接对象,若当前服务中未存储有基于当前服务生成的数据信息所确定的客户端连接对象,则所述当前服务将所述当前服务生成的数据信息发送至数据频道;除当前服务之外的任一其他服务中存储有基于当前服务生成的数据信息所确定的客户端连接对象时,存储有基于当前服务生成的数据信息所确定的客户端连接对象的服务,将所述当前服务生成的数据信息推送给与基于当前服务生成的数据信息所确定的客户端连接对象对应的客户端,这样通过建立数据频道,实现了将不同实例的分布式服务,解决了服务无法分布式部署的问题,达到了高可用,高系统容量目的。

实施例五

图8为本发明实施例五提供的一种数据推送方法的流程图,本实施例可适用于实时推送数据消息的情况,具体包括如下步骤:

s510、服务端生成数据信息,并确定所述数据信息的客户端连接对象;

s520、所述服务端基于所述长连接和所述客户端连接对象将所述数据信息推送至与所述客户端连接对象对应的目标客户端;其中,所述服务端包括多个服务器,各服务器上分别部署至少一个服务,所述服务与客户端之间长连接,并存储有客户端连接对象。

可选的,所述服务端还包括路由。

可选的,所述路由基于客户端发送的长连接请求,基于所述长连接请求的服务类型,将所述长连接请求发送至与所述服务类型对应的任一服务中,以使所述服务创建并存储与所述长连接请求对应的客户端连接对象。

可选的,所述路由基于所述用户端发送的通信检查请求;若所述路由检测所述通信检查请求失败,则控制所述客户端与至少一个服务器端中的其他任一服务建立长连接。

可选的,所述服务端还包括业务层。

可选的,所述业务层基于数据信息的类型确定所述客户端连接对象,其中,所述数据信息的类型包括广播数据和指定用户数据。

可选的,所述业务层将所述数据信息和所述目标客户端对应的客户端连接对象通过路由转发至各所述服务中;若任一服务中存储有所述客户端连接对象,则所述业务层基于所述客户端连接对象对应的长连接将所述数据信息推送给与所述客户端连接对象对应的目标客户端。

可选的,所述服务端还包括:数据频道。

可选的,当至少一个服务与客户端建立长连接后,至少一个服务订阅所述数据频道。

可选的,业务层基于当前服务生成的数据信息,以及基于当前服务生成的数据信息确定的客户端连接对象,若当前服务中未存储有基于当前服务生成的数据信息所确定的客户端连接对象,则所述当前服务将所述当前服务生成的数据信息发送至数据频道;除当前服务之外的任一其他服务中存储有基于当前服务生成的数据信息所确定的客户端连接对象时,存储有基于当前服务生成的数据信息所确定的客户端连接对象的服务,将所述当前服务生成的数据信息推送给与基于当前服务生成的数据信息所确定的客户端连接对象对应的客户端。

可选的,所述服务端基于socket.io技术开发。

本发明实施例所提供的数据推送方法,具备本发明任意实施例所提供的一种服务端的功能和有益效果。

实施例六

图9为本发明实施例六提供的一种数据推送系统的结构框架示意图,如图9所示,该系统包括客户端20和本发明任意实施例所提供的一种服务端10。

其中,服务端10用于生成数据信息,并基于与所述客户端之间的长连接将所述数据信息发送至所述客户端。

客户端20用于监听所述服务端推送的数据信息,并将所述数据信息进行渲染。

示例性的,客户端20可以监听服务端推送的数据消息,并将该数据消息进行渲染,显示至所述客户端的显示设备(例如,可以是显示屏)上。这样客户端可实时显示服务端推送的数据消息。

本发明实施例所提供的数据推送系统,具备本发明任意实施例所提供的一种服务端的功能和有益效果。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1