发明内容
因此,希望能够减少服务端的负载,提高游戏的速度和信息交互的实时性,达到更好的用户体验效果。为此,本发明的目的在于提供数据交互系统及其方法,减少服务端的负载,提高游戏的速度和数据交互的有效性和实时性。
根据本发明的一个方面,提供了数据交互系统,包括:多个移动终端和服务端,移动终端之间的连接类型包括端到端直连和服务端中转;移动终端包括业务系统、与互联网和/或移动互联网通信连接的移动终端网络接口以及软件开发包;服务端包括:接入系统、登录系统、端到端能力管理系统、业务连接系统、中转系统、业务处理与缓存系统、消息队列、数据库以及与互联网和/或移动互联网通信连接的服务端网络接口。
在一些实施方式中,业务系统通过互联网和/或移动互联网与服务端的登录系统和端到端能力管理系统相连;移动终端通过业务系统向登录系统发送心跳包;移动终端通过业务系统向端到端能力管理系统发送心跳包,上报移动终端的端到端能力相关信息,移动终端端到端能力相关信息包括网络类型、IP地址和端口号。
在一些实施方式中,移动终端网络接口通过互联网和/或移动互联网与服务端网络接口连接;在一些实施方式中,软件开发包设置在手机内存中,软件开发包包括开发包和开发包资源,开发包包括编程接口;开发包资源包括图片和文本。
在一些实施方式中,接入系统管理各区域的情况,包括当前移动终端数量、闲置移动终端数量和连接移动终端数量,控制服务端与移动终端网络接口的数据交互。
在一些实施方式中,登录系统连接心跳包和消息实时推送服务,通过接收心跳包确定移动终端与服务端的连接状态,登录系统获取移动终端的信息,将该信息发送给业务处理与缓存系统。
在一些实施方式中,端到端能力管理系统接收和处理移动终端的心跳包,并将移动终端的端到端能力相关信息发送给业务处理与缓存系统;业务连接系统处理移动终端的连接业务,与移动终端的业务系统进行数据交互;中转系统处理移动终端之间的数据中转。
在一些实施方式中,业务处理与缓存系统处理移动终端的连接业务,存储移动终端端到端能力相关信息和连接信息;消息队列处理待写入数据库的业务.
在一些实施方式中,数据库负责存储移动终端的统计信息,包括移动终端信息和连接信息,移动终端信息包括移动终端账号信息和用于确认移动终端身份及特征的信息。
根据本发明的另一方面,提供一种数据交互方法,包括:移动终端访问服务端网络接口,服务端网络接口访问接入系统,接入系统返回区域标识、登录系统服务端IP地址、端到端能力管理系统服务器IP地址,移动终端在登录系统的服务端发起登录请求,登录系统通过区域标识访问相应业务处理与缓存系统,业务处理与缓存系统将移动终端信息存到缓存,登录系统保持与移动终端的连接,移动通信网络用户向端到端能力管理系统发送心跳包,端到端能力管理系统获取移动终端的端到端能力相关信息,并通知业务处理与缓存系统,业务处理与缓存系统保存移动终端的端到端能力相关信息,用于决定用户连接类型,根据端到端能力相关信息选择采用直接连接或服务端中转连接,完成数据交互。
本发明能有效地减少服务端的负载,提高游戏的速度和信息交互的实时性,达到更好的体验效果。
具体实施方式
下面结合附图及具体实施例,以实时对战游戏的应用为例,对本发明作进一步的详细说明。
如图1所示,本发明提供的数据交互系统,包括多个移动终端113和服务端100,本实施例中以移动终端A401与移动终端B402进行数据交互为例进行说明。移动终端113包括业务系统111、与互联网和/或移动互联网通信连接的移动终端网络接口110以及软件开发包112;服务端100包括接入系统108、登录系统104、端到端能力管理系统103、业务连接系统102、中转系统101、业务处理与缓存系统107、消息队列106、数据库105以及与互联网和/或移动互联网通信连接的服务端网络接口109。
业务系统111通过互联网和/或移动互联网与服务端100的登录系统104和端到端能力管理系统103相连。移动终端113通过业务系统111向登录系统104发送心跳包114,维持与服务端100的连接;移动终端113通过业务系统111向端到端能力管理系统103发送心跳包114,上报自己的端到端能力相关信息。端到端能力相关信息包括网络类型、IP地址、端口号。网络类型包括wifi网络和移动通信网络。移动通信网络包括3G、LTE、4G及其他可以与互联网和/或移动互联网连接的接入网络,移动终端113通过安装的软件开发包112可以实现不同网络中的移动终端113应用本发明进行数据交互。
心跳包114是在移动终端113和服务端100间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,用来判断移动终端113是否正常运行。即,采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断移动终端113不与服务端100进行数据通信。
移动终端网络接口110可以通过互联网和/或移动互联网与服务端网络接口109连接,实现移动终端113设备与服务端100的数据交互,通过服务端100为移动终端A401与移动终端B402之间实现实时对战数据交互提供服务。
软件开发包112设置在手机内存中,供手机游戏开发者植入到其所开发的游戏,软件开发包112上设置有跨智能终端操作系统的特性,向任意手机游戏提供连接到服务端100;软件开发包112包括编译成二进制代码的开发包和开发包资源,开发包具备向手机游戏公开的编程接口,供开发者使用在手机游戏的软件源代码中;开发包资源,包括在手机游戏的运行过程中开发包会使用到的图片、文本和资源文件,资源文件包括视频、音频等资料。软件开发包112为现有技术,应用本实施方式中无需调整或改进。
接入系统108用于控制移动终端113接入服务端100,存有各个业务处理与缓存系统107中移动终端113的状态,移动终端113状态包括当前移动终端113数量、闲置移动终端113数量和连接移动终端113数量,具体包括:业务处理与缓存系统107启动时会向接入系统108注册,上报自己所属的区域、当前移动终端113数量、闲置移动终端113数量和连接移动终端113数量。接入系统108会根据这些数据为移动终端113分配业务处理与缓存系统107。
登录系统104负责连接心跳包114和消息实时推送服务,通过接收心跳包114来确定移动终端113与服务端100是否有连接,如果在指定时间段内未收到对方响应,则判断对方已经离线、或未与服务端100连接。登录系统104获取移动终端113的信息,并将该信息发送给业务处理与缓存系统107。移动终端113的信息包括移动终端113账号信息和用于确认移动终端113身份及特征的信息;移动终端113账号信息包括移动终端113账号名、密码、真实姓名、性别、年龄、所在城市、职业、手机号码、邮件地址、签名档;用于确认移动终端113身份及特征的信息包括账号信息和身份特征信息;账号信息包括账号名、密码、签名;身份特征信息包括真实姓名、性别、年龄、所在城市、职业、手机号码、邮件地址、IP地址、端口号。
端到端能力管理系统103接收和处理移动终端113的心跳包114,通过接收移动终端113的心跳包114数据,获取移动终端113的端到端能力相关信息,并将该信息发送给业务处理与缓存系统107,确定移动终端113的网络类型及端到端能力。端到端能力指:移动终端113之间能够进行直接连接,不需要经过服务端中转数据。在3G等移动终端113中,运营商控制的网关出口,控制移动终端113能否实现直接连接,有些移动终端113是不能直接与其他移动终端113直接连接通信,即使是知道IP地址和端口号也无法直接连接。移动终端113的端到端能力相关信息包括网络类型、IP地址、端口号;网络类型包括wifi网络和移动通信网络。移动通信网络包括3G、LTE、4G及其他可以与互联网和/或移动互联网连接的接入网络。另外,端到端能力管理系统103还负责在移动终端113之间建立连接时,向移动终端113发送连接相关的信息。连接相关的信息包括连接标识、移动终端113标识、连接对端的IP地址及端口号。
进一步地,如果移动终端A401与移动终端B402采用直连的方式,端到端能力管理系统103会将连接标识、移动终端A401的标识、移动终端B402的标识发送给移动终端A401和移动终端B402,将移动终端A401的IP地址及端口号发送给移动终端B402,将移动终端B402的IP地址及端口号发送给移动终端A401;端到端能力管理系统103只是辅助两个终端建立连接,一旦连接建立成功,就不需要再与服务端100数据交互,移动终端113之间直接数据交互。如果移动终端A401与移动终端B402采用服务端中转的方式,端到端能力管理系统103会将连接标识、移动终端A401的标识、移动终端B402的标识发送给移动终端A401和移动终端B402,将中转系统101的IP地址及端口号发送给移动终端A401和移动终端B402。
业务连接系统102负责处理移动终端113的连接业务,与移动终端113的业务系统111进行数据交互,接受移动终端113提出的业务需求,当移动终端A401向服务端100发送数据包,请求连接服务端100实现游戏对战时,服务端100的业务连接系统102接收移动终端A401的请求。
中转系统101负责处理移动终端A401与移动终端B402之间的数据中转,服务端100分别与移动终端A401和移动终端B402建立连接,为移动终端A401和移动终端B402提供一个数据交换平台服务用于中转数据。中转系统101根据移动终端A401或者移动终端B402发送数据包中的IP地址和端口号来中转数据,把数据包发送到相应的移动终端113。
业务处理与缓存系统107负责处理移动终端113的连接业务。具体处理方式包括,根据从登录系统104接收的移动终端113信息和从端到端能力管理系统103接收的移动终端113的端到端能力相关信息判断移动终端113的端到端能力,并决定移动终端113之间的连接种类。
如图5所示,判断移动终端113是否具有端到端能力的方法为:移动终端113给登录系统104发送心跳包114,包含网络类型、IP地址1、端口号1;登录系统104把网络类型、IP地址1、端口号1发送给业务处理与缓存系统107;移动终端113给端到端能力管理系统103发送心跳包114,包含IP地址2、端口号2;端到端能力管理系统103把IP地址2、端口号2发送给业务处理与缓存系统107;业务处理与缓存系统107比较IP地址1、端口号1与IP地址2、端口号2是否相同,如果相同,就判断该移动终端113具备P2P能力;否则,不具备P2P能力。如果网络类型是wifi用户,在第2步,登录系统104把网络类型发给业务处理与缓存系统107之后,业务处理与缓存系统107看到是wifi用户,就直接判断该移动终端113具备P2P能力。
如果两个IP和端口相同,就说明运营商网关那边针对该移动终端113出去的所有包的IP和端口相同,另外一个移动终端113也可以根据该IP地址和端口号给该移动终端113发送数据,即具备端到端能力。如果两个IP和端口不同,就说明运营商网关那边针对该移动终端113出去的数据包,每次都会变换IP和端口,另外一个移动终端113不可以根据该IP地址和端口号给该移动终端113发送数据,即不具备端到端能力。
移动终端113之间的连接类型包括端到端直连和服务端中转两种类型。端到端直连指移动终端A401和移动终端B402之间建立直接连接,进行通信和数据传输;服务端中转指移动终端A401和移动终端B402之间通过服务端中转系统101建立间接连接,进行通信和数据传输。
如果连接类型为服务端中转,业务处理与缓存系统107需要为该连接分配一个中转系统101服务端100。业务处理与缓存系统107决定用户连接类型的方法包括:如果连接的两个移动终端113都具备端到端能力,则采用端到端直连,否则,采用服务端中转。服务端100的业务处理与缓存系统107的功能还包括缓存移动终端113相关的信息,包括移动终端113登录信息和连接信息,该信息将写入消息队列106。端到端能力判断方法:登录系统104发送IP地址和端口号给业务处理与缓存系统107;端到端能力管理系统103也会发送一个IP地址和端口号给业务处理与缓存系统107;如果这两个相同,就判断具有端到端能力。
业务处理与缓存系统107还存储移动终端113信息和连接信息,可以有多个,每个业务处理与缓存系统107属于一个区域,每个区域有一个区域标识,业务处理与缓存系统107存储挂靠在该区域的移动终端113连接数量。接入系统108管理各个区域,当移动终端113数量大时,服务器数量会有很多,不同服务器处理不同区域的业务。例如,广州一个服务器,深圳一个服务器,业务处理与缓存系统107启动时需要向接入系统108注册。
消息队列106负责处理待写入数据库105的业务,以免出现数据过多增加服务端100的负荷和压力,从而提高了数据交互的能力。消息队列106为现有技术,应用本发明中无需调整或改进。消息队列106是在数据的传输过程中保存数据的容器。消息队列106管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它
数据库105负责存储移动终端113的统计信息,包括移动终端113信息和连接信息。移动终端113信息包括移动终端113账号信息和用于确认移动终端113身份及特征的信息;移动终端113账号信息包括移动终端113账号名、密码、真实姓名、性别、年龄、所在城市、职业、手机号码、邮件地址、签名档;用于确认移动终端113身份及特征的信息包括账号信息和身份特征信息;账号信息包括账号名、密码、签名;身份特征信息包括真实姓名、性别、年龄、所在城市、职业、手机号码、邮件地址、IP地址、端口号;连接信息包括连接标识和连接的移动终端113标识、IP地址、端口号。
图2-4示出了根据本发明的另一方面的一种数据交互方法。包括:移动终端113登录服务端100流程,如图2所示,移动终端113通过移动终端网络接口110访问服务端网络接口109(步骤201),服务端网络接口109将该移动终端113登录信息发送到接入系统108(步骤202),接入系统108将一个随机分配的区域标识与相应登录系统104的服务端100IP地址、端到端能力管理系统103的服务端100IP地址发送给移动终端113(步骤203),移动终端113在登录系统104的服务端100上发起登录请求(步骤204),登录系统104通过区域标识访问相应的业务处理与缓存系统107(步骤205),将移动终端113信息发送给业务处理与缓存系统107(步骤206),业务处理与缓存系统107存储移动终端113的信息,该信息将写入消息队列106,登录系统104通过接收移动终端113发送的心跳包114,维持与移动终端113的连接(步骤207)。移动通信网络移动终端113给端到端能力管理系统103发送心跳包114,端到端能力管理系统103根据该心跳包114确定移动终端113的网络类型和能力(步骤208),并发送给业务处理与缓存系统107(步骤209),业务处理与缓存系统107存储移动终端113的网络类型和能力信息,并根据该信息确定移动终端113的连接类型(步骤210)。
移动终端A401与移动终端B402连接建立,如图3所示,移动终端A401给业务连接系统102发送实时对战连接请求,请求中包含区域标识,业务连接系统102随机匹配一个移动终端B402,与移动终端A401进行游戏对战数据交互(步骤301),所述随机匹配的方法包括:业务连接系统102在所有与移动终端A401同时发送实时对战连接请求的移动终端113中随机选择一个移动终端113,也可以根据移动终端A401的要求,选择一个移动终端113,例如选择同一个局域网的移动终端113(步骤302)。业务连接系统102通过区域标识访问相应的业务处理与缓存系统107(步骤303),业务处理与缓存系统107根据移动终端113网络类型与能力信息决定移动终端113连接种类,判断移动终端113连接类型(步骤304)。
业务处理与缓存系统107决定用户连接类型的方法包括:如果连接的两个移动终端113都具备端到端能力,则采用端到端直连,否则,采用服务端中转(步骤305)。服务端中转是对现有技术的修改,移动终端113在发送数据时带上对端的IP地址和端口号,服务端100不需要保存对端的IP地址和端口号,只需要根据移动终端113发送的数据提供的IP地址和端口号发送给对端手机,这样减少了服务器的负载和查询延时,提高了效率。
如果连接类型为端到端直连,业务处理与缓存系统107访问端到端能力管理系统103(步骤306),端到端能力管理系统103将连接标识、移动终端A401和移动终端B402的移动终端113标识发送给移动终端A401和移动终端B402,将移动终端A401的IP地址和端口号发送给移动终端B402,将移动终端B402的IP地址和端口号发送给移动终端A401(步骤307),移动终端A401和移动终端B402建立端到端直接连接(步骤308)。如果连接类型为服务端中转,业务处理与缓存系统107分配一个闲置的中转系统101服务端100(步骤309),请求该中转系统101服务端100按照连接标识建立连接缓存(步骤310),业务处理与缓存系统107访问端到端能力管理系统103(步骤311),端到端能力管理系统103将连接标识、移动终端A401和移动终端B402的标识发送给移动终端A401和移动终端B402,将中转系统101服务端100的IP地址和端口号发送给移动终端A401和移动终端B402(步骤312),移动终端A401和移动终端B402向中转系统101服务端100发送数据包(步骤313),中转系统101服务端100存入移动终端A401、B此时的IP地址和端口号(步骤314),中转系统101服务端100通知移动终端A401与移动终端B402连接成功。连接建立成功后,中转系统101服务端100不再保存移动终端A401、B的IP地址和端口号(步骤315)。
移动终端113之间采用服务端中转的方式发送数据的方法为:移动终端A401发送数据包给服务端中转系统101,数据包中包含移动终端B402的IP地址和端口号,中转系统101根据该IP地址和端口号发送数据包给移动终端B402。现有技术中,中转系统101会保存对端的IP地址和端口号,这里不会存,节省了IP查询时间。
移动终端113之间采用端到端直连的方式发送数据的方法为:移动终端A401发送数据包到移动终端113的IP地址和端口号。
移动终端A401和移动终端B402建立端到端直接连接,进行数据交互,如图4所示,流程A是由移动终端A401发起到移动终端B402的连接建立流程,包括移动终端A401给移动终端B402发送连接建立请求消息,移动终端B402给移动终端A401回复连接建立响应消息。流程B是由移动终端B402发起到移动终端A401的连接建立流程,包括移动终端B402给移动终端A401发送连接建立请求消息,移动终端A401给移动终端B402回复连接建立响应消息。由于移动终端A401与移动终端B402是对等方,连接的建立不存在时间上的先后关系,可以同时发生,也可以是流程A先于流程B,或者流程B先于流程A,具体发送时间由移动终端A401和移动终端B402自己决定。在流程A和流程B完成之后,连接建立成功,移动终端A401与移动终端B402开始数据交互,进行实时对战游戏。现有技术中移动终端113发送数据到服务端100,本发明的技术是知道对端手机的IP地址和端口号,直接发数据到对端的IP地址和端口号。端对端的交互操作接口和中转是一样的,都是发到对应的IP地址和端口号。