CN107580012A - 分布式HSvr - Google Patents
分布式HSvr Download PDFInfo
- Publication number
- CN107580012A CN107580012A CN201610529329.6A CN201610529329A CN107580012A CN 107580012 A CN107580012 A CN 107580012A CN 201610529329 A CN201610529329 A CN 201610529329A CN 107580012 A CN107580012 A CN 107580012A
- Authority
- CN
- China
- Prior art keywords
- message
- asvr
- user
- udsvr
- accoaddr
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种HSvr,通过将用户数据层(各个UDSvr)和用户接入层(各个ASvr)进行分离,并为分离出来的各个LSvr指配RCode,使得各个LSvr间可以基于所指配的RCode进行消息交互。有助于接入层资源共享,提高了HSvr部署的灵活性,使得能够基于常住地因素进行HSvr规划,能够帮助提高离线消息处理效率,以及有助于提高用户云端数据访问效率。本发明还公开离线消息发送方法,在线消息发送方法,离线消息处理方法,在线消息处理方法,以及消息发送方法,消息分流方法,登入方法。
Description
技术领域
本发明涉及互联网通信,更确切地说涉及在互联网中一种分布式HSvr,相关消息发送、消息处理、消息分流方法,以及登入方法。
背景技术
在互联网通信中,当归属于一个归属服务器(HSvr,Home Server)的用户(IUsr,Internet User)数量足够多时(例如,腾讯的QQ用户数量达到7亿),或者这些用户分布于一个很大的地域范围时,为了提高服务质量,一般地,可以设置多个子服务器,来分别对相应的用户提供服务。
选择何种策略来将一个HSvr中的用户分布到各个子服务器中,将直接影响到整个HSvr系统的效率,并最终反映到用户的体验和互联网服务提供商(ISP,Internet ServiceProvider)的运营成本上。
例如,所述HSvr包括若干子服务器。根据GUID(全球统一身份,Global UnifiedIdentity)的UCode(用户码,User Code),按照一定的映射关系,将归属于该HSvr的所有IUsr的账户信息分别存放到不同的子服务器中,并按照该映射关系来寻址这些账户。参见申请号为02146090.6的《一种通过数据信息关键域存储和读取数据信息的方法》发明专利。
所述GUID可以是一个email地址,也可以是一个主从码,也可以是一个影码。关于GUID和HSvr更多描述,参见申请号为201310037232.X的《通信方法和系统》发明专利,以及申请号为201310049772.X的《影码寻址方法》发明专利。
通常情况下,同城信息交互量要大于异地信息交互量,因此,按照{按照位置因素将同城用户聚集在一起}这种策略来将一个HSvr中的海量用户映射到各个子服务器中,可以减少各个子服务器之间的信息交互量,从而使得整个HSvr系统具有更高的运行效率。
但是,以GUID是一个email地址为例,由于email地址通常不包括位置因素,因此,当位于同一个城市的两个用户被映射到不同城市的子服务器时,这两个同城用户在交互信息时,就需要跨城市进行。
例如,两个网易163邮箱用户:UsrA和UsrB,是同城用户,按照网易设置的映射关系,UsrA被映射到网易北京的子服务器中,UsrB被映射到网易广州的子服务器中。对于腾讯qq用户:UsrC来说,按照腾讯设置的映射关系,UsrC被映射到腾讯上海的子服务器中。
在UsrA向UsrB发送信息时,网易北京的子服务器可以根据设置的映射关系,确定UsrB所在的子服务器处于广州,从而将相应的消息发送给网易广州的子服务器,由网易广州的子服务器将该消息发送给UsrB。
特别地,在UsrC给UsrB发送消息时,如果腾讯上海的子服务器在不知道网易的映射关系,就无法确定UsrB在网易的哪个子服务器中,这时,腾讯上海的子服务器可能会按照就近接入方式,将消息发送给网易南京的子服务器。网易南京的子服务器收到该消息后,根据网易的映射关系,确定UsrB在网易广州的子服务器中,将该消息发送给网易广州的子服务器,而后再由网易广州的子服务器将该消息发送给UsrB。这样,消息传送效率更为低下。
如果为了减少上述消息迂回而让腾讯上海的子服务器保存网易的映射关系数据,则会导致腾讯上海的子服务器维护庞大的映射关系数据,因为,同样原因,腾讯上海的子服务器可能还要维护其它ISP的映射关系数据。
移动通信领域,在手机号码里编码了位置因素,例如,目前中国手机的11位号码13316882008中,第4到7位的四位数字1688就决定了手机用户的归属位置。这种做法,充分保障了全球数十亿手机用户通信的高效率。
但是,将位置因素编码到用户的账号中,有严重缺陷。例如,张三在北京读书,办理的手机号码A属于北京。大学毕业后,到深圳工作。这种情况下,张三就需要在深圳本地办理新的手机号码,否则,他深圳的同事李四在呼叫他时,网络总是要千里迢迢地去访问北京的HLR(Home Location Register,归属位置寄存器)设备。
同样,由于UsrB被映射关系映射到网易广州的子服务器中,即使UsrB对应的用户长期居住北京,在UsrB每次登录自己的账户时,还只能远程访问网易广州的子服务器。针对所述远程访问,可以在网易广州的子服务器中登记UsrB的漫游子服务器。这样,UsrB在北京时,可以在网易广州的子服务器中登记UsrB当前漫游的子服务器,即网易北京的子服务器,并将UsrB的账户信息保存到网易北京的子服务器中。这样,UsrB在北京登入自己的账户时,就可以直接登入网易北京的子服务器。
在支持UsrB漫游到北京的情况下,在UsrA给UsrB发送消息时,网易北京的子服务器先根据设置的映射关系,将该消息发送到网易广州的子服务器,网易广州的子服务器判断UsrB漫游到北京,于是,再将该消息转发到网易北京的子服务器,由网易北京的子服务器将该消息发送给UsrB。这样,产生了消息的迂回。
特别地,在支持UsrB漫游到北京的情况下,在UsrC给UsrB发送消息时,腾讯上海的子服务器按照就近接入方式,将消息发送给网易南京的子服务器。网易南京的子服务器收到该消息后,根据网易的映射关系,将该消息发送给网易广州的子服务器,网易广州的子服务器判断UsrB漫游到北京,于是,再将该消息转发到网易北京的子服务器,由网易北京的子服务器将该消息发送给UsrB。这样,也产生了消息的迂回。
对于现有的应即时通信系统来说,在UsrB不在线时,UsrA给UsrB发送消息时,将会产生消息迂回问题,特别地,无论是否在线,UsrC给UsrB发送消息时,都会产生更为严重的消息迂回问题。
跨服务域间发送消息,所产生的各种消息迂回要额外消耗很大的信息交换和信息传输资源,并影响到服务质量。由此所额外产生的能源消耗也将无法忽视。
针对上述同城用户被映射到不同城市,使得同城用户交互信息效率低下的问题,以及跨服务域间的消息发送中存在的消息迂回或漫游查询,对消息传送效率所产生的影响,在申请号为201410098231.0的《基于半永久地址的消息发送方法》发明专利中提出了基于半永久地址的消息发送方法。通过外部引入地址因素,按照地址因素,将同一区域的用户聚拢在同一个驻地服务器(RSvr,Residence Server)中,在进行信息交互时,根据用户账号和引入的地址因素所构成的半永久地址来进行寻址,这样,既克服了在手机号码中编码位置因素所存在的用户迁徙时,远程访问相应设备的缺陷,又能克服传统email通信中,email地址不包含地址因素所带来的消息迂回问题。例如,该方法先获取目的HSvr中目的账户所在的RSvr所对应的驻地码(RCode,Residence Code)。在向所述目的账户发送消息时,直接按照该目的账户的AccoAddr和所述RCode所对应的半永久地址(SPAddr,Semi-permanentAddress),来将该消息发送给该目的账户所在的RSvr,从而减少了消息迂回,提高了消息传送效率。由于人们居住或工作地的相对稳定性,因此,一个用户的半永久地址也是相对稳定的,也就是说,所述的获取目的HSvr中目的账户所在的RSvr所对应的RCode的操作只有在目的用户迁徙时才会发生,因此,该操作是一个极低频操作,这样,通过一个极低频的普通操作,换取了极高频的大量业务操作的高效性,从而保证了整个通信系统消息交互的高效率。
按照所述的《基于半永久地址的消息发送方法》发明专利中提出的基于半永久地址的消息发送方法,以及其所提到的相应的HSvr设计思想,来改造现有的email通信系统,可以极大地改善email系统的邮件交互效率,并能改善现有即时通信系统的消息交互效率。
在即时通信系统中,存在用户在线和不在线的状态,常常出现一部分RSvr的在线用户数多一部分RSvr的在线用户少的情况。这样,就会导致面向用户的连接资源的使用不均衡,从而造成设备投资的浪费,例如,要按照在线用户数的峰值来对各个RSvr进行冗余配置,以满足可能的在线用户数高峰的需要。
还有一种情况,一般地,用户常住地发生变化时才需要更新其账户对应的RSvr。实际当中,用户离开常住地旅游或短期出差是经常发生的事情。虽然,用户临时离开常住地后,仍然可以远程连接,接入到其对应的RSvr,但其远程接入的效果通常没有就近接入的效果好。而为了就近接入而将该用户从原来的RSvr迁入到新的RSvr虽然是一种选择,但因用户社会活动而短时偏离其常住地的情况是一个较高频事件,因此,这种因用户临时偏离常住地而在RSvr间搬迁用户账户的处理方式必然会在一定程度上增加网络负担。
发明内容
有鉴于此,本发明公开一种HSvr,用于至少解决上述问题之一。所述HSvr包括:多个UDSvr和多个ASvr;UDSvr和ASvr都被称为叶子服务器(LSvr),每个LSvr被指配相应的RCode,按照被指配的RCode,各个LSvr间可以进行消息交互;
所述UDSvr中保存相应常住地用户的数据信息;所述UDSvr用于接收离线消息,保存该消息,或者在所述消息的目的用户离线时保存该消息;
所述ASvr提供用户客户端接入能力,以及提供在线用户间进行消息交互的能力。
还提供一种离线消息发送方法,所述消息的目的地址包括目的用户的SPAddr,该方法包括以下步骤:
a、根据目的用户的SPAddr的LSvrCDesc,将所述消息发送给目的用户的UDSvr;
b、UDSvr收到所述消息后,根据根据消息的目的地址中的AccoAddr,从账户信息表中确定目标用户,保存该消息。
还提供一种在线消息发送方法,所述消息的目的地址包括目的用户的DAddr,该方法包括以下步骤:
a、根据目的用户的DAddr的LSvrCDesc,将所述消息发送给目的用户的ASvr;
b、ASvr根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,判断是否成功,如果是,则执行步骤c:将所述消息发送给该目标用户的客户端;否则执行步骤d:将所述消息发送给所述AccoAddr的UDSvr。
还提供一种离线消息处理方法,该方法包括以下步骤:
b、UDSvr收到消息后,根据根据消息的目的地址中的AccoAddr,从账户信息表中确定目标用户,判断目标用户是否在线,如果是,则执行步骤c:将所述消息发送给目标用户当前接入的ASvr;否则,执行步骤d:保存该消息。
还提供一种在线消息处理方法,该方法包括以下步骤:
b、ASvr根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,判断是否成功,如果是,则执行步骤c:将所述消息发送给该目标用户的客户端;否则执行步骤d:将所述消息发送给所述AccoAddr的UDSvr。
还提供一种消息发送方法,该方法包括以下步骤:
a、客户端将所述消息发送给接入的ASvr;
b、所述ASvr判断消息的目的LSvr是否是自己,如果是,则执行步骤c:根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,将所述消息发送给该目标用户的客户端,结束流程;否则,执行步骤d:将所述消息发送给目的LSvr。
可选地,所述目的LSvr是UDSvr;
步骤d之后进一步包括步骤e:所述UDSvr收到所述消息后,根据消息的目的地址中的AccoAddr,从账户信息表中确定目标用户,判断目标用户是否在线,如果是,则执行步骤f:将所述消息发送给目标用户当前接入的ASvr,所述ASvr收到所述消息后,根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,将所述消息发送给该目标用户的客户端,结束流程;否则,执行步骤g:保存当前消息。
可选地,所述目的LSvr是ASvr;
步骤d之后进一步包括步骤e:所述ASvr收到所述消息后,根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,将所述消息发送给该目标用户的客户端。
还提供一种消息分流方法,用于ASvr分流来自客户端的消息,该方法包括以下步骤:
所述ASvr判断目的用户的ACode是否为0,如果是,则将所述消息发送给目的用户的UDSvr;否则,所述ASvr将所述消息发送给目的用户的ASvr。
还提供一种登入方法,该方法包括以下步骤:
a、客户端向ASvr发送登入请求,请求中携带当前用户的AccoAddr值,以及登入口令;
b、所述ASvr收到所述登入请求后,向相应的UDSvr发送鉴权请求,请求中携带所述用户的AccoAddr值、当前ASvr的ACode值和登入口令;
c、所述UDSvr在收到登入请求后,针对所述用户,执行鉴权操作,向所述ASvr返回鉴权结果;
d、所述ASvr在收到所述UDSvr的鉴权回复后,向所述客户端返回鉴权结果。
上述实施例提供的技术方案中,由于引入常住地因素,可以灵活实现离线消息、用户数据访问等消息分流,从而,能够有效消除相关消息处理的瓶颈因素,减少了消息迂回,提高了同城交互效率;还由于实现了接入层资源的共享,减少了资源浪费,提高了用户接入质量。因此,有利于大规模网络部署。通过实施本发明HSvr以及相关方法,可以节省网络建设和运营投资,并因为减少了消息传送的路径,还有助于提高ISP的服务质量。
附图说明
图1所示,为本发明分布式RSvr的第一实例图。
图2所示,为本发明分布式RSvr的第二实例图。
图3所示,为本发明分布式HSvr的第一实例图。
图4所示,为本发明分布式HSvr的第二实例图。
图5所示,为本发明离线消息发送方法实施方式一流程图。
图6所示,为本发明离线消息发送方法实施方式二流程图。
图7所示,为本发明在线消息发送方法实施方式流程图。
图8所示,为本发明包括RIDSvr的分布式HSvr实例图。
具体实施方式
为使本发明目的、技术方案和优点更加清楚明白,下面结合实施例,从多个方面进行详细说明。
每个账户都有一个账户地址(AccoAddr,Account Address),以用于账户寻址。
一个GUID的源账户的AccoAddr为该GUID。
一个GUID的迁移账户的AccoAddr为该迁移账户对应的跨域地址码(CDAddr,Cross-domain Address)。关于CDAddr的更多描述,参见申请号为201310079118.3的《支持GUID迁移的网络及相关消息处理方法》发明专利。
本发明以一个AccoAddr是一个GUID为例,但不用于限定。
每个AccoAddr都由一个地址基(AddrBase,Address Base)和一个地址归属(AddrHome,Address Home)构成。当一个AccoAddr是一个GUID时,该AccoAddr的AddrBase是该GUID的UCode,该AccoAddr的AddrHome是该GUID所属HSvr的归属码(HCode,Home Code)。
一个AccoAddr归属的HSvr为该AccoAddr的AddrHome所指向的HSvr。
一个账户的AddrHome,是该账户的AccoAddr的AddrHome;一个账户的AddrBase,是该账户的AccoAddr的AddrBase。
按照一定的规则或算法,根据一个HCode可以产生一个域名,参见所述《通信方法和系统》发明专利。因此,本发明后面的叙述中以{一个HSvr所拥有的HCode是一个域名,GUID是Email地址,AccoAddr是GUID}为例,但不用于限定本发明。
后面以{liubei的AccoAddr为liubei@shu.com,zhangfei的AccoAddr为zhangfei@shu.com,xushu的AccoAddr为xushu@shu.com,guanyc的AccoAddr为guanyc@shu.com,machao的AccoAddr为machao@shu.com}为例。
为了尽量减少各个RSvr面向用户的连接资源的使用不均衡,本发明从{将在线用户的连接管理和消息处理分离开来}着手,来提出一种分布式RSvr。
所述RSvr包括一个用户数据服务器(UDSvr,User Data Server),以及一个或多个接入服务器(ASvr,Access Server)。
如图1所示,为本发明分布式RSvr的第一实例图。在该实例中,所述RSvr包括一个UDSvr和两个ASvr:ASvr-1和ASvr-2。
所述UDSvr与所述ASvr,等等,的HCode,为其所属HSvr的HCode。
在一个HSvr中,UDSvr和ASvr都被称为叶子服务器(LSvr,Leaf Server)。
每个LSvr都被指配了RCode。这使得各个LSvr之间,例如,UDSvr与ASvr之间,以及各个ASvr之间,甚至各个UDSvr之间,都可以基于RCode进行消息交换。
关于RCode的更多描述,可以参阅所述的《基于半永久地址的消息发送方法》发明专利,以及申请号为201610086133.4的《交换方法和交换云》发明专利,以及申请号为201610134662.7的《业务交换方法和业务交换云》发明专利,这里不再转摘。
通常,所述RCode是一个无符号长整型,取值范围是0~(2^32)-1。后面以此为例,但不用于限定本发明。
所述UDSvr中保存相应常住地用户的数据信息。这些数据信息,一般地包括用户的账户信息,例如AccoAddr,登入密码,接入的ASvr相关信息,等等。
当然,所述的常住地用户的数据信息还可以包括用户与其好友的交互信息,例如聊天信息,还例如收件箱、发件箱等收发信数据。
所述UDSvr用于接收离线消息。在所述消息的目的用户在线时,将该消息发送给该目的用户接入的ASvr,由该ASvr将该消息发送给该目的用户;在所述消息的目的用户离线时,保存该消息,并在该目的用户将来登入后,经由其接入的ASvr,将该消息发送给该目的用户。
所述ASvr提供用户客户端接入能力,并维护了在线用户相关信息数据。例如,在线用户的连接信息,可以是面向用户客户端的连接的标识或直接是用户客户端IP地址。也可以包括在线用户的好友列表。也可以包括ASvr到用户客户端通信的加密密钥。
所述ASvr直接提供在线用户间进行消息交互的能力。这样,各个在线用户即可直接基于ASvr,以及ASvr间的互联,而进行消息交互。
用户间交互数据包括目的LSvr为ASvr的在线消息,以及目的LSvr为UDSvr的离线消息。
UDSvr面向本RSvr中的各个ASvr提供数据备份服务。
所述ASvr还可以将在线用户的交互数据备份到相应的UDSvr中,以备相应用户日后查阅,或者在其它终端查阅。所述ASvr可以实时将用户间交互数据备份到UDSvr中。
当然,在所述ASvr中,可以临时保存用户间交互数据信息,针对相应用户,按照交互数据信息累积量(例如每十条消息,或者每10K消息),或定期(例如每5分钟),将用户间交互数据备份到UDSvr中。
一个ASvr既可以与本RSvr中的ASvr进行消息交互,也与其它RSvr中的ASvr进行消息交互。这里,所述“其它RSvr”既可以是本HSvr的RSvr,也可以是其它HSvr中的RSvr。
一个用户对应的账户所在的HSvr为该用户的HSvr。
一个用户对应的账户所在的UDSvr为该用户的UDSvr,该UDSvr所在的RSvr为该用户的RSvr。也即,一个用户对应的账户所在的RSvr为该用户的RSvr。
一个用户当前所接入的ASvr为该用户的ASvr。
实际部署时,一个RSvr的ASvr可以部署在其UDSvr的本地,也可以部署在异地。例如,图1中UDSvr是针对成都设置的,ASvr-1是针对成都设置的,而ASvr-2是针对北京设置的。
将RSvr中面向用户客户端的接入部分剥离出来,有助于将ASvr拉远,这样,就可以按照用户接入地来动态搭建ASvr,这就可以充分保证对ASvr资源调度的灵活性。
对应同一个HSvr来说,不同RSvr的ASvr可以部署在同一个服务器中,形成RSvr间ASvr共用。
如图2所示,为本发明分布式RSvr的第二实例图。在该实例中,包括两个RSvr:RSvr-1和RSvr-2。其中,在RSvr-1中,包括一个UDSvr:UDSvr-1和两个ASvr:ASvr-1和ASvr-2;在RSvr-2中,包括一个UDSvr:UDSvr-2和两个ASvr:ASvr-2和ASvr-3。RSvr-1和RSvr-2共用了ASvr-2。
通过不同RSvr共用ASvr,使得每个RSvr可以不再专属于某一个RSvr,也即,各个ASvr对于各个RSvr来说,成为了一个可以共享的随用随取的资源池,例如,各个RSvr根据各自UDSvr中相应账户的在线情况,而随时随地地根据需要来调度整个ASvr资源池中合适的ASvr。
这样,就极大程度地保障了ASvr作为面向用户客户端的接入资源,在网络部署和调度方面的灵活性,从而,可以减少网络资源的浪费,有助于节省运维成本。这样,对于一个ISP来说,就可以根据自己发展情况和用户接入的需求,在全球范围内对自己HSvr中的各个ASvr进行调度和部署。例如,在网络部署时,可以根据常住地人口来部署UDSvr,根据人口流动(例如节假日的流动)来灵活部署和调度ASvr资源。
为了充分展示所述分布式RSvr的技术方案,及其优点,下面以{基于该分布式RSvr,提出一种分布式HSvr}为例,进行详细说明。
所述分布式HSvr包括多个UDSvr和多个ASvr。
如图3所示,为本发明分布式HSvr的第一实例图。在该实例中,所述HSvr包括,两个UDSvr:位于北京的UDSvr-101和位于广州的UDSvr-201,以及四个ASvr:位于北京的ASvr为ASvr-105,位于广州的ASvr为ASvr-206,位于上海的ASvr为ASvr-218,位于成都的ASvr为ASvr-289。
后面以{UDSvr-101的RCode为101,UDSvr-201的RCode为201;ASvr-105的RCode为105,ASvr-206的RCode为206,ASvr-218的RCode为218,ASvr-289的RCode为289}为例。
一个UDSvr被指配的RCode为其所属RSvr的RCode。也即,在为一个RSvr指配RCode时,实际是为这个RSvr的UDSvr指配了RCode,反之,在为一个UDSvr指配RCode时,实际是为这个UDSvr所属的RSvr指配了RCode。
一般地,各个ASvr分别被指配不同的RCode。
允许一个ASvr与UDSvr被指配同一个RCode,或者允许两个ASvr被指配同一个RCode。这样,各个LSvr可以基于RCode与消息的业务码(ServiceClass,Service Class)来进行消息交互。更多详细描述,参阅所述的《业务交换方法和业务交换云》发明专利中提到的业务交换方法,这里不再转摘。
后面以各个LSvr分别被指配了不同的RCode为例进行说明,但不用于限定。
本发明用一个LSvr完全描述(LSvrCDesc,LSvr Complete Description)来在互联网中标识一个LSvr。一个LSvr的LSvrCDesc,包括HCode和RCode两部分信息,可以写成(HCode,RCode)形式。其中该LSvrCDesc的HCode为对应LSvr的HCode,该LSvrCDesc的RCode为对应LSvr的RCode。
通过建立LSvrCDesc与LSvr的对应关系,可以根据一个LSvrCDesc确定一个LSvr。
建立一个LSvrCDesc与一个LSvr的对应关系可以是:在相应的域名系统(DNS,Domain Name System)中,将该LSvrCDesc所对应的域名指向该LSvr。这样,在互联网中,就可以根据一个LSvrCDesc确定一个LSvr。例如:解析一个LSvrCDesc所对应的域名,得到相应LSvr的IP地址。解析一个域名可以是:向相应的DNS发送查询请求,请求中包括所述域名,所述DNS根据该域名查找对应的IP地址,将得到的IP地址返回给请求者。由于解析域名是成熟技术,因此,这里不再赘述。
在一个LSvr部署好后,例如相应的IP地址设置好后,即可将该LSvr的LSvrCDesc所对应的域名指向该LSvr的IP地址。
一个LSvrCDesc所对应域名可以是根据该LSvrCDesc产生的域名。
根据一个LSvrCDesc产生域名的方式可以是:将该LSvrCDesc的RCode作为一个子域,与该LSvrCDesc的HCode一起产生一个该HCode的子域名。
例如,一个LSvr的LSvrCDesc值为(shu.com,201),将201作为一个子域,插入到域名shu.com前,这样,就得到域名shu.com的子域名201.shu.com,即LSvrCDesc值(shu.com,201)对应的域名。在DNS中,将201.shu.com指向相应LSvr的IP地址。这样,就可以根据LSvrCDesc值(shu.com,201),来向对应的LSvr发送消息。例如,消息发送方根据(shu.com,201)值产生域名,得到201.shu.com,求解201.shu.com所对应的IP地址,根据该IP地址,向所述LSvr发送消息。
在一个HSvr内部,可以直接建立各个RCode与相应LSvr的对应关系,使得,源LSvr在向目的LSvr发送消息时,直接根据目的LSvr的RCode值,按照所建立的对应关系找到目的LSvr,从而将消息发送给对方。
例如,这种对应关系可以直接是各个LSvr的RCode与相应LSvr的IP地址的对应关系,这样,就可以根据一个LSvr被指配的RCode,按照所述对应关系来获取对应的IP地址,按照获取的IP地址来给对应LSvr发送消息。
这种情况下,各个HSvr可以设置关口服务器(GSvr,GateWay Server),在不同HSvr的LSvr之间发送消息时,源LSvr可以根据目的LSvr的LSvrCDesc的HCode,将该消息发送给目的HSvr的GSvr,消息中携带了目的LSvr的RCode值。目的HSvr的GSvr收到该消息后,根据消息中携带的目的LSvr的RCode值,按照所建立的RCode与相应LSvr的IP地址的对应关系,获取目的LSvr的IP地址,按照该IP地址来给目的LSvr发送消息。
关于GSvr,和基于GSvr的跨域消息发送方法,参阅申请号为201410116253.5的《基于半永久地址的消息寻址方法》发明专利,这里不再转摘。
较佳地,各个HSvr中设置交换云(XCld,eXchange Cloud),这样,一个HSvr内部的LSvr之间,就可以基于目的LSvr的RCode,通过本HSvr中设置的XCld进行消息交互。
如图4所示,为本发明分布式HSvr的第二实例图。在该图中包括XCld,两个UDSvr:位于北京的UDSvr-101和位于广州的UDSvr-201,以及四个ASvr:位于北京的ASvr为ASvr-105,位于广州的ASvr为ASvr-206,位于上海的ASvr为ASvr-218,位于成都的ASvr为ASvr-289。
各个HSvr之间,通过各自的XCld进行互联。
两个HSvr的XCld之间的互联,可以由双方的运维人员协商处理。
当然,两个HSvr的XCld之间的互联,也可以按照一定的调度机制,来进行自动处理,例如,各个HSvr中,设置调度服务器,并约定根据HSvr的HCode,能够寻址该调度服务器。例如,将HCode对应的域名,或者该域名与某一约定子域,例如“DSvr”一起组成的该HCode的子域名,指向该调度服务器的IP地址。一个XCld在需要连接对方的XCld时,先根据对方HSvr的HCode,获取对方HSvr中调度服务器的IP地址,根据获取的IP地址,访问对方HSvr的调度服务器,对方HSvr的调度服务器根据接入请求者的位置信息,选择本HSvr中XCld里合适的交换服务器(XSvr,Exchange Server),将其连接信息返回给接入请求者。这样,接入请求者就可以根据获取的XSvr的连接信息,来连接对方。
这样,不同HSvr的LSvr之间,就可以基于目的LSvr的LSvrCDesc,通过互联的XCld进行消息交互。关于XCld,以及各个LSvr通过XCld进行消息交互的更多描述,参阅所述的《交换方法和交换云》发明专利,以及所述的《业务交换方法和业务交换云》发明专利。这里不再转摘。
由上可知,在一个HSvr内部,两个LSvr可以基于目的LSvr的RCode或LSvrCDesc进行信息交互。在不同HSvr之间,两个LSvr可以基于目的LSvr的LSvrCDesc进行消息交互。
为了便于描述,将一个ASvr被指配的RCode称为该ASvr的ACode。
一个用户的UDSvr的RCode,被称为该用户的RCode。
一个用户的ASvr的ACode,被称为该用户的ACode。
一个账户的AccoAddr为该账户的永久地址(PermAddr,Permanent Address)。
一个用户的AccoAddr与该用户的RCode一起,组成该用户的半永久地址(SPAddr,Semi-permanent Address)。一个SPAddr可以写成(AccoAddr,RCode)形式。
一个SPAddr中含有一个LSvrCDesc,该LSvrCDesc的HCode为该SPAddr的AccoAddr的AddrHome,该LSvrCDesc的RCode为该SPAddr的RCode。例如,liubei的AccoAddr为liubei@shu.com,所在的UDSvr为UDSvr-201,相应的RCode为201,则,对应的SPAddr为(liubei@shu.com,201),相应地,该SPAddr的LSvrCDesc为(shu.com,201)。
一个用户的AccoAddr与该用户的ACode一起,组成该用户的动态接入地址(DAddr,Dynamic Access Address)。一个DAddr可以写成(AccoAddr,ACode)形式。
一个DAddr中含有一个LSvrCDesc,该LSvrCDesc的HCode为该DAddr的AccoAddr的AddrHome,该LSvrCDesc的ACode为该DAddr的ACode。例如,liubei的AccoAddr为liubei@shu.com,接入的ASvr为ASvr-289,相应的ACode为289,则,对应的DAddr为(liubei@shu.com,289),相应地,该DAddr的LSvrCDesc为(shu.com,289)。
一个UDSvr的LSvrCDesc,也称为该UDSvr的RSvr完全描述(RSvrCDesc,RSvrComplete Description);一个ASvr的LSvrCDesc,也称为该ASvr的ASvr完全描述(ASvrCDesc,ASvr Complete Description)。
一个用户的AccoAddr与该用户的RCode和ACode一起,组成该用户的全景地址(PanoAddr,Panorama Address)。一个PanoAddr可写成(AccoAddr,RCode,ACode)形式。
一个PanoAddr中含有一个SPAddr和一个DAddr,该SPAddr的AccoAddr为该PanoAddr的AccoAddr,该SPAddr的RCode为该PanoAddr的RCode;该DAddr的AccoAddr为该PanoAddr的AccoAddr,该DAddr的ACode为该PanoAddr的ACode。
一个PanoAddr中含有一个RSvrCDesc和一个ASvrCDesc,该RSvrCDesc为该PanoAddr的SPAddr的LSvrCDesc,该ASvrCDesc为该PanoAddr的DAddr的LSvrCDesc。
例如,liubei的AccoAddr为liubei@shu.com,所在的UDSvr为UDSvr-201,相应的RCode为201,接入的ASvr为ASvr-289,相应的ACode为289,则,对应的PanoAddr为(liubei@shu.com,201,289),相应地,该PanoAddr的RSvrCDesc为(shu.com,201),该PanoAddr的ASvrCDesc为(shu.com,289)。
如果一个PanoAddr的ACode为0,则说明该PanoAddr对应的用户处于离线状态。
一个有效的AccoAddr总对应一个有效的RCode值,也即对应一个SPAddr。
一般地,一个用户的账户信息中可以包括这些属性:AccoAddr或AccoAddr的AddrBase、Password,等等。其中,Password为相应账户的登录密码。
一个用户的账户信息中,还可以包括该用户的好友信息,黑名单。
一个用户的账户信息中,还可以包括该用户的设置信息,例如位置设置:是否允许他人在附近人功能里查看到自己。
一个用户的账户信息中,还可以包括该用户的个人空间信息,例如签名,嗮图,微博客,转摘,个人收藏,等等。
特别地,在UDSvr中,还可保存一个用户与其他用户交互的信息数据,例如聊天消息,或者收、发件箱等等信息,以实现用户在不同地点,不同终端查看自己消息或邮件的能力。
由于一个用户的SPAddr相对稳定,因此,不论一个用户是否在线,一般情况下,可以根据该用户的SPAddr成功地向其发送消息;以及根据该用户的SPAddr,查询该用户在个人空间中公开的信息。
本发明提出一种离线消息发送方法,所述消息的目的地址包括目的用户的SPAddr。
如图5所示,为本发明离线消息发送方法实施方式一流程图。在该图中,
首先在步骤11、根据目的用户的SPAddr的LSvrCDesc,将所述消息发送给目的用户的UDSvr。
步骤12、所述UDSvr收到所述消息后,根据目的用户的AccoAddr,从账户信息表中确定目标用户。
步骤14:保存所述消息。
这样,所述目的用户的客户端在接入到某一个ASvr后,即可获取其UDSvr中保存的,尚没有发送给自己的消息。
所述目的用户的客户端,也可以定期(例如每十分钟一次)获取该目的用户的UDSvr中保存的,尚没有发送给自己的消息。
或者,所述目的用户的客户端接入的ASvr,定期获取该目的用户的UDSvr中保存的,尚没有发送给该目的用户客户端的消息,将该消息发送给该目的用户的客户端。
较佳地,在UDSvr中,针对各个用户登记相应ACode值,以用于指示相应用户当前接入的ASvr。通常,在用户的账户信息中增加ACode属性,来登记相应用户的ACode。
例如,UDSvr-201可以通过如表1所示的账户信息表来保存相应用户的账户信息。
表1
AccoAddr | Password | ACode | Remark |
liubei@shu.com | ******** | 289 | 接入ASvr-289 |
xushu@shu.com | ******** | 0 | Offline |
guanyc@shu.com | ******** | 105 | 接入ASvr-105 |
zhangfei@shu.com | ******** | 289 | 接入ASvr-289 |
在表1中,通过ACode字段记录了相应用户当前接入的ASvr的ACode。
当一个用户处于登入状态时,在该用户的账户信息里登记一个有效的ACode值,对应该用户当前接入的ASvr的ACode值。一般表现为,该用户所归属的HSvr中,在所登记的ACode所对应的ASvr里,有针对该用户的在线记录。
当一个用户处于登出状态时,在用户的账户信息里登记的ACode值为0。一般表现为,在所述用户所归属的HSvr中的任何ASvr里,都没有针对该用户的在线记录。
从表1可以看出,liubei@shu.com与zhangfei@shu.com都接入到ASvr-289中,而xushu@shu.com处于离线状态。
这样,在步骤12之后,如果发现目标用户在线,则可以将所述消息作为在线消息来处理。
在所述步骤12之后,进一步包括:判断目标用户是否在线,如果是,则执行步骤13:将所述消息发送给目标用户当前接入的ASvr,然后结束流程;否则,执行步骤14。
如图6所示,为本发明离线消息发送方法实施方式二流程图。
在步骤13中,所述UDSvr是根据目标用户的ACode,将所述消息发送给目标用户当前接入的ASvr。
在步骤13之后,所述ASvr收到所述消息后,即可根据目的用户的AccoAddr,确定相应的在线用户,将该消息发送给所确定的在线用户客户端。
按照该方法,有助于基于常住地因素进行HSvr部署,便于消息分流,从而有助于提高系统整体运行效率。
客户端在发送离线消息时,如何明确消息的目的地址?本发明提供以下两种方式:
方式一、客户端明确目的用户的SPAddr
如果ASvr中没有针对各个用户的好友保存对应的SPAddr,而是在用户的客户端中针对好友列表中各个好友,保存了对应的SPAddr,那么,在步骤11中,客户端可以将一个好友的SPAddr作为消息的目的地址来发送所述离线消息。这样,ASvr收到所述离线消息后,直接根据目的用户的SPAddr的LSvrCDesc,将所述消息发送给目的用户的UDSvr。
这种方式可以减少ASvr对内存空间的占用,但增加了客户端与ASvr的交互流量。
方式二、ASvr明确目的用户的SPAddr
如果ASvr中已经针对一个用户的各个好友保存对应的SPAddr,那么,在步骤11中,客户端可以将一个好友的AccoAddr作为消息的目的地址来发送所述离线消息。这样,ASvr收到所述离线消息后,根据目的用户的AccoAddr,从相应用户的好友列表中获取对应的SPAddr,将该SPAddr作为消息的目的地址,然后直接根据该SPAddr的LSvrCDesc,将所述消息发送给目的用户的UDSvr。
这种方式增加了ASvr对内存空间的占用,但减少了客户端与ASvr的交互流量。
实际当中,在发送离线消息时,选择方式一还是方式二,可由技术人员根据需要自己权衡。后面详细例中,多以方式一为例,但不用于限定本发明。
在ASvr中,通过设置在线信息表来记录各个用户的在线描述信息。
例如,一个用户的在线记录中,可以包括AccoAddr或AccoAddr的AddrBase,对应客户端的连接信息(ClientConnDesc,Client Connection Description)。
所述ClientConnDesc可以是UDSvr面向相应客户端的TCP连接标识,例如TCP连接的套接口描述符(SktD,Socket Descriptor),也可以直接是相应客户端的IP地址。
所述ASvr在一个用户接入时可以获取登录客户端的IP地址和端口号,并将获取的IP地址和端口号保存在该用户对应的ClientIP和ClientPort属性中。
后面以{所述ClientConnDesc是相应客户端的IP地址和端口号}为例。
所述在线记录中,还可以包括相应用户的RCode值,以用于指示该用户的UDSvr。这样,在一个账户的客户端通过接入的ASvr来访问其UDSvr时,就不需要总是在消息中携带该账户对应UDSvr的RCode值。本发明后面以此为例,但不用于限定本发明。
所述在线记录中,还可以包括对应的密钥信息(SKey,Secret Key),用以保障ASvr和相应接入的用户客户端之间的通信安全。
例如,ASvr-289可以通过如表3所示的在线信息表来保存在线用户的描述信息。
表3
AccoAddr | RCode | SKey | ClientIP | ClientPort |
liubei@shu.com | 201 | ******** | 相应IP地址 | 相应端口号 |
zhangfei@shu.com | 201 | ******** | 相应IP地址 | 相应端口号 |
machao@shu.com | 101 | ******** | 相应IP地址 | 相应端口号 |
从表3可以看出,liubei@shu.com与zhangfei@shu.com的UDSvr都为UDSvr-201。
本发明提出一种在线消息发送方法,所述消息的目的地址包括目的用户的DAddr。
所述在线消息发送方法实施方式流程如下:
首先在步骤21、根据目的用户的DAddr的LSvrCDesc,将所述消息发送给目的用户的ASvr。
步骤22、所述目的用户的ASvr根据目的用户的AccoAddr,从在线信息表中确定在线记录。
步骤23、所述目的用户的ASvr按照所确定在线记录的ClientConnDesc,将所述消息发送给对应的客户端。
按照该方法,在实施跨服务域的消息发送时,例如,不同HSvr之间的在线消息发送,可以更加快捷地传送消息。
在步骤22中,如果在线信息表中不存在对应的在线记录,则可以将该消息作为离线消息来处理。
在所述的步骤22之后,进一步包括:判断所述确定在线记录的操作是否成功,如果是,则执行步骤23,然后结束流程;否则,执行步骤24:将所述消息发送给所述目的用户的UDSvr。
如图7所示,为本发明在线消息发送方法实施方式流程图。
客户端在发送在线消息时,如何明确消息的目的地址?本发明提供以下两种方式:
方式一、客户端明确目的用户的DAddr
如果ASvr中没有针对各个用户的好友保存对应的DAddr,而是在用户的客户端中针对好友列表中各个好友,保存了对应的DAddr,那么,在步骤21中,客户端可以将一个好友的DAddr作为消息的目的地址来发送所述在线消息。这样,ASvr收到所述在线消息后,根据目的用户的DAddr的LSvrCDesc,将所述消息发送给目的用户的ASvr。
这种方式可以减少ASvr对内存空间的占用,但增加了用户客户端与ASvr的交互流量。
方式二、ASvr明确目的用户的DAddr
如果ASvr中已经针对一个用户的各个好友保存对应的DAddr,那么,在步骤21中,客户端可以将一个好友的AccoAddr作为消息的目的地址来发送所述在线消息。这样,ASvr收到所述在线消息后,根据目的用户的AccoAddr,从相应好友列表中获取对应的DAddr,将该DAddr作为消息的目的地址,然后根据目的用户的DAddr的LSvrCDesc,将所述消息发送给目的用户的ASvr。
这种方式增加了ASvr对内存空间的占用,但减少了客户端与ASvr的交互流量。
实际当中,在发送在线消息时,选择方式一还方式二,可由技术人员根据需要自己权衡。后面详细例中,多以方式一为例,但不用于限定本发明。
在步骤21中,在线消息发送方的ASvr在执行{根据目的用户的DAddr的LSvrCDesc,将所述消息发送给目的用户的ASvr}操作前,还判断目的用户的DAddr的LSvrCDesc是否指向自己,如果是,则直接进入步骤22至步骤24的流程。
在步骤24中,所述ASvr是根据目的用户的SPAddr的LSvrCDesc,来将所述消息发送给所述目的用户的UDSvr。所述ASvr可以根据目的用户的AccoAddr,按照后面提出的驻地识别方法来获取该用户的RCode,从而获得目的用户的SPAddr。
较佳地,客户端发送给其接入的ASvr的在线消息中,目的地址为目的用户的PanoAddr。
或者,在ASvr中,已经针对一个用户的各个好友保存对应的PanoAddr。这样,ASvr收到所述在线消息后,根据目的用户的AccoAddr,从相应好友列表中获取对应的PanoAddr。
所述ASvr可以从一个PanoAddr中提取对应的SPAddr和DAddr。
由于一个用户的RCode很少变动,通常,一个用户的好友列表中,至少保存相应好友的SPAddr。
在用户间不需要进行交互时,例如用户S(UsrS)不需要和用户D(UsrD)聊天时,UsrS是不需要知道UsrD的ACode的,也即是不需要知道UsrD的DAddr。特别地,考虑到网络资源调度的灵活性,一个用户接入的ASvr可能会经常变更。因此,在两个用户没有进行交互时,是不需要长期保存对方的ACode的。
那么,UsrS在给UsrD发送消息时,是给UsrD的ASvr发送在线消息,还是给UsrD的UDSvr发送离线消息呢?
当然,如果知道UsrD的在线信息,可以直接根据在线信息决定给UsrD发送在线消息还是离线消息。就如现有的即时通信系统一样,如QQ,用户一上线,就将其好友在线信息同步到手机客户端。这种用户一登入,就立即同步在线信息的处理方式会浪费大量的网络流量,同时也让用户客户端接入操作变得迟钝。我们知道,一个用户登入后,并不需要与其好友列表中成百上千的好友,都进行通信。
本发明中,UsrS在给UsrD发送消息时,可以根据是否保存了UsrD的ACode,也即,是否保存了UsrD的DAddr来决定发送在线消息,还是发送离线消息。
在UsrS侧没有保存UsrD的ACode值时,UsrS侧在向UsrD发送消息时,可以选择发送离线消息,消息的目的地址为UsrD的SPAddr。例如,UsrD为liubei,则消息的目的地址为SPAddr值(liubei@shu.com,201)。
在UsrS侧保存了UsrD的ACode值时,UsrS侧在向UsrD发送消息时,可以选择发送在线消息,消息的目的地址为UsrD的DAddr。例如,UsrD为liubei,则消息的目的地址为DAddr值(liubei@shu.com,289)。
一个用户的客户端在发送离线消息时,经由该客户端接入的ASvr,按照目的用户的SPAddr,将消息发送给目的用户的UDSvr。
例一、zhangfei给离线用户xushu发送离线消息,流程如下:
步骤101、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为SPAddr值(xushu@shu.com,201),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤102、ASvr-289收到所述消息后,判断目的用户的SPAddr的LSvrCDesc值(shu.com,201)指向其它LSvr,于是,按照该LSvrCDesc值,将消息发送给UDSvr-201。
步骤103、UDSvr-201收到所述消息后,根据目的用户的SPAddr的AccoAddr值xushu@shu.com,从如表1所示的账户信息表中确定对应的账户记录,发现对应的ACode为0,于是,保存该消息。例如,可以将该消息保存到xushu的信箱中。
在xushu下次接入到某个ASvr后,可以从自己的UDSvr中读取保存的他人发送给自己的消息。
在用户客户端接入到ASvr时,ASvr可以从UDSvr中获取该用户的一些账户信息,例如,该用户的好友信息,以及相应账户下收到的新消息。这些新消息会被发送到用户的客户端。同时,UDSvr会登记所述用户当前接入的ASvr的RCode。
下面举例时,并不包括众所周知的关于如何获取用户账户信息的操作,以及ASvr如何根据用户好友列表,过滤用户消息的操作。而是侧重于在本发明解决方案架构下,客户端登入的一般流程,以帮助技术人员更快地理解本发明。
根据不同的安全需要,和对安全控制的总体策略,可以有不同的客户端登入流程。下面提供一种客户端登入流程,供技术人员参考,而不用于限定本发明。所述流程包括如下步骤:
步骤31、客户端向ASvr发送登入请求,请求中携带当前用户的AccoAddr值和登入口令。
步骤32、所述ASvr收到所述登入请求后,向相应的UDSvr发送鉴权请求,请求中携带所述用户的AccoAddr值、当前ASvr的ACode值和登入口令。
步骤33、所述UDSvr在收到登入请求后,针对所述用户,执行鉴权操作,向所述ASvr返回鉴权结果。
步骤34、所述ASvr在收到所述UDSvr的鉴权回复后,向所述客户端返回鉴权结果。
在步骤33中,所述UDSvr在鉴权成功后,还可以执行ASvr切换操作。例如,更新账户信息记录中的ACode值,并通知原来接入的ASvr,相应用户已经接入新ASvr。这样,原来接入的ASvr即可清除该用户接入的痕迹。
在步骤32中,所述的向相应的UDSvr发送鉴权请求,可以有如下两种方式:
方式一、直接发送,即,在步骤32中,所述ASvr获取所述用户的RCode值,根据获取的RCode,来向相应的UDSvr发送鉴权请求。
例如,在步骤31中,所述登入请求中还携带了相应用户的RCode值,这样,在步骤32中,所述ASvr直接从该登入请求中获取所述用户的RCode。
还例如,在步骤32中,所述ASvr向RIDSvr发送驻地识别请求,请求中携带所述用户的AccoAddr值;RIDSvr收到所述驻地识别请求后,根据该请求中所携带的AccoAddr值获取对应的RCode,将获取的RCode值回复给所述ASvr。
方式二、间接发送,即,所述ASvr经由RIDSvr将所述鉴权请求发送给相应的UDSvr。
例如,所述步骤32进一步是步骤32B:所述ASvr收到所述登入请求后,向RIDSvr发送鉴权请求,请求中携带所述用户的AccoAddr值、当前ASvr的ACode值和登入口令;RIDSvr收到所述鉴权请求后,根据该请求中所携带的AccoAddr值获取对应的RCode;根据获取的RCode,来向相应的UDSvr发送鉴权请求。
关于驻地识别和RIDSvr,参见后面的描述。
例二、xushu接入ASvr-105,流程如下:
步骤201、xushu客户端按照ASvr-105的IP地址,向ASvr-105发起连接请求,和ASvr-105建立连接;ASvr-105在连接建立后,将该连接标记为临时连接。
步骤202、xushu客户端在所述连接建立后,向ASvr-105发送登录请求,请求中携带SPAddr值(xushu@shu.com,201),以及登录口令。
步骤203、ASvr-105收到登录请求后,按照所述SPAddr的LSvrCDesc值,向UDSvr-201发送鉴权请求,请求中携带DAddr值(xushu@shu.com,105),以及登录口令。
步骤204、UDSvr-201在收到登录请求后,针对所述DAddr的AccoAddr值xushu@shu.com,执行鉴权操作,向ASvr-105返回鉴权结果;UDSvr-201在鉴权成功后,执行ASvr切换操作。
这里,UDSvr-201根据AccoAddr值xushu@shu.com,从如表1所示的账户信息表中确定对应的账户记录,判断登录请求中携带的登录口令与该记录中保存的登录口令是否一致,如果一致,则鉴权成功;否则,鉴权失败。
步骤205、ASvr-105在收到UDSvr-201的鉴权回复后,向xushu客户端返回鉴权结果,内容包括:登入是否成功。
步骤206、ASvr-105在鉴权成功时,将面向xushu客户端的临时连接设置为正常连接;在鉴权失败时,将面向xushu客户端的临时连接拆除。
一般地,ASvr在一个面向客户端的连接被标记为临时连接时,禁止该通过该连接发送和接收各种聊天消息,从而保障用户通信安全。
在步骤204中,UDSvr-201在鉴权成功后,还可以启动新消息发送流程:直接获取保存的,他人发送的,xushu客户端尚未接收的消息,将这些消息发送给ASvr-105,ASvr-105接收到这些消息后,将其发送给xushu的客户端。
当然,则步骤206之后,xushu客户端在判断登入成功后,可以向ASvr-105发送获取新消息请求,ASvr-105将该请求发送给UDSvr-201,UDSvr-201在收到所述获取新消息请求后,才启动所述新消息发送流程。
在步骤204中,所述ASvr切换操作是执行ACode新值登记操作:在xushu@shu.com的账户记录中登记其接入的ASvr-105的ACode值105,也即所述DAddr的ACode值。
在步骤204中,所述ASvr切换操作是:进一步判断xushu@shu.com的账户记录中ACode值是否为所述DAddr的ACode值,如果是,则结束所述ASvr切换操作;否则,执行ACode新值登记操作:在xushu@shu.com的账户记录中登记其接入的ASvr-105的ACode值105,也即所述DAddr的ACode值。这里,在执行ACode新值登记操作之前,还判断在xushu@shu.com的账户记录中ACode值是否为0,如果不是,则向该ACode值指示的ASvr发送ASvr切换指令,指令中携带AccoAddr值xushu@shu.com,然后执行所述ACode新值登记操作。
所述ASvr收到所述ASvr切换指令后,根据指令中携带的AccoAddr值xushu@shu.com,从如表3所示的在线信息表中查找对应的在线记录,删除该在线记录。
一个HSvr会有很多ASvr,那么,一个用户的客户端要接入服务时,应该接入到哪一个ASvr呢?例如,在步骤201之前,xushu客户端如何获取到ASvr-105的IP地址呢?
一般地,ISP会采用相应的全局负载均衡(Global Server Load Balance)技术,来保证各个用户能够对各个ASvr的均衡高效接入。
一种粗放的处理方式是:在DNS系统中,进行智能解析配置,使得在对一个域名进行解析时,可以按照域名解析请求所来自的不同地域,分别解析到不同ASvr的IP地址。
例如,ISP根据自己HCode值shu.com产生域名:将约定的子域“access”加入到shu.com前,得到子域名access.shu.com。在相应的DNS中,将access.shu.com同时指向该HSvr的多个ASvr的IP地址。相应的DNS服务器收到用户客户端发送的一个域名解析请求后,用域名解析请求者的IP地址匹配域名access.shu.com所对应的多个IP地址,从中确定最佳匹配者,将最佳匹配的IP地址作为解析结果返回给域名解析请求者。
在DNS中,可针对access.shu.com所对应的各个IP地址,分别设置相应的客户端网段。在收到用户客户端发送的求解域名access.shu.com对应的IP地址的请求时,DNS根据请求中携带的域名access.shu.com,查找对应的多个ASvr的IP地址,根据用户客户端IP地址所属的网段,从查找到的各个ASvr的IP地址中,选择合适的IP地址返回给用户客户端。
如果DNS系统并不支持上面所述的粗放处理方式,则可以在HSvr中设置调度服务器(DSvr,Dispatch Server),在调度服务器中,针对各个ASvr的IP地址,分别设置相应的客户端网段。
在DNS中,将access.shu.com指向所述DSvr的IP地址。这样,用户客户端可以根据access.shu.com访问DNS,得到所指向的DSvr的IP地址,根据该IP地址,向该DSvr发送接入请求,该DSvr根据用户客户端IP地址所属的网段,从各个ASvr的IP地址中,选择合适的IP地址返回给用户客户端。
在步骤202之前,xushu客户端如何获取xushu@shu.com的RCode值201呢?按照后面所提的驻地识别方法,可以获取一个用户的RCode值。
按照所述的登入流程,可以基于常住地因素对UDSvr进行规划,从而可以实现登入业务的灵活分流。
实际当中,所述步骤202可以进一步是步骤202B:xushu客户端在所述连接建立后,向ASvr-105发送登录请求,请求中携带AccoAddr值xushu@shu.com,以及登录口令。
相应地,所述步骤203进一步是步骤203B:ASvr-105收到登录请求后,获取AccoAddr值xushu@shu.com的RCode值201,得到xushu的SPAddr值(xushu@shu.com,201);按照xushu的SPAddr值的LSvrCDesc,向UDSvr-201发送鉴权请求,请求中携带DAddr值(xushu@shu.com,105),以及登录口令。
例三、zhangfei给在线用户Liubei发送离线消息,流程如下:
步骤301、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为SPAddr值(liubei@shu.com,201),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤302、ASvr-289收到所述消息后,判断目的用户的SPAddr值(liubei@shu.com,201)的LSvrCDesc指向其它LSvr,于是,按照该LSvrCDesc值,将消息发送给UDSvr-201。
步骤303、UDSvr-201收到所述消息后,根据SPAddr值(liubei@shu.com,201)的AccoAddr,从如表1所示的账户信息表中确定对应的账户记录,发现对应的ACode为289,不是0,于是,将DAddr值(liubei@shu.com,289)作为消息的目的地址,根据DAddr值(liubei@shu.com,289)的LSvrCDesc,将该消息发送给ASvr-289。
步骤304、ASvr-289收到所述消息后,根据目的用户的DAddr值(liubei@shu.com,289)的AccoAddr值,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给Liubei的客户端。
liubei这一侧在收到所述消息后,可以保存zhangfei对应的ACode值289。这样,在liubei给zhangfei发送消息时,即可直接根据DAddr值(zhangfei@shu.com,289),来发送在线消息。
UDSvr在接收到离线消息后,发现对应的目的账户处于在线状态,还可以将该账户接入的ASvr的ACode值,也即该账户的ACode值,回复给消息发送方。消息发送方保存该目的账户所接入的ASvr的ACode信息。这样,消息发送方在下一次发送消息时,就可以直接发送在线消息。
例如,在步骤303中,UDSvr-201还向zhangfei这一侧回复Liubei的ACode值。例如,UDSvr-201构造回复消息:目的地址为DAddr值(zhangfei@shu.com,289),源地址为DAddr值(liubei@shu.com,289),回复消息内容为“发送成功标志”。将该回复消息回复给ASvr-289;ASvr-289收到该回复消息后,根据回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。zhangfei这一侧在收到所述回复消息后,可以保存liubei对应的ACode值289。这样,在zhangfei再给liubei发送消息时,即可直接根据DAddr值(liubei@shu.com,289),发送在线消息。
所述的向zhangfei这一侧回复Liubei的ACode值的操作,也可以由liubei接入的ASvr来完成。例如,在步骤304之后,ASvr-289构造回复消息:目的地址为DAddr值(zhangfei@shu.com,289),源地址为DAddr值(liubei@shu.com,289),回复消息内容为“发送成功标志”;由于回复消息的目的用户的DAddr的LSvrCDesc指向自己,因此,ASvr-289直接根据回复消息的目的用户的DAddr的AccoAddr值zhangfei@shu.com,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。
向消息的发送方回复接收方的ACode值的操作是由接收方的UDSvr来发起,还是由接收方的ASvr来发起,实际当中,技术人员可以根据需要进行权衡。
上述zhangfei和liubei都接入了同一个ASvr:ASvr-289。实际上,由于寻址是根据目的LSvr的LSvrCDesc进行的,因此,在收发方接入不同的ASvr时,可以达到同样技术效果。
例四、zhangfei给在线用户guanyc发送离线消息,流程如下:
步骤401、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为SPAddr值(guanyc@shu.com,201),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤402、ASvr-289收到所述消息后,判断目的用户的SPAddr值(guanyc@shu.com,201)的LSvrCDesc指向其它LSvr,于是,按照该LSvrCDesc值,将消息发送给UDSvr-201。
步骤403、UDSvr-201收到所述消息后,根据SPAddr值(guanyc@shu.com,201)的AccoAddr,从如表1所示的账户信息表中确定对应的账户记录,发现对应的ACode为105,不是0,于是,将DAddr值(guanyc@shu.com,105)作为消息的目的地址,根据DAddr值(guanyc@shu.com,105)的LSvrCDesc,将该消息发送给ASvr-105。
步骤404、ASvr-105收到所述消息后,根据目的用户的DAddr值(guanyc@shu.com,105)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给guanyc的客户端。
步骤405、ASvr-105构造回复消息:目的地址为DAddr值(zhangfei@shu.com,289),源地址为DAddr值(guanyc@shu.com,105),回复消息内容为“发送成功标志”;判断回复消息目的用户的DAddr值(zhangfei@shu.com,289)的LSvrCDesc指向其它LSvr,于是,按照该LSvrCDesc值,将该回复消息发送给ASvr-289。
步骤406、ASvr-289收到所述回复消息后,根据回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。
步骤407、zhangfei的客户端在收到所述回复消息后,保存guanyc对应的ACode值105。
例五、zhangfei给在线用户machao发送离线消息,这里,二者的UDSvr并不相同,但流程和例四是一致的,如下:
步骤501、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为SPAddr值(machao@shu.com,101),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤502、ASvr-289收到所述消息后,判断目的用户的SPAddr值(machao@shu.com,101)的LSvrCDesc值指向其它LSvr,于是,按照该LSvrCDesc值,将消息发送给UDSvr-101。
步骤503、UDSvr-101收到所述消息后,根据SPAddr值(machao@shu.com,101)的AccoAddr,从如表1所示的账户信息表中确定对应的账户记录,发现对应的ACode为289,不是0,于是,将DAddr值(machao@shu.com,289)作为消息的目的地址,根据DAddr值(machao@shu.com,289)的LSvrCDesc值,将该消息发送给ASvr-289。
步骤504、ASvr-289收到所述消息后,根据目的用户的DAddr值(machao@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给machao的客户端。
步骤505、ASvr-289构造回复消息:目的地址为DAddr值(zhangfei@shu.com,289),源地址为DAddr值(machao@shu.com,289),回复消息内容为“发送成功标志”;判断回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的LSvrCDesc值指向自己,因此,ASvr-289直接根据回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。
步骤506、zhangfei的客户端在收到所述回复消息后,保存machao对应的ACode值289。
一个用户的客户端在发送在线消息时,经由该客户端接入的ASvr,将消息发送给目的用户的ASvr。消息目的地址是一个DAddr。
例六、zhangfei给在线用户Liubei发送在线消息,流程如下:
步骤601、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为DAddr值(liubei@shu.com,289),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤602、ASvr-289收到所述消息后,判断目的用户的DAddr值(zhangfei@shu.com,289)的LSvrCDesc值指向自己,于是,直接根据目的用户的DAddr值(liubei@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给Liubei的客户端。
例七、zhangfei给在线用户guanyc发送在线消息,流程如下:
步骤701、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为DAddr值(guanyc@shu.com,105),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤702、ASvr-289收到所述消息后,判断目的用户的DAddr值(guanyc@shu.com,105)的LSvrCDesc值指向其它LSvr,于是,按照该LSvrCDesc值,将该消息发送给ASvr-105。
步骤703、ASvr-105收到所述消息后,根据目的用户的DAddr值(guanyc@shu.com,105)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给guanyc的客户端。
上面发送离线消息和在线消息虽然是在一个HSvr内部的各个LSvr之间进行的,但其流程同样适用于HSvr之间的各个LSvr的消息交互。
下面以{caocao和guojia位于另外一个HSvr中,caocao的AccoAddr为caocao@wei.com,guojia的AccoAddr为guojia@wei.com,其账户信息都处于UDSvr-86101中,caocao接入了ASvr-86211,guojia处于离线状态}为例,举例说明。
在UDSvr-86101中通过如表1-86所示的账户信息表来保存相应账户的账户信息:
表1-86
AccoAddr | Password | ACode | Remark |
caocao@wei.com | ******** | 86211 | 接入ASvr-86211 |
guojia@wei.com | ******** | 0 | Offline |
在ASvr-86211中通过如表3-86所示的在线信息表来保存在线用户的描述信息:
表3-86
AccoAddr | RCode | SKey | ClientIP | ClientPort |
caocao@wei.com | 86101 | ******** | 相应IP地址 | 相应端口号 |
例八、zhangfei给在线用户caocao发送离线消息,流程如下:
步骤801、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为SPAddr值(caocao@wei.com,86101),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤802、ASvr-289收到所述消息后,判断目的用户的SPAddr值(caocao@wei.com,86101)的LSvrCDesc值指向其它LSvr,于是,按照该LSvrCDesc值,将消息发送给UDSvr-86101。
步骤803、UDSvr-86101收到所述消息后,根据SPAddr值(caocao@wei.com,86101)的AccoAddr,从如表1-86所示的账户信息表中确定对应的账户记录,发现对应的ACode为86211,不是0,于是,将目的用户的DAddr值(caocao@wei.com,86211)作为消息的目的地址,根据DAddr值(caocao@wei.com,86211)的LSvrCDesc值,将该消息发送给ASvr-86211。
步骤804、ASvr-86211收到所述消息后,根据目的用户的DAddr值(caocao@wei.com,86211)的AccoAddr,从如表3-86所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给caocao的客户端。
步骤805、ASvr-86211构造回复消息:目的地址为DAddr值(zhangfei@shu.com,289),源地址为DAddr值(caocao@wei.com,86211),回复消息内容为“发送成功标志”;判断回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的LSvrCDesc指向其它LSvr,于是,按照该LSvrCDesc值,将该回复消息发送给ASvr-289。
步骤806、ASvr-289收到所述回复消息后,根据回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。
步骤807、zhangfei的客户端在收到所述回复消息后,保存caocao对应的ACode值86211。
例九、zhangfei给在线用户caocao发送在线消息,流程如下:
步骤901、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为DAddr值(caocao@wei.com,86211),源地址为DAddr值(zhangfei@shu.com,289),消息内容为“Hi”。
步骤902、ASvr-289收到所述消息后,判断目的用户的DAddr值(caocao@wei.com,86211)的LSvrCDesc指向其它LSvr,于是,按照该LSvrCDesc值,将该消息发送给ASvr-86211。
步骤903、ASvr-86211收到所述消息后,根据目的用户的DAddr值(caocao@wei.com,86211)的AccoAddr,从如表3-86所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给caocao的客户端。
所述HSvr还可以进一步包括驻地识别服务器(RIDSvr,ResidenceIdentification Server),以用于接收驻地识别请求消息,提供驻地识别服务。
如图8所示,为本发明包括RIDSvr的分布式HSvr实例图。在该实例中,所述HSvr包括一个RIDSvr、两个UDSvr:位于北京的UDSvr-101和位于广州的UDSvr-201,以及四个ASvr:位于北京的ASvr为ASvr-105,位于广州的ASvr为ASvr-206,位于上海的ASvr为ASvr-218,位于成都的ASvr为ASvr-289。
所述RIDSvr的HCode,为其所属HSvr的HCode。
在RIDSvr中,可以建立AccoAddr与RCode的对应关系,以便于根据一个AccoAddr可以获取对应的RCode。
关于如何建立AccoAddr与RCode的对应关系,有多种方式,参见所述的《基于半永久地址的消息发送方法》发明专利。
在一个HSvr中用户规模比较小,UDSvr数量比较少时,可以采用比较粗放的方式:直接将UDSvr中账户信息表作为AccoAddr与RCode的对应关系。这种情况下,通过根据一个AccoAddr,查阅所有UDSvr中的账户信息表,来获取对应的RCode。例如,给每一个UDSvr发送驻地识别请求消息,消息中携带的识别目标为一个AccoAddr,相应UDSvr收到所述驻地识别请求消息后,根据识别目标,检索自己的账户信息表,在检索到目标纪录后,向请求者回复识别成功消息,请求者根据该回复消息,得到对应的RCode值。例如,相应UDSvr可以在回复消息中,直接携带所述识别目标和自己被指配的RCode值。
在一个HSvr中用户规模比较大,UDSvr数量比较多时,为了提高效率,所述的建立AccoAddr与RCode的对应关系可以是建立漫游表,在该漫游表中,按照AccoAddr保存对应的RCode。所述的按照AccoAddr保存对应的RCode可以直接是:按照AccoAddr的AddrBase保存对应的RCode。
在所述RIDSvr收到一个包括识别目标的驻地识别请求消息后,按照所建立的AccoAddr与RCode的对应关系,确定该识别目标对应的RCode;向所述请求侧回复所确定的RCode。一般地,所述识别目表为一个AccoAddr。在按照所述对应关系无法确定所述识别目标对应的RCode时,向所述请求侧回复RCode值0。
例如,所述请求侧是指所述驻地识别请求消息的源地址一侧,所述回复消息的目的地址可以为所述驻地识别请求消息的源地址。后面不再赘述。
为叙述方便,本发明将RCode值0视为无效的RCode值。但并不用于限定本发明。
这样,所述请求侧在收到回复的RCode后,如果判断该值为0,则确认所述识别目标对应无效的RCode,这种情况下,一般地,所述识别目标是一个无效的AccoAddr。
所述识别目标可以是一个AccoAddr的AddrBase。这时,可以根据该AddrBase与该RIDSvr的HCode得到一个AccoAddr。所述RIDSvr可以保存所拥有的HCode。
一般地,所述识别目标是一个AccoAddr。后面以此为例,但不用于限定。
通过建立HCode与RIDSvr的对应关系,可以在互联网中根据一个HCode确定一个RIDSvr。
建立一个HCode与一个RIDSvr的对应关系可以是:根据该HCode产生一个域名,在DNS中,将产生的域名指向该RIDSvr的IP地址。这样,在互联网中就可以根据一个HCode确定一个RIDSvr。例如:通过该HCode产生一个域名,解析所产生的域名,得到相应RIDSvr的IP地址。
根据一个HCode产生的域名可以直接是该HCode自身,也可以是根据该HCode和一个子域共同产生的域名。
以所述HSvr拥有HCode是shu.com为例,根据该HCode产生的域名可以直接是shu.com,也可以是将约定的字串“RIDSvr”作为子域,与shu.com一起产生域名RIDSvr.shu.com。这里以后者为例,在所述HSvr部署好后,在相应的DNS中将域名RIDSvr.shu.com指向该HSvr的RIDSvr的IP地址。
由上可知,在一个RIDSvr部署好后,例如相应的IP地址设置好后,根据该RIDSvr的HCode产生一个域名,在相应的DNS中将所产生的域名指向该RIDSvr的IP地址。这样,就可以根据一个AccoAddr的AddrHome向对应的RIDSvr发送驻地识别请求消息,以获取相应用户的RCode。
例如,一种驻地识别方法,以用于根据一个AccoAddr获取对应的RCode。
该方法包括如下步骤:
步骤01、根据所述AccoAddr的AddrHome产生相应的域名,通过解析所产生的域名得到所指向的RIDSvr的IP地址。
步骤02、根据得到的IP地址和约定的端口号,向所述RIDSvr发送包括识别目标的驻地识别请求消息,所述识别目标为所述AccoAddr。这里统一约定各个HSvr的RIDSvr的端口号。
步骤04、接收回复的RCode。
在步骤04之前,还可以进一步包括步骤03:所述RIDSvr在收到所述驻地识别请求消息后,按照所建立的AccoAddr与RCode的对应关系,确定所述识别目标对应的RCode;向所述请求侧回复所确定的RCode。这样,驻地识别请求方就可以接收到所回复的RCode。
一般地,在步骤03中,所述回复信息中进一步携带所述识别目标。
在步骤03中,如果所述RIDSvr无法确定所述识别目标对应的RCode,则说明不存在该识别目标对应的账户,可以向所述驻地识别请求侧回复表示“识别目标不存在”的消息。
关于RIDSvr的更多描述,参见所述的《基于半永久地址的消息发送方法》发明专利,以及所述的《基于半永久地址的消息寻址方法》发明专利,其中所述的RIDSvr,以及有关驻地识别请求方法,也适用于本发明,这里不再转摘。
上面在发送离线消息的流程中,如果UDSvr收到一个离线消息后,根据消息的目的用户的AccoAddr,无法从相应的账户信息表中确定对应的账户记录,则说明要么相应HSvr中不存在对应的账户,要么对应的账户搬迁到本HSvr的其它UDSvr中,也即,对应用户的RCode值由于用户的账户信息搬迁而发生了变化。
这种情况下,UDSvr可以直接向消息发送方发送回复消息,回复消息中可以携带表示“半永久地址无效”的信息。这样,消息发送方在收到该回复消息后,就可以重新获取所述用户的RCode值。
例如,在步骤303中,UDSvr-201根据SPAddr值(liubei@shu.com,201)的AccoAddr,无法从如表1所示的账户信息表中确定对应的账户记录,于是,UDSvr-201构造回复消息:目的地址为DAddr值(zhangfei@shu.com,289),源地址为SPAddr值(liubei@shu.com,201),回复消息内容为“半永久地址无效”。按照回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的LSvrCDesc,将该回复消息发送给ASvr-289;ASvr-289收到该回复消息后,根据回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。zhangfei这一侧在收到所述回复消息后,可以发起查询AccoAddr值liubei@shu.com的RCode的流程。
当然,在步骤303中,UDSvr-201在根据SPAddr值(liubei@shu.com,201)的AccoAddr,无法从如表1所示的账户信息表中确定对应的账户记录时,也可以查询AccoAddr值liubei@shu.com的RCode,并将查询结果回复给消息发送方。
当然,在步骤303中,UDSvr-201在根据SPAddr值(liubei@shu.com,201)的AccoAddr,无法从如表1所示的账户信息表中确定对应的账户记录时,也可以直接将所述消息转发给相应的RIDSvr,由该RIDSvr来查询AccoAddr值liubei@shu.com的RCode,并将查询结果回复给消息发送方。
特别地,在步骤303中,UDSvr-201在根据SPAddr值(liubei@shu.com,201)的AccoAddr,无法从如表1所示的账户信息表中确定对应的账户记录时,直接将所述消息转发给相应的RIDSvr,由该RIDSvr来查询AccoAddr值liubei@shu.com的RCode,并根据查询得到的RCode值,修正消息目的地址中的相应RCode值,然后,按照新目的地址的LSvrCDesc值,将该消息发送到相应的UDSvr。
上面在发送在线消息的流程中,如果相应ASvr在根据消息的目的用户的AccoAddr,无法从相应的在线信息表中确定对应的在线记录,则,该ASvr可以直接向消息发送方回复一个表示“动态接入地址无效”的回复消息。
例如,在步骤903中,ASvr-86211根据目的用户的DAddr值(caocao@wei.com,86211)的AccoAddr,无法从如表3-86所示的在线信息表中确定对应的在线记录,于是ASvr-86211构造回复消息:目的地址为DAddr值(zhangfei@shu.com,289),源地址为DAddr值(caocao@wei.com,86211),消息内容为“动态接入地址无效”。将该回复消息发送给ASvr-289;ASvr-289收到该回复消息后,根据回复消息的目的用户的DAddr值(zhangfei@shu.com,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。zhangfei这一侧在收到所述回复消息后,将caocao@wei.com对应的ACode值设置为0。这样,zhangfei给caocao发送消息时,可以发送离线消息。
实际当中,由于一个用户的ACode可能经常变动,因此,较佳地,上面在发送在线消息的流程中,如果相应ASvr在根据消息的目的用户的AccoAddr值,无法从相应的在线信息表中确定对应的在线记录,则,该ASvr可以直接将该消息的目的用户的SPAddr值作为消息的目的地址,然后,根据该SPAddr的LSvrCDesc值,将该消息作为离线消息发送给该用户的UDSvr。这里,按照驻地识别流程,该ASvr可以根据所述AccoAddr获取对应的RCode值。
特别地,为了减少对RDISvr的访问,较佳地,在发送在线消息时,在消息的目的地址中还携带目的用户的RCode,也即,发送在线消息时,消息的目的地址是一个PanoAddr。
例十、zhangfei给在线用户caocao发送在线消息,流程如下:
步骤1001、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为PanoAddr值(caocao@wei.com,86101,86103),源地址为PanoAddr值(zhangfei@shu.com,201,289),消息内容为“Hi”。
步骤1002、ASvr-289收到所述消息后,判断目的用户的PanoAddr值(caocao@wei.com,86101,86103)的ASvrCDesc值指向其它LSvr,于是,按照该ASvrCDesc值,将该消息发送给ASvr-86103。
步骤1003、ASvr-86103收到所述消息后,根据目的用户的PanoAddr值(caocao@wei.com,86101,86103)的AccoAddr,从如表3-86所示的在线信息表中确定对应的在线记录,操作失败;于是ASvr-86103将PanoAddr值(caocao@wei.com,86101,0)作为消息的目的地址,然后根据PanoAddr值(caocao@wei.com,86101,0)的RSvrCDesc值,将该消息发送给UDSvr-86101。
步骤1004、UDSvr-86101收到所述消息后,根据PanoAddr值(caocao@wei.com,86101,0)的AccoAddr,从如表1-86所示的账户信息表中确定对应的账户记录,发现对应的ACode为86211,不是0,于是,将PanoAddr值(caocao@wei.com,86101,86211)作为消息的目的地址,根据该PanoAddr的ASvrCDesc值,将该消息发送给ASvr-86211。
步骤1005、ASvr-86211收到所述消息后,根据目的用户的PanoAddr值(caocao@wei.com,86101,86211)的AccoAddr,从如表3-86所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给caocao的客户端。
步骤1006、ASvr-86211构造回复消息:目的地址为PanoAddr值(zhangfei@shu.com,201,289),源地址为PanoAddr值(caocao@wei.com,86101,86211),回复消息内容为“发送成功标志”;判断回复消息的目的用户的PanoAddr值(zhangfei@shu.com,201,289)的ASvrCDesc指向其它LSvr,于是,按照该ASvrCDesc值,将该回复消息发送给ASvr-289。
步骤1007、ASvr-289收到所述回复消息后,根据回复消息的目的用户的PanoAddr值(zhangfei@shu.com,201,289)的AccoAddr,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述回复消息发送给zhangfei的客户端。
步骤1008、zhangfei的客户端在收到所述回复消息后,保存caocao对应的ACode值86211。
较佳地,向zhangfei的客户端一侧回复caocao对应的ACode值的操作也可以由UDSvr-86101发起。例如,在步骤1004中,UDSvr-86101构造回复消息:目的地址为PanoAddr值(zhangfei@shu.com,201,289),源地址为PanoAddr值(caocao@wei.com,86101,86211),消息内容为“发送成功标志”;根据回复消息的目的用户的PanoAddr值(zhangfei@shu.com,201,289),的ASvrCDesc值,将该回复消息发送给ASvr-289。这样,就不需要再执行步骤1006至步骤1008的操作流程了。
实际当中,也可以选择在ASvr侧维护相应用户的好友的PanoAddr。
这种情况下,在步骤204中,UDSvr-201在鉴权成功后,还将xushu的好友信息发送给ASvr-105。或者,在步骤206中,ASvr-105在鉴权成功时,还从UDSvr-201获取xushu的好友信息。
所述好友信息中包括相应好友的SPAddr。这样,ASvr-105可以根据xushu的好友信息,生成xushu的好友列表,该好友列表中,是xushu的各个好友的PanoAddr,这些PanoAddr的ACode初始值一般为0。
按照这种方式,客户端在给其好友发送消息时,消息的目的地址中包括好友的AccoAddr。所述客户端接入的ASvr收到所述消息后,根据消息的目的地址中携带的好友的AccoAddr确定对应的PanoAddr,例如,从发送方的好友列表中确定对应的PanoAddr。ASvr根据所述确定的PanoAddr来决定发送离线消息还是发送在线消息。
本发明提出一种消息分流方法,用于ASvr分流来自客户端的消息。所述消息的目的地址包括目的用户的AccoAddr。所述方法包括如下步骤:
步骤51、所述ASvr根据消息的目的地址中的AccoAddr确定对应的PanoAddr。例如,从发送方的好友列表中确定对应的PanoAddr。
步骤52、所述ASvr判断所确定的PanoAddr的ACode是否为0,如果是,则执行步骤53;否则,执行步骤56。
步骤53、所述ASvr将所述消息发送给所确定的PanoAddr的RSvrCDesc指向的UDSvr。
步骤56、所述ASvr将所述消息发送给所确定的PanoAddr的ASvrCDesc指向的ASvr。
在步骤56之前,进一步包括:所述ASvr判断所确定的PanoAddr的ASvrCDesc是否指向自己,如果是,则所述ASvr直接根据该PanoAddr的AccoAddr,从在线信息表中确定在线记录,并按照所确定的在线记录中的ClientConnDesc,将所述消息发送给对应的客户端,然后结束流程;否则,才执行步骤56。
按照所述消息分流方法,可以对上述例一至例十的各个具体实施例进行改造。
例十一、zhangfei给在线用户Liubei发送离线消息,流程如下:
步骤1101、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为liubei的AccoAddr值,源地址为zhangfei的AccoAddr值,消息内容为“Hi”。
步骤1102、ASvr-289收到所述消息后,根据目的地址中的AccoAddr值确定对应的PanoAddr,得到PanoAddr值(liubei@shu.com,201,0),判断该PanoAddr的ACode值为0,于是,将该消息发送给该PanoAddr的RSvrCDesc指向的UDSvr-201,消息的目的地址为liubei的PanoAddr值(liubei@shu.com,201,0),源地址为zhangfei的PanoAddr值(zhangfei@shu.com,201,289)。这里,ASvr-289保存了zhangfei的PanoAddr值,并在zhangfei的好友列表中保存了liubei的PanoAddr值(liubei@shu.com,201,0)。
步骤1103、UDSvr-201收到所述消息后,根据目的地址中PanoAddr值(liubei@shu.com,201,0)的AccoAddr,从如表1所示的账户信息表中确定对应的账户记录,发现该账户记录的ACode为289,不是0,于是,将liubei的PanoAddr值(liubei@shu.com,201,289)作为消息的目的地址,根据该PanoAddr的ASvrCDesc,将该消息发送给ASvr-289。
步骤1104、ASvr-289收到所述消息后,根据目的用户的AccoAddr值liubei@shu.com,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给Liubei的客户端,消息的目的地址为AccoAddr值liubei@shu.com,源地址为AccoAddr值zhangfei@shu.com。
在步骤1104中,ASvr-289还将liubei的好友列表中,zhangfei的PanoAddr更新为(zhangfei@shu.com,201,289)。这样,在liubei给zhangfei发送消息时,ASvr-289即可直接根据zhangfei的PanoAddr值(zhangfei@shu.com,201,289),来发送在线消息。
在步骤1103中,UDSvr-201还构造回复消息:目的地址为PanoAddr值(zhangfei@shu.com,201,289),源地址为PanoAddr值(liubei@shu.com,201,289),回复消息内容为“发送成功标志”;根据回复消息的目的地址中PanoAddr的ASvrCDesc,将该回复消息发送给ASvr-289;ASvr-289收到该回复消息后,将zhangfei的好友列表中liubei对应的ACode值更新为新值289。这样,在zhangfei再给liubei发送消息时,ASvr-289即可直接根据PanoAddr值(liubei@shu.com,201,289),来发送在线消息。
例十二、zhangfei给在线用户Liubei发送在线消息,流程如下:
步骤1201、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为liubei的AccoAddr值,源地址为zhangfei的AccoAddr值,消息内容为“Hi”。
步骤1202、ASvr-289收到所述消息后,根据消息的目的地址中的AccoAddr值确定对应的PanoAddr,得到PanoAddr值(liubei@shu.com,201,289),判断该PanoAddr的ACode值不是0,于是,将该消息作为在线消息处理;由于该PanoAddr的ASvrCDesc指向自己,于是,直接根据目的用户的AccoAddr值liubei@shu.com,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给相应的客户端,消息的目的地址为AccoAddr值liubei@shu.com,源地址为AccoAddr值zhangfei@shu.com。
例十三、zhangfei给在线用户caocao发送离线消息,流程如下:
步骤1301、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为caocao的AccoAddr值,源地址为zhangfei的AccoAddr值,消息内容为“Hi”。
步骤1302、ASvr-289收到所述消息后,根据目的地址中的AccoAddr值确定对应的PanoAddr,得到PanoAddr值(caocao@wei.com,86101,0),判断该PanoAddr的ACode值为0,于是,将该消息发送给该PanoAddr的RSvrCDesc指向的UDSvr-86101,消息的目的地址为caocao的PanoAddr值(caocao@wei.com,86101,0),源地址为zhangfei的PanoAddr值(zhangfei@shu.com,201,289)。这里,ASvr-289保存了zhangfei的PanoAddr值,并在zhangfei的好友列表中保存了caocao的PanoAddr值(caocao@wei.com,86101,0)。
步骤1303、UDSvr-86101收到所述消息后,根据目的地址中PanoAddr值(caocao@wei.com,86101,0)的AccoAddr,从如表1所示的账户信息表中确定对应的账户记录,发现该账户记录的ACode为86211,不是0,于是,将caocao的PanoAddr值(caocao@wei.com,86101,86211)作为消息的目的地址,根据该PanoAddr的ASvrCDesc,将该消息发送给ASvr-86211。
步骤1304、ASvr-86211收到所述消息后,根据目的用户的AccoAddr值caocao@wei.com,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给相应的客户端,消息的目的地址为AccoAddr值caocao@wei.com,源地址为AccoAddr值zhangfei@shu.com。
在步骤1304中,ASvr-86211还将caocao的好友列表中,zhangfei的PanoAddr更新为(zhangfei@shu.com,201,289)。这样,在caocao给zhangfei发送消息时,ASvr-86211即可直接根据zhangfei的PanoAddr值(zhangfei@shu.com,201,289),来发送在线消息。
在步骤1303中,UDSvr-86101还构造回复消息:目的地址为PanoAddr值(zhangfei@shu.com,201,289),源地址为PanoAddr值(caocao@wei.com,86101,86211),回复消息内容为“发送成功标志”;根据回复消息的目的地址中PanoAddr的ASvrCDesc,将该回复消息发送给ASvr-289;ASvr-289收到该回复消息后,将zhangfei的好友列表中caocao对应的ACode值更新为新值86211。这样,在zhangfei再给caocao发送消息时,ASvr-289即可直接根据PanoAddr值(caocao@wei.com,86101,86211),来发送在线消息。
例十四、zhangfei给在线用户caocao发送在线消息,流程如下:
步骤1401、zhangfei客户端向接入的ASvr-289发送消息,消息的目的地址为caocao的AccoAddr值,源地址为zhangfei的AccoAddr值,消息内容为“Hi”。
步骤1402、ASvr-289收到所述消息后,根据消息的目的地址中的AccoAddr值确定对应的PanoAddr,得到PanoAddr值(caocao@wei.com,86101,86211),判断该PanoAddr的ACode值不是0,于是,将该消息发送给该PanoAddr的ASvrCDesc指向的ASvr-86211,消息的目的地址为caocao的PanoAddr值(caocao@wei.com,86101,86211),源地址为zhangfei的PanoAddr值(zhangfei@shu.com,201,289)。这里,ASvr-289保存了zhangfei的PanoAddr值,并在zhangfei的好友列表中保存了caocao的PanoAddr值(caocao@wei.com,86101,86211)。
步骤1403、ASvr-86211收到所述消息后,根据目的用户的AccoAddr值caocao@shu.com,从如表3所示的在线信息表中确定对应的在线记录;按照该记录中的ClientConnDesc,将所述消息发送给相应的客户端,消息的目的地址为AccoAddr值caocao@wei.com,源地址为AccoAddr值zhangfei@shu.com。
在一个用户登出时,向其接入的ASvr发送登出请求,该用户接入的ASvr收到该请求后,可以清除该用户接入的痕迹,包括:向该用户的UDSvr发送登出请求,请求中包括该用户的AccoAddr,该UDSvr收到该登出请求后,将该用户的AccoAddr,从账户信息表中确定对应的账户记录,将该账户记录的ACode值设置为0。
所述清除用户接入的痕迹的操作还包括:删除对应的在线记录,拆除面向该用户客户端的连接,
根据一个SPAddr的LSvrCDesc,可以确定该SPAddr所对应的账户处于互联网中哪一个UDSvr中。这样,根据一个用户的SPAddr给该用户发送离线消息时,就可以直接将该消息发送到该用户的UDSvr中,从而,减少了消息迂回。
同样,根据一个DAddr的LSvrCDesc,可以确定该DAddr所对应的账户接入到互联网中哪一个ASvr。这样,根据一个用户的DAddr给该用户发送在线消息时,就可以直接将该消息发送到该用户的ASvr中,从而,减少了消息迂回。
根据一个用户的AccoAddr,按照驻地识别方法,可以获取该用户的SPAddr,这样,对应一个用户来说,不论其好友如何变更常住地,也即如何更换其RSvr,也即如何更换其UDSvr,该用户总能快捷地给该好友发送离线消息。
在用户在线时,总是可以获取该用户的DAddr,例如,通过发送离线消息,来获得该用户的DAddr。根据一个用户的DAddr,能够快捷地给该用户发送在线消息。
由于对于HSvr的访问消息被分流到各个UDSvr和ASvr中,因此,消除了HSvr中的瓶颈因素,减少了消息迂回,从而,有助于节省网络资源和实现超大规模HSvr的部署。
特别地,由于一个UDSvr所对应的常住地的人们中,大多数人的活动并没有偏离该常住地,因此,针对该常住地设置的ASvr将会大量接入该常住地的用户。这比哪些无视常住地因素来设置用户数据存放设备的架构,所产生的UDSvr与ASvr间消息流处于不受控的状态比起来,更加有助于规划网络消息流,从而能够更好地规划网络。例如,按照本发明的分布式HSvr,可以让成都市的用户所对应的UDSvr位于成都,而大部分成都用户都将接入到成都的ASvr中。可以通过提高成都UDSvr与成都ASvr之间通信的效率,例如将成都UDSvr与成都ASvr部署在同城,或同一个机房,这样,就可以改善整个系统的通信效率。而按照传统方式处理,成都市用户对应的账户可能分布于全球多个UDSvr之中,这样,就会出现因为成都的用户,产生多个UDSvr与成都的ASvr进行同样的消息交互的情况。由于这多个UDSvr的部署没有以用户常住地为依据,因此,处于随机的部署状态,这显然不利于网络优化。
本领域技术人员都知道,为了提高检索效率,在所述账户信息表,或在线信息表中,或常住地表中,可以将相应AccoAddr的AddrHome部分省去,而只保留其AddrBase部分。相应地,对这样的表进行检索时,只根据一个AccoAddr的AddrBase部分即可。
本领域技术人员都知道,本发明中,相互通信的服务器或模块之间,可以通过IP网络实现互联。在二者距离较近时,也可以通过采用RS485通讯方式进行通信。由于单纯两个模块或服务器之间的通信,根据实际情况,可以有相应的成熟技术来实现,因此,本发明不再就这方面进行赘述。
本发明中,引入的常住地因素,并不用于限定所述分布式RSvr或HSvr的实际部署。例如,不同常住地的UDSvr,并非一定要分别部署于相应的常住地,实际当中,在运营初期,用户规模较小,用户间交互数据量不大的情况下,不同常住地的UDSvr可以部署在同一城市,甚至是同一个机房。
本发明提供了HSvr互联互通架构下,离线消息发送和在线消息发送方法。使得跨域的消息交互,可以更加快捷。
本领域技术人员知道,将本发明方案简单地用于HSvr内部的,用户间发送离线消息和在线消息时,可以进行适当的显而易见的简化,例如,在HSvr内部,根据一个RCode即可确定一个LSvr,而不必使用到一个LSvr的LSvrCDesc的HCode部分。
以上仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之类,所作的任何修改、改进、等同替换等均应包含在本发明的保护范围之内。
Claims (10)
1.一种HSvr,其特征在于,所述HSvr包括多个UDSvr和多个ASvr;UDSvr和ASvr都被称为叶子服务器(LSvr),每个LSvr被指配相应的RCode,按照被指配的RCode,各个LSvr间可以进行消息交互;
所述UDSvr中保存相应常住地用户的数据信息;所述UDSvr用于接收离线消息,保存该消息,或者在所述消息的目的用户离线时保存该消息;
所述ASvr提供用户客户端接入能力,以及提供在线用户间进行消息交互的能力。
2.一种离线消息发送方法,其特征在于,所述消息的目的地址包括目的用户的SPAddr,该方法包括以下步骤:
a、根据目的用户的SPAddr的LSvrCDesc,将所述消息发送给目的用户的UDSvr;
b、UDSvr收到所述消息后,根据根据消息的目的地址中的AccoAddr,从账户信息表中确定目标用户,保存该消息。
3.一种在线消息发送方法,其特征在于,所述消息的目的地址包括目的用户的DAddr,该方法包括以下步骤:
a、根据目的用户的DAddr的LSvrCDesc,将所述消息发送给目的用户的ASvr;
b、ASvr根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,判断是否成功,如果是,则执行步骤c:将所述消息发送给该目标用户的客户端;否则执行步骤d:将所述消息发送给所述AccoAddr的UDSvr。
4.一种离线消息处理方法,其特征在于,该方法包括以下步骤:
b、UDSvr收到消息后,根据根据消息的目的地址中的AccoAddr,从账户信息表中确定目标用户,判断目标用户是否在线,如果是,则执行步骤c:将所述消息发送给目标用户当前接入的ASvr;否则,执行步骤d:保存该消息。
5.一种在线消息处理方法,其特征在于,该方法包括以下步骤:
b、ASvr根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,判断是否成功,如果是,则执行步骤c:将所述消息发送给该目标用户的客户端;否则执行步骤d:将所述消息发送给所述AccoAddr的UDSvr。
6.一种消息发送方法,其特征在于,该方法包括以下步骤:
a、客户端将所述消息发送给接入的ASvr;
b、所述ASvr判断消息的目的LSvr是否是自己,如果是,则执行步骤c:根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,将所述消息发送给该目标用户的客户端,结束流程;否则,执行步骤d:将所述消息发送给目的LSvr。
7.根据权利要求6所述的方法,其特征在于,所述目的LSvr是UDSvr;
步骤d之后进一步包括步骤e:所述UDSvr收到所述消息后,根据消息的目的地址中的AccoAddr,从账户信息表中确定目标用户,判断目标用户是否在线,如果是,则执行步骤f:将所述消息发送给目标用户当前接入的ASvr,所述ASvr收到所述消息后,根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,将所述消息发送给该目标用户的客户端,结束流程;否则,执行步骤g:保存当前消息。
8.根据权利要求6所述的方法,其特征在于,所述目的LSvr是ASvr;
步骤d之后进一步包括步骤e:所述ASvr收到所述消息后,根据消息的目的地址中的AccoAddr,从在线信息表中确定目标用户,将所述消息发送给该目标用户的客户端。
9.一种消息分流方法,用于ASvr分流来自客户端的消息,其特征在于,该方法包括以下步骤:
所述ASvr判断目的用户的ACode是否为0,如果是,则将所述消息发送给目的用户的UDSvr;否则,所述ASvr将所述消息发送给目的用户的ASvr。
10.一种登入方法,其特征在于,该方法包括以下步骤:
a、客户端向ASvr发送登入请求,请求中携带当前用户的AccoAddr值,以及登入口令;
b、所述ASvr收到所述登入请求后,向相应的UDSvr发送鉴权请求,请求中携带所述用户的AccoAddr值、当前ASvr的ACode值和登入口令;
c、所述UDSvr在收到登入请求后,针对所述用户,执行鉴权操作,向所述ASvr返回鉴权结果;
d、所述ASvr在收到所述UDSvr的鉴权回复后,向所述客户端返回鉴权结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610529329.6A CN107580012A (zh) | 2016-07-05 | 2016-07-05 | 分布式HSvr |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610529329.6A CN107580012A (zh) | 2016-07-05 | 2016-07-05 | 分布式HSvr |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107580012A true CN107580012A (zh) | 2018-01-12 |
Family
ID=61049076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610529329.6A Pending CN107580012A (zh) | 2016-07-05 | 2016-07-05 | 分布式HSvr |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107580012A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417636A (zh) * | 2018-04-28 | 2019-11-05 | 黄楚媛 | 一种去中心化的自组织即时通信系统及其方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801814A (zh) * | 2005-10-11 | 2006-07-12 | 华为技术有限公司 | 一种离线消息发送和接收方法 |
CN101707620A (zh) * | 2009-11-26 | 2010-05-12 | 迈普通信技术股份有限公司 | 一种检测Web认证用户重复登录的方法和系统 |
US20120151582A1 (en) * | 2010-12-14 | 2012-06-14 | Microsoft Corporation | Offline Scan, Clean and Telemetry Using Installed Antimalware Protection Components |
CN103391333A (zh) * | 2012-05-08 | 2013-11-13 | 王正伟 | 支持guid迁移的网络及相关消息处理方法 |
CN104125310A (zh) * | 2013-04-23 | 2014-10-29 | 王正伟 | 基于半永久地址的消息发送方法 |
-
2016
- 2016-07-05 CN CN201610529329.6A patent/CN107580012A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801814A (zh) * | 2005-10-11 | 2006-07-12 | 华为技术有限公司 | 一种离线消息发送和接收方法 |
CN101707620A (zh) * | 2009-11-26 | 2010-05-12 | 迈普通信技术股份有限公司 | 一种检测Web认证用户重复登录的方法和系统 |
US20120151582A1 (en) * | 2010-12-14 | 2012-06-14 | Microsoft Corporation | Offline Scan, Clean and Telemetry Using Installed Antimalware Protection Components |
CN103391333A (zh) * | 2012-05-08 | 2013-11-13 | 王正伟 | 支持guid迁移的网络及相关消息处理方法 |
CN104125310A (zh) * | 2013-04-23 | 2014-10-29 | 王正伟 | 基于半永久地址的消息发送方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417636A (zh) * | 2018-04-28 | 2019-11-05 | 黄楚媛 | 一种去中心化的自组织即时通信系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101141420B (zh) | 私网与公网进行数据通信的方法及系统 | |
CN101699801B (zh) | 一种数据传输方法及传输数据的虚拟对等网络系统 | |
CN100369027C (zh) | 用于促进不同服务提供商之间即时通讯事务的方法和系统 | |
CN104811371B (zh) | 一种全新的即时通信系统 | |
CN101217508B (zh) | 一种基于即时通信平台的网络代理系统及其实现方法 | |
CN101667918B (zh) | 协同工作的实现方法及其系统 | |
US20040148406A1 (en) | Network system for establishing peer-to-peer communication | |
CN102948132A (zh) | 分布式虚拟网络网关 | |
CN104468805B (zh) | 消息路由装置和方法 | |
CN104158684B (zh) | 基于开放式智能网关平台的网关设备状态跟踪方法 | |
CN102790808A (zh) | 一种域名解析方法和系统、一种客户端 | |
CN108881354A (zh) | 一种推送信息存储方法、装置、服务器和计算机存储介质 | |
CN101090548A (zh) | 移动即时通信中一个手机号码实现多个虚拟身份的方法 | |
CN102882763A (zh) | 一种实现社区联合的方法和装置 | |
CN105871698A (zh) | 一种即时通讯服务的管理方法与系统 | |
CN104821908A (zh) | 支持专享服务的即时通信方法和系统 | |
CN106533894B (zh) | 一种全新的安全的即时通信体系 | |
CN104125310B (zh) | 基于半永久地址的消息发送方法 | |
CN108718236A (zh) | 互联网自组织汇流的数据传输方法 | |
CN102035655A (zh) | 端到端即时通讯的实现方法、端到端即时通讯终端及系统 | |
CN104253798A (zh) | 一种网络安全监控方法和系统 | |
CN107580012A (zh) | 分布式HSvr | |
JP5190922B2 (ja) | コミュニティ通信ネットワークおよび通信制御方法 | |
CN109067905A (zh) | 一种去中心化的网络应用的实现方法 | |
CN112995139A (zh) | 一种可信网络、可信网络的构建方法和构建系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180112 |
|
WD01 | Invention patent application deemed withdrawn after publication |