分发器和对多个服务器进行分发的方法

文档序号:7869121阅读:389来源:国知局
专利名称:分发器和对多个服务器进行分发的方法
技术领域
本发明涉及信息技术数据同步领域,具体涉及一种分发器和对多个服务器进行分发的方法。
背景技术
目前,随着网络技术的发展,互联网作为一个庞大的信息资源,成为人们获取信息的最方便、快捷的途径。目前,用户通常使用个人计算机接入英特网(Internet),并通过个人计算机中安装的浏览器(Browser)访问网页,获得需要的信息。随着移动通信技术的发展,用户还可以通过支持浏览器功能的移动终端接入英特网,例如手机、个人数字助理(Personal Digital Assistant,简称 PDA)。然而,无论是个人计算机上的浏览器还是移动终端上的浏览器,一般不提供推送 服务,服务器端与客户端的信息交互依赖于客户端发起的连接,服务器端无法主动地将信息发送给客户端,从而无法实现服务器端与浏览器客户端之间的信息的实时同步。现有技术中,最常用的实现浏览器客户端与服务器端浏览器数据同步的方式是浏览器客户端以一定频率向服务器端发送请求,如每周一次或每月一次,如果服务端有相关信息的更新则获取这些信息。然而,申请人发现该种数据同步方式存在如下技术缺陷效率比较低、占用资源多、不能做到内容的真正实时同步更新。在一种具体的实现方式中,浏览器客户端借助套接字服务器与服务器端进行数据同步,由此浏览器客户端需要与套接字服务器保持连接。然而针对特定浏览器客户端,向其分发或寻址对应的套接字服务器的过程还需要进一步优化。

发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的分发器和对多个服务器进行分发的方法。依据本发明的一个方面,提供了一种分发器,其包括接收单元、连接标识符生成单元和分发单元,其中所述接收单元,适于接收用户标识信息;所述连接标识符生成单元,适于根据所述用户标识信息生成全局唯一的连接标识符;所述分发单元,适于根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个;其中,所述用户标识信息包含于浏览器客户端向所述分发器发送的连接请求中,所述分发器还包括发送单元,适于将所分发的服务器标识和连接标识符发送给所述浏览器客户端。可选地,所述用户标识信息包括登录用户的用户名和/或非登录用户的机器硬件标识。
可选地,所述连接标识符为在一定数值范围内的一个特定的数值。可选地,所述连接标识符生成单元采用循环冗余校验算法。可选地,所述循环冗余校验算法为32位。可选地,所述分发单元进一步包括均分子单元、关联子单元和分配子单元,其中所述均分子单元,适于根据服务器的数目将连接标识符所在的数值范围平均分为多个数值区间;所述关联子单元,适于将每个服务器与所述多个数值区间中的一个相关联;所述分配子单元,适于根据所述连接标识符所在的数值区间,将所述连接标识符 指示的连接分配给与其数值区间相关联的服务器。可选地,当服务器的数目发生变化时,所述分发单元对服务器重新进行分配。 可选地,所述服务器为套接字服务器。根据本发明的另一方面,提供了一种对多个服务器进行分发的方法,该方法包括接收用户标识信息;根据所述用户标识信息生成全局唯一的连接标识符;根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个;云存储服务器端在有数据更新时向推送服务器下发条件信息和命令信息;所述推送服务器根据该条件信息在多个浏览器客户端中确定目标客户端,并将所述命令信息发送给与所述目标客户端对应的套接字服务器;所述套接字服务器与相应的浏览器客户端分别建立套接字连接,并将命令信息发送给目标客户端;所述目标客户端根据所述命令信息实现其与云存储服务器端的数据同步。可选地,所述用户标识信息包括登录用户的用户名和/或非登录用户的机器硬件标识。可选地,所述连接标识符为在一定数值范围内的一个特定的数值。可选地,采用循环冗余校验算法根据所述用户标识信息生成所述连接标识符。可选地,所述循环冗余校验算法为32位。可选地,所述根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个的步骤进一步包括以下子步骤根据服务器的数目将连接标识符所在的数值范围平均分为多个数值区间;将每个服务器与所述多个数值区间中的一个相关联;根据所述连接标识符所在的数值区间,将所述连接标识符指示的连接分配给与其数值区间相关联的服务器。可选地,当服务器的数目发生变化时,对服务器重新进行分配。可选地,所述服务器为套接字服务器。可选地,所述方法还包括浏览器客户端向分发器发送包含有所述用户标识信息的连接请求的步骤,以及在对服务器进行分发之后,还包括所述分发器将所分发的服务器标识和连接标识符发送给所述浏览器客户端的步骤。
可选地,所述方法还包括云存储服务器端向推送服务器发送包含有所述用户标识信息的条件信息的步骤,以及在对服务器进行分发之后,还包括所述推送服务器将与所述条件信息对应的命令信息和连接标识符发送给所分发的服务器的步骤。根据本发明的一种分发器和对多个服务器进行分发的方法可以在浏览器实时同步中对服务器进行自动分发,由此解决了现有技术不能保证每台服务器承载长连接的数量大致相同,即不能实现服务器的负载平衡的问题,取得了服务器的负载平衡、分发结果具有唯一性,可重复性、系统增减服务器时具有高适配性的有益效果。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式



通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了根据本发明一个实施例的实现浏览器数据同步的系统的结构示意图;图2示出了根据本发明一个实施例的实现浏览器数据同步的系统的结构示意图;图3为图2所示实现浏览器数据同步的系统中浏览器客户端与套接字服务器建立连接的过程的示意图;图4为图2所示实现浏览器数据同步的系统中在第一类场景下向目标客户端进行信息推送的过程的示意图;图5为图2所示实现浏览器数据同步的系统中在第二类场景下向目标客户端进行信息推送的过程的示意图;图6为图2所示实现浏览器数据同步的系统中在第三类场景下向目标客户端进行信息推送的过程的示意图;图7为根据本发明实施例的实现浏览器数据同步的方法的流程图;图8为根据本发明实施例的实现浏览器数据同步的浏览器客户端的结构示意图;图9为根据本发明实施例的对服务器进行分发的装置结构图;图10为根据本发明实施例的对服务器进行分发的方法流程图;以及图11为本发明服务器分发原理图。
具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。在本发明的一个示例性实施例中,提供了一种实现浏览器数据同步的系统。如图1所示,该实现浏览器数据同步的系统包括云存储服务器端1、推送服务器2和多个浏览器客户端3、4。其中,云存储服务器端1,用于在有数据更新时向推送服务器下发条件信息和命令信息;推送服务器2,用于根据条件信息在多个浏览器客户端中确定目标客户端,并将该命令信息推送至目标客户端3 ;目标客户端3,用于根据该命令信息实现目标客户端与云存储服务器端的数据同步。在图1所示的实施例中,通过设置单独的推送服务器2,在云存储服务器端存储的数据内容发生更新的情况下,及时地将命令信息通过推送服务器发送至目标客户端,从而简单、高效地实现了服务端信息与客户端实时同步。如图1所示,多个浏览器客户端中包含有发起客户端4和目标客户端3。其中,发起客户端4,用于对存储于云存储服务器端I中的数据进行更新。该发起客户端4和目标客户端3可以属于同一个用户,也可以属于不同的用户。该发起客户端4和目标客户端3属于同一个用户的情况主要的应用场景在于同一用户使用不同的设备(例如手机和PC)登 录浏览器,其中一个(例如PC)更改收藏夹,那么需要将该更新同步到同一用户的另一设备(手机)。该发起客户端4和目标客户端3不属于同一个用户的情况的应用场景例如是不同浏览器客户端之间的信息通信。当然,本发明也可以由云存储服务器端自身发起对数据内容的更新,在这种情况下,图1中的发起浏览器客户端4则可以不存在。这种情况的场景例如是系统向所有浏览器客户端推送新闻消息或天气预报;或系统向所有某版本的浏览器客户端发起更新指示。由于图1中虚线框以内的云存储服务器端1、目标客户端3和发起客户端4是现有浏览器系统中已有的,因此在此基础上添加推送服务器可以有效地利用原有的系统架构,降低实现本发明的成本。为了实现云存储服务器端1、推送服务器2和目标客户端3的连接,如图2所示,实现浏览器客户端与云存储服务器端数据同步的系统还可以包括多个套接字服务器、分发器。分发器,用于在接收到客户端的连接请求后,为其分配相应的套接字服务器以及连接标识符,并将用户标识信息以及连接标识符存储至分发信息数据库。详细的连接建立过程如图3所示,包括步骤S301,浏览器客户端向分发器提交连接请求,该连接请求中至少包括用户标识信息,对于登录用户来讲,其用户标识信息可以包括用户名,而对于非登录用户来讲,其用户标识信息可以包括用户的机器硬件标识。对于登录用户来讲,该用户标识信息可以为一字符串。其中,该字符串除了登录用户的用户名之外,还包括登录时间和验证字符等信息。用户名为用户唯一标识号,即一个数字,用于代表一个用户。验证字符根据用户名生成,即可通过验证字符判定用户标识信息是否被更改。对于非登录用户来讲,该用户标识信息可以包括非登录用户的机器硬件标识,其中机器硬件标识为机器唯一标识,为客户端通过用户机器硬件、系统配置等哈希生成。此外,为了后续的目标客户端筛选,该连接请求还可以包括用户特征信息,例如IP地址信息、浏览器版本信息,或用户分类信息等用户特征信息。其中,浏览器版本号、用户分类信息,或IP地址信息等用户特征信息可以用于后续的客户端筛选使用。步骤S302,分发器基于该用户标识信息使用预设算法进行计算得到一个数值,根据该数值为提交连接请求的浏览器客户端分配套接字服务器;该数值是全局唯一的,即连接标识符;分发器将该套接字服务器的IP地址、端口等连接信息及连接标识符发送至提交请求的浏览器客户端;本步骤中,使用预设的算法根据登录用户的用户名计算上述数值。对于非登录用户来讲,直接采用非登录用户的机器硬件标识计算上述数值,该算法可以为循环冗余校验(CRC) 32 算法。步骤S303,浏览器客户端根据接收到的套接字服务器的IP地址和端口号与对应的套接字服务器建立连接,该连接可以是传输控制协议TCP (Transmission ControlProtocol)连接。在浏览器客户端与套接字服务器建立连接时,该套接字服务器得到标识该套接字服务器和浏览器客户端连接关系的资源标识符。浏览器客户端利用已经建立的连接向该套接字服务器传送其接收到的连接标识符。步骤S304,套接字服务器接收到连接标识符后,向分发器对该连接标识符进行验证,若验证成功,则保持与浏览器客户端之间建立的连接,若验证不成功,则断开已经建立的连接。 步骤S305,分发器将用户标识信息(登录用户的用户名或非登录用户的机器硬件标识)、用户特征信息(如果有的话)以及连接标识符存储在分发信息数据库中,并且套接字服务器也将所得到的资源标识符存储在该分发信息数据库中。需要说明的是,为了防止服务器端变化引起的分配混乱,浏览器客户端需要在隔一段时间后重新执行步骤S301-步骤S304进行连接。此外,对于每一个套接字服务器,在分发信息数据库中均存在对应的单独数据表,以减小数据表的规模,加快在后续信息推送阶段,套接字服务器的查询速度。通过增加分发器和套接字服务器,并且在分发器中设置分发信息数据库,使得能够在建立连接阶段将用户标识信息、资源标识符和用户特征信息等存储于分发信息数据库中,从而实现了推送服务器对预设目标客户端的数据内容的推送。在信息推送阶段推送服务器,用于将条件信息和命令信息发送至套接字服务器;套接字服务器,用于将推送服务器推送的信息转发至相应的目标客户端。详细的信息推送过程以下分三类场景进行详细说明。(I)当该实时同步由发起客户端发起,且发起客户端和接收客户端属于同一用户时,条件信息中包括用户标识信息。举例来讲,如图4所示,该信息推送过程包括步骤S401,发起客户端发起对存储在云存储服务器端存储的数据进行更新;本步骤中,云存储服务器端存储的数据包括以下之一收藏夹信息、历史记录信息、浏览器配置信息、便签信息、登录管家信息、消息提醒信息、密钥信息等等其他可能的信肩、O步骤S402,云存储服务器端向推送服务器发送条件信息和命令信息,该条件信息包括用户标识信息,例如登录用户的用户名或未登录用户的机器硬件标识,并且该条件信息中还包括标识该发起客户端与其对应的套接字服务器的连接的资源标识符;步骤S403,推送服务器由与分发器中同样的算法根据用户标识信息计算得到一个数值,从而得到为目标客户端分配的套接字服务器,该数值是全局唯一的,即连接标识符,并将条件信息及命令信息发送给该为目标客户端分配的套接字服务器;步骤S404,套接字服务器根据条件信息中的用户标识信息查询分发器中的分发信息数据库,确定与目标客户端对应的资源标识符,其中排除了标识发起客户端与其对应的套接字服务器的连接的资源标识符;步骤S405,套接字服务器根据该资源标识符在与该目标客户端(一个或多个)的连接中向该客户端发送该命令信息。(2)当该实时同步由发起客户端发起,且发起客户端和接收客户端属于不同登录用户时,即条件信息中包括用户标识信息,如图5所示,该信息推送过程包括步骤S501,发起客户端发起对存储在云存储服务器端存储的数据进行更新;本步骤中,云存储服务器端存储的数据包括以下之一收藏夹信息、历史记录信息、浏览器配置信息、便签信息、登录管家信息、消息提醒信息、密钥信息、新闻信息和/或用户生成的信息等等。
步骤S502,云存储服务器端向推送服务器发送条件信息和命令信息,其中该条件信息可以包括用户标识信息,例如登录用户的用户名或未登录用户的机器硬件标识;步骤S503,推送服务器由与分发器中同样的算法根据用户标识信息计算得到一个数值,从而得到为目标客户端分配的套接字服务器,该数值是全局唯一的,即连接标识符,并将条件信息及命令信息发送给该为目标客户端分配的套接字服务器;步骤S504,套接字服务器根据条件信息中的用户标识信息查询分发器中的分发信息数据库,确定目标客户端的资源标识符;步骤S505,对应的套接字服务器依据该资源标识符,在与目标客户端(一个或多个)的连接中向该客户端发送该通知消息,至此,信息推送过程结束。(3)当该实时同步由云存储服务器端主动发起,且条件信息中包括目标客户端的特征筛选信息,而不包括用户标识信息,其中特征筛选信息也可以为空,这种情况下,在连接建立阶段,由浏览器客户端向分发器提交连接请求中还包含特征筛选信息,其与如前的在分发信息数据库中保存的用户特征信息相对应。如图6所示,该信息推送过程包括步骤S601,云存储服务器端向推送服务器下发条件信息和命令信息中,条件信息中包含目标客户端的特征筛选信息(例如某浏览器的版本号),该命令信息例如是通知用户升级的指令;步骤S602,推送服务器将条件信息和命令信息推送给所有的套接字服务器;步骤S603,各个套接字服务器分别向分发器的分发信息数据库递交查询请求,该查询请求中包含特征筛选信息;分发信息数据库根据特征筛选条件查询分发信息数据库中各个浏览器客户端的用户特征信息,确定满足该特征筛选条件的目标客户端的资源标识符,并将该资源标识符返回至发起查询的各套接字服务器;步骤S604,各套接字服务器根据接收到的资源标识符向相应的客户端发送命令信息,至此,信息推送过程结束。为了进一步节约系统资源,由推送服务器2推送至浏览器客户端3的命令信息为通知消息。在这种情况下,浏览器客户端,还用于在接收到推送服务器推送的通知消息后,与云存储服务器端建立连接,从云存储服务器端下载发生更新的数据内容,依照下载的数据内容进行本地数据内容的同步。通过传送通知消息可以减少传送数据量,减少系统资源占用。
当然,由推送服务器推送至目标客户端的命令信息也可以为内容消息,即该内容消息中包含发生更新的数据内容,在这种情况下,目标客户端在接收到推送服务器推送的内容消息后,从该内容消息中提取发生更新的数据内容,依照提取的数据内容进行本地数据内容的同步。通过传送内容消息可以直接将内容消息推送至客户端,信息传递快速,步骤简单。为了实现对多语言的支持、方便地调用文本,推送服务器和云存储服务器端之间采用HTTP接口。基于图1及图2所示的实现浏览器数据同步的系统,本发明又提供了一种实现浏览器数据同步的方法。如图7所示,该实现浏览器数据同步的方法包括
步骤S710,云存储服务器端在有数据更新时向推送服务器下发条件信息和命令信息;步骤S720,推送服务器根据该条件信息在多个浏览器客户端中确定目标客户端,并将该命令信息发送给目标客户端;步骤S730,目标客户端根据命令信息实现其与云存储服务器端的数据同步。进一步地,步骤S710之前还包括浏览器客户端与套接字服务器之间建立套接字连接,该连接的建立过程如图3所示,这里就不再赘述。进一步地,步骤S710云存储服务器端在有数据更新时向推送服务器下发条件信息和命令信息的步骤中,如果条件信息中包含目标客户端的登录用户用户名或未登录用户的机器硬件标识,包括以下两种情况情况一发起客户端和接收客户端属于同一用户,该用户使用不同的设备(例如手机和PC)登录浏览器,其中一个(例如PC)更改收藏夹,那么需要将该更新同步到同一用户的另一设备(手机);该情况下,发起客户端首先发起对存储在云存储服务器端中的有关配置、功能、或收藏的信息或其他的信息的修改。然后云存储服务器端向推送服务器发送条件信息和命令信息,该命令信息包括内容消息和通知消息,推送服务器通过套接字服务器将根据条件信息将该命令信息发送到目标客户端,其中该目标客户端排除了发起客户端。该种情况下的信息推送过程如图4所示,这里也不再赘述。情况二 发起客户端和接收客户端不属于同一用户,从而实现不同用户之间通过客户端的信息交互。具体来说,一个用户的客户端将条件信息和内容消息发送至云存储服务器端,云存储服务器端将条件信息和相关通知消息其发送至推送器,推送器根据条件信息将通知消息发送至目的客户端,进而目的客户端可以访问云存储服务器端以获取内容。在这种情况下的信息推送过程如图5所示,这里也不再赘述。此外,如果条件信息中不包含目标客户端的用户标识信息,而可以包括特征筛选信息,则还包括以下情况情况三云存储服务器端自身有数据更新,需要浏览器客户端与云存储服务器端进行数据同步,云存储服务器端主动向推送服务器下发条件信息和命令信息,例如1、云存储服务器端向某版本的所有浏览器客户端发起更新指示,以使该版本的所有浏览器客户端升级为新版本,其中,命令信息为升级为新版本的通知消息,条件为某版本浏览器的客户端,即其中的特征筛选信息为浏览器客户端的版本号。则推送服务器根据该条件信息将该命令信息发送给多个浏览器客户端中的目标客户端包括推送服务器将升级为新版本的通知消息发送给某版本的所有浏览器客户端。2、云存储服务器端向所有浏览器客户端推送新闻消息,其中条件为所有浏览器客户端,即特征筛选信息为空,命令信息为包含新闻消息的内容消息;则推送服务器根据该条件信息将该命令信息发送给多个浏览器客户端中的目标客户端包括推送服务器将包含新闻消息的内容消息发送给所有浏览器客户端。应该理解,发送的也可以是通知消息。3、云存储服务器端向不同地区的浏览器客户端推送天气预报,其中条件为某一地区的浏览器客户端,即特征筛选信息为该某一地区对应的IP段,命令信息为包含天气预报的内容消息;则推送服务器根据该条件信息将该命令信息发送给多个浏览器客户端中的目标客户端包括推送服务器将包含天气预报的内容消息发送给某一地区的浏览器客户端。应该理解,发送的也可以是通知消息。
在这种情况下的信息推送过程如图6所示,这里也不再赘述。基于图1及图2所示的实现浏览器数据同步的系统,本发明又提供了一种实现浏览器数据同步的浏览器客户端。如图8所示,该浏览器客户端包括连接模块,用于通过分发器与套接字服务器建立连接关系,并从相应的套接字服务器接收命令信息;应用模块,用于根据该命令信息,执行其对应的应用操作。其中,所述命令信息为通知消息或内容消息。如图8所示,连接模块又包括分发器连接子模块,用于向所述分发器提交连接请求,该连接请求中至少包括用户标识信息,并接收由分发器返回的被分配的套接字服务器的连接信息及连接标识符;套接字连接子模块,用于根据接收到的套接字服务器的连接信息及所述连接标识符与对应的套接字服务器建立套接字连接,并通过该套接字连接从相应的套接字服务器接收命令信息。其中,所述用户标识信息为登录用户的用户名或非登录用户的机器硬件标识。如图8所示,上述浏览器客户端中还可以包括云存储通信模块,用于响应应用模块的应用操作,与云存储服务器端进行通信。在上文描述的浏览器数据同步系统中,在进行套接字服务器分发时需要满足以下条件1、在一定程度上实现负载均衡,即实现每台套接字服务器承载长连接的数量大致相同;2、分发结果具有唯一性,可重复性;即分发器根据登录用户的用户名和/或非登录用户的机器硬件标识将请求分配于某一套接字服务器,而推送器可以根据登录用户的用户名和/或非登录用户的机器硬件标识定位出目前的连接是连接于哪个套接字服务器;3、当系统增减套接字服务器时,套接字服务器的分发应具有适配性,即当系统增减套接字服务器的数量时,应可以通过简单的改变就能完成请求的重新分配。为了满足上述分发条件,本发明进一步提出了一种对服务器进行分发的装置。该装置可以存在于上述的分发器和推送器以及任何其他需要对服务器进行分发的设备和系统中。如图9所示,该装置包括,接收单元910、连接标识符生成单元920和分发单元930,其中
所述接收单元910,适于接收用户标识信息;所述连接标识符生成单元920,适于根据所述用户标识信息生成全局唯一的连接标识符;所述分发单元930,适于根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个。其中,所述用户标识信息包括登录用户的用户名和/或非登录用户的机器硬件标识;所述连接标识符用于识别每个客户端的连接,其为在一定数值范围内的一个特定的数值。其中,所述连接标识符生成单元920采用循环冗余校验算法,比如32位的循环冗余校验算法。在本发明的一实施例中,所述分发单元930进一步包括均分子单元、关联子单元 和分配子单元,其中所述均分子单元,适于根据服务器的数目将连接标识符所在的数值范围平均分为多个数值区间;所述关联子单元,适于将每个服务器与所述多个数值区间中的一个相关联;所述分配子单元,适于根据所述连接标识符所在的数值区间,将所述连接标识符分配给与其数值区间相关联的服务器。当服务器的数目发生变化时,所述分发单元930能够对服务器重新进行分配。可选地,所述服务器为套接字服务器。本发明还提供一种分发器,包含上述对多个服务器进行分发的装置。其中,所述用户标识信息包含于浏览器客户端向所述分发器发送的连接请求中,所述分发器还包括发送单元,适于将所分发的服务器标识和连接标识符发送给所述浏览器客户端。本发明还提供一种推送服务器,包含上述对多个服务器进行分发的装置。其中,所述用户标识信息包含于云存储服务器端向所述推送服务器发送的条件信息中,所述推送服务器还包括发送单元,适于将与所述条件信息对应的命令信息和连接标识符发送给所分发的服务器。本发明还提供一种分发系统,包含上述对多个服务器进行分发的装置。所述系统用于实现浏览器数据同步,其包括云存储服务器端、推送服务器、套接字服务器、多个浏览器客户端和分发器,其中所述云存储服务器端,用于在有数据更新时向所述推送服务器下发条件信息和命令信息;所述推送服务器,用于根据该条件信息在所述多个浏览器客户端中确定目标客户端,并将所述命令信息发送给与所述目标客户端对应的套接字服务器;所述套接字服务器,用于与相应的浏览器客户端分别建立套接字连接,并将命令信息发送给目标客户端;以及所述目标客户端,用于根据所述命令信息实现其与云存储服务器端的数据同步;分发器,用于向浏览器客户端分发与其建立套接字连接的套接字服务器;其中,所述推送服务器和所述分发器中包含上述对多个服务器进行分发的装置。
本发明还提供一种浏览器实时同步中对多个服务器进行分发的方法,如图10所示,该方法包括以下步骤步骤S1010,接收用户标识信息;步骤S1020,根据所述用户标识信息生成全局唯一的连接标识符;步骤S1030,根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个。其中,所述用户标识信息包括登录用户的用户名和/或非登录用户的机器硬件标识;所述连接标识符为在一定数值范围内的一个特定的数值。其中,在所述步骤S1020中,可以采用循环冗余校验算法,比如32位循环冗余校验(CRC32)算法,根据所述用户标识信息生成全局唯一的连接标识符。所述CRC32算法是一种 一致性哈希算法,依据这种一致性哈希算法能够实现一种较为动态、均衡且可寻址的服务器分发方式。在本发明的一个实施例中,根据CRC32算法,可以将登录用户的用户名和/或非登录用户的机器硬件标识均衡、稳定唯一地转换为一个0-232-1范围中的特定数值。在本发明的一实施例中,所述根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个的步骤进一步包括以下子步骤根据服务器的数目将连接标识符所在的数值范围平均分为多个数值区间;将每个服务器与所述多个数值区间中的一个相关联;根据所述连接标识符所在的数值区间,将所述连接标识符分配给与其数值区间相关联的服务器。其中,所述服务器为套接字服务器。在本发明的另一实施例中,所述方法还包括浏览器客户端首先向分发器发送包含有所述用户标识信息的连接请求的步骤,以及在对服务器进行分发之后,还包括所述分发器将所分发的服务器标识和连接标识符发送给所述浏览器客户端的步骤。在本发明的另一实施例中,所述方法还包括云存储服务器端首先向推送服务器发送包含有所述用户标识信息的条件信息的步骤,以及在对服务器进行分发之后,还包括所述推送服务器将与所述条件信息对应的命令信息和连接标识符发送给所分发的服务器的步骤。在本发明的另一实施例中,所述方法还包括以下步骤云存储服务器端在有数据更新时向推送服务器下发条件信息和命令信息;所述推送服务器根据该条件信息在多个浏览器客户端中确定目标客户端,并将所述命令信息发送给与所述目标客户端对应的套接字服务器;所述套接字服务器与相应的浏览器客户端分别建立套接字连接,并将命令信息发送给目标客户端;所述目标客户端根据所述命令信息实现其与云存储服务器端的数据同步。上述分发策略可以通过图11所示的服务器分发原理图得到更好的理解,如图11所示,各个连接标识符被哈希成一个0-232-1范围中的特定数值,并分布在如图中所示的圆环上。该圆环的起点为0,终点为232-1。当服务器的数目为三时,将连接标识符所在的数值范围平均分为三个数值区间,并为这三台服务器分别赋一个值,例如如果将第一台服务器赋值为0和232-1,第二台服务器则赋值为(232-1)/3,第三台服务器则赋值为2*(232-1)/3。根据所述连接标识符的特定数值所落入的数值区间,将其分配给特定的服务器来处理。例如落入O至(232-1)/3之间的数值可以分配给第一服务器,落入(232-1) /3至2* (232-1) /3之间的数值可以分配给第二服务器,落入2*(232-1)/3至232-1之间的数值可以分配给第三服务器。另外,当服务器的数目发生变化时,按照所述子步骤对服务器重新进行分配。比如,当服务器调整为4台时,可以将该4台服务器分别赋值为0和232_1、(232-1)/4、(232-1)/2、3*(232-1)/4。那么,落入0至(232_1)/4之间的数值可以分配给第一服务器,落入(232-1)/4至(232-1)/2之间的数值可以分配给第二服务器,落入(232-1)/2至3* (232-1) /4之间的数值可以分配给第三服务器,落入3* (232-1) /4至232-1之间的数值可以分配给第四服务器。
上述对服务器进行分发的方法能够应用于上文介绍的浏览器实时同步系统中以及其他需要对服务器进行分发的系统中。综上,本发明实现了动态、均衡且可寻址的服务器分发。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式
的权利要求书由此明确地并入该具体实施方式
,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的相关设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件 项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
权利要求
1.一种分发器,包括接收单元、连接标识符生成单元和分发单元,其中 所述接收单元,适于接收用户标识信息; 所述连接标识符生成单元,适于根据所述用户标识信息生成全局唯一的连接标识符;所述分发单元,适于根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个; 其中,所述用户标识信息包含于浏览器客户端向所述分发器发送的连接请求中,所述分发器还包括发送单元,适于将所分发的服务器标识和连接标识符发送给所述浏览器客户端。
2.如权利要求1所述的分发器,其中,所述用户标识信息包括登录用户的用户名和/或非登录用户的机器硬件标识。
3.如权利要求1所述的分发器,其中,所述连接标识符为在一定数值范围内的一个特定的数值。
4.如权利要求1所述的分发器,其中,所述连接标识符生成单元采用循环冗余校验算法。
5.如权利要求4所述的分发器,其中,所述循环冗余校验算法为32位。
6.如权利要求1所述的分发器,其中,所述分发单元进一步包括均分子单元、关联子单元和分配子单元,其中 所述均分子单元,适于根据服务器的数目将连接标识符所在的数值范围平均分为多个数值区间; 所述关联子单元,适于将每个服务器与所述多个数值区间中的一个相关联; 所述分配子单元,适于根据所述连接标识符所在的数值区间,将所述连接标识符指示的连接分配给与其数值区间相关联的服务器。
7.如权利要求1所述的分发器,其中,当服务器的数目发生变化时,所述分发单元对服务器重新进行分配。
8.如权利要求1所述的分发器,其中,所述服务器为套接字服务器。
9.一种对多个服务器进行分发的方法,该方法包括 接收用户标识信息; 根据所述用户标识信息生成全局唯一的连接标识符; 根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个; 云存储服务器端在有数据更新时向推送服务器下发条件信息和命令信息; 所述推送服务器根据该条件信息在多个浏览器客户端中确定目标客户端,并将所述命令信息发送给与所述目标客户端对应的套接字服务器; 所述套接字服务器与相应的浏览器客户端分别建立套接字连接,并将命令信息发送给目标客户端; 所述目标客户端根据所述命令信息实现其与云存储服务器端的数据同步。
10.如权利要求9所述的方法,其中,所述用户标识信息包括登录用户的用户名和/或非登录用户的机器硬件标识。
11.如权利要求9所述的方法,其中,所述连接标识符为在一定数值范围内的一个特定的数值。
12.如权利要求9所述的方法,其中,采用循环冗余校验算法根据所述用户标识信息生成所述连接标识符。
13.如权利要求12所述的方法,其中,所述循环冗余校验算法为32位。
14.如权利要求9所述的方法,其中,所述根据连接标识符以及服务器的数目,将所述连接标识符指示的连接分发给所述多个服务器中的一个的步骤进一步包括以下子步骤 根据服务器的数目将连接标识符所在的数值范围平均分为多个数值区间; 将每个服务器与所述多个数值区间中的一个相关联; 根据所述连接标识符所在的数值区间,将所述连接标识符指示的连接分配给与其数值区间相关联的服务器。
15.如权利要求14所述的方法,其中,当服务器的数目发生变化时,对服务器重新进行分配。
16.如权利要求9所述的方法,其中,所述服务器为套接字服务器。
17.如权利要求9-16中任一项所述的方法,其中,所述方法还包括浏览器客户端向分发器发送包含有所述用户标识信息的连接请求的步骤,以及在对服务器进行分发之后,还包 括所述分发器将所分发的服务器标识和连接标识符发送给所述浏览器客户端的步骤。
18.如权利要求9-16中任一项所述的方法,其中,所述方法还包括云存储服务器端向推送服务器发送包含有所述用户标识信息的条件信息的步骤,以及在对服务器进行分发之后,还包括所述推送服务器将与所述条件信息对应的命令信息和连接标识符发送给所分发的服务器的步骤。
全文摘要
本发明公开了一种分发器和对多个服务器进行分发的方法。该方法包括接收用户标识信息;根据用户标识信息生成全局唯一的连接标识符;根据连接标识符以及服务器的数目,将连接标识符指示的连接分发给多个服务器中的一个;云存储服务器端在有数据更新时向推送服务器下发条件信息和命令信息;推送服务器根据该条件信息在多个浏览器客户端中确定目标客户端,并将命令信息发送给与目标客户端对应的套接字服务器;套接字服务器与相应的浏览器客户端分别建立套接字连接,并将命令信息发送给目标客户端;目标客户端根据所述命令信息实现其与云存储服务器端的数据同步。本发明能够实现服务器的负载平衡,使得系统在增减服务器时具有高适配性。
文档编号H04L29/08GK103024050SQ20121054937
公开日2013年4月3日 申请日期2012年12月17日 优先权日2012年12月17日
发明者吴浩, 任寰 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1