CN102404191A - 路由方法和装置 - Google Patents
路由方法和装置 Download PDFInfo
- Publication number
- CN102404191A CN102404191A CN2010102867465A CN201010286746A CN102404191A CN 102404191 A CN102404191 A CN 102404191A CN 2010102867465 A CN2010102867465 A CN 2010102867465A CN 201010286746 A CN201010286746 A CN 201010286746A CN 102404191 A CN102404191 A CN 102404191A
- Authority
- CN
- China
- Prior art keywords
- request
- server
- address information
- variable
- length field
- 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.)
- Granted
Links
Abstract
本发明公开了一种路由方法和装置,属于网络技术领域。该方法包括:接收携带变长字段的请求,所述请求的变长字段中包含所述请求经过的各个服务器的地址信息;判断所述请求是否在本地执行,如果是,则执行所述请求,并根据预设规则在所述变长字段中保存的地址信息中查询指定服务器的地址信息;根据查询到的地址信息,将所述请求的响应发送给所述指定服务器。该装置包括:接收模块、判断模块、执行模块、查询模块和发送模块。本发明以方便快捷的方式实现复杂系统的路由,并且可以根据业务逻辑需要跳转到任何一个上层服务器,增加了协议和逻辑的灵活性,并减少了现有解决方案的复杂度。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种路由方法和装置。
背景技术
路由是网络层的数据包转发设备。现有技术一般通过路由器转发数据包来实现网络互连。目前比较通用的一种路由方法是采用将上层IP存放在本地session中,并生成唯一的seq,将该seq存放在包体的预留字段中,带到下层server;收到下层server回包的时候,从包体的预留字段中,取出seq,根据该sequence从session中取出上层ip,然后实现路由功能。
现有技术中还有一种路由方法是采用在协议包头中填写上层IP地址,主要用于下层服务器是interface加server的架构的场景。在这个场景下,下层服务器的interface负责接包,然后根据一定的规则给下层server发包,server收到包处理后,不再回给interface,而是直接回到上层server,这个时候,就需要在包头中填入上层server的IP以完成路由。
现有技术至少具有如下缺点:
现有技术中第一种路由方法中,每一层server都需要在本地存储上层ip,通过异步的方式来实现复杂路由,这种方式增加了编码工作量,增加了每层服务器的架构设计的复杂度;
现有技术中第二种路由方法中,需要在包头中增加上层server的IP地址,无法解决需要跳过两层interace或需要跳过多层interface的情况。
并且上述两种方案都无法解决根据不同的业务逻辑回包到不同的上层server的情况。
发明内容
本发明实施例提供了一种路由方法和装置。所述技术方案如下:
一种路由方法,包括:
接收携带变长字段的请求,所述请求的变长字段中包含所述请求经过的各个服务器的地址信息;
判断所述请求是否在本地执行,如果是,则执行所述请求,并根据预设规则在所述变长字段中保存的地址信息中查询指定服务器的地址信息;
根据查询到的地址信息,将所述请求的响应发送给所述所述指定服务器。
所述变长字段为接入层的服务器接收到请求时写入的。
所述响应中包括所述请求,相应地,将所述请求的响应发送给所述所述指定服务器还包括:
当所述指定服务器接收到所述响应时,将所述请求中所述指定服务器对应的地址信息清除。
所述方法还包括:
当所述请求不在本地执行,则将本地地址信息写入所述变长字段,并将写入后的请求转发至下一层服务器。
将本地地址信息写入所述变长字段,具体包括:
将地址信息、预设类型和所述地址信息的长度写入所述变长字段。
一种路由装置,包括:
接收模块,用于接收携带变长字段的请求,所述请求的变长字段中包含所述请求经过的各个服务器的地址信息;
判断模块,用于判断所述请求是否在本地执行,如果是,则触发用于执行所述请求的执行模块,并触发用于根据预设规则在所述变长字段中保存的地址信息中查询指定服务器的地址信息的查询模块;
发送模块,用于根据查询到的地址信息,将所述请求的响应发送给所述指定服务器。
所述变长字段为接入层的服务器接收到请求时写入的。
所述响应中包括所述请求,相应地,所述装置还包括:
清除模块,用于当接收到所述响应时,将所述请求中对应的地址信息清除。
所述装置还包括:
写入模块,用于当所述请求不在本地执行,则将本地地址信息写入所述变长字段,并将写入后的请求转发至下一层服务器。
所述写入模块具体用于将地址信息、预设类型和所述地址信息的长度写入所述变长字段。
本发明实施例提供的技术方案的有益效果是:
通过在集群服务器中将地址信息写入变长字段中以供寻址,并根据写入的地址信息进行任意层的跳转,不仅以方便快捷的方式实现复杂系统的路由,并且可以根据业务逻辑需要跳转到任何一个上层服务器,增加了协议和逻辑的灵活性,并减少了现有解决方案的复杂度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种路由方法的流程图;
图2是本发明实施例提供的又一种路由方法的流程图;
图3是本发明实施例提供的一种路由装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
IP:因特网上给每条主机或者设计的唯一标志
Sequence:序列号,一般是唯一的用来标识请求包和返回包的序列号。
Session:本地存储的数据,用于在server交互时,存储信息以便在回包的时候利用,可以采用共享内存存储,也可以采用进程内的缓存存储。
实施例1
为了增强协议和逻辑的灵活性,本发明实施例提供了一种路由方法,参见图1,该方法包括:
101:接收携带变长字段的请求,所述请求的变长字段中包含所述请求经过的各个服务器的地址信息;
102:判断所述请求是否在本地执行,如果是,则执行步骤103;
103:执行所述请求,并根据预设规则在所述变长字段中保存的地址信息中查询指定服务器的地址信息;
104:根据查询到的地址信息,将所述请求的响应发送给所述所述指定服务器。
所述变长字段为接入层的服务器接收到请求时写入的。
所述响应中包括所述请求,相应地,将所述请求的响应发送给所述所述指定服务器还包括:
当所述指定服务器接收到所述响应时,将所述请求中所述指定服务器对应的地址信息清除。
所述方法还包括:
当所述请求不在本地执行,则将本地地址信息写入所述变长字段,并将写入后的请求转发至下一层服务器。
将本地地址信息写入所述变长字段,具体包括:
将地址信息、预设类型和所述地址信息的长度写入所述变长字段。
本发明实施例提供的方法,通过在集群服务器中将地址信息写入变长字段中以供寻址,并根据写入的地址信息进行任意层的跳转,不仅以方便快捷的方式实现复杂系统的路由,并且可以根据业务逻辑需要跳转到任何一个上层服务器,增加了协议和逻辑的灵活性,并减少了现有解决方案的复杂度。
实施例2
为了增强协议和逻辑的灵活性,本发明实施例提供了一种路由方法,参见图2,该方法包括:
201:当接入层的服务器接收到来自用户层的请求时,在携带该请求的数据包中写入变长字段,并将该写入后的数据包下发;
在本发明实施例中,当接收到来自用户层的请求时,需要对携带该请求的数据包进行初始化,即在数据包的协议包头和包体之间增加一个变长字段,优选地,该变长字段的类型可以为tlv格式,该格式包含类型(Type),长度(Length)和信息(Valve)三部分。该变长字段可以为wLen+stField1+stField2+...+stFieldN,其中wlen为后面多个tlv的总长度,stField就是tlv字段。
其中,tlv格式是一种变长的数据格式,分为类型(Type),长度(Length)和信息(Valve)三部分,其中,Type用于区分不同意义的字段,而长度和信息则分别为信息的长度和信息的具体内容。
可选地,该变长字段的类型还可以为只包含类型和服务器地址信息两部分的数据格式。
202:当前服务器接收到包含变长字段的请求(即写入变长字段的数据包)时,将当前服务器所分配到的地址信息写入该请求;
其中,该请求的变长字段中包含该请求经过的各个服务器的地址信息,需要说明的是,系统可以将变长字段中未包括的服务器设置为必须返回的服务器,即当请求完成后,其响应必然要跳转到该未包括的服务器。
优选地,该地址信息包括服务器IP、端口号和预设类型,其中,服务器IP和端口号为预先分配的,预设类型为协议制定者统一分配,给每一层服务器分配一个。
在本发明实施例中,请求是通过逐层传递而下发的,并由响应该请求的服务器进行处理,当服务器接收到包含变长字段的请求时,将地址信息中的服务器IP和端口号写入变长字段的信息部分,即写入tlv的Value部分,并将预设类型写入tlv的Type部分,进一步地,当该变长字段为tlv格式时,该地址信息还可以包括信息长度,可将该信息长度写入tlv的Length部分,在一般情况下,服务器IP和端口号一共为6字节,因此,Length部分可以为6。
需要说明的是,该变长字段也可以是tlv格式以外的字段格式,而在写入的地址信息也可以只有服务器IP、端口号和预设类型,该格式较tlv格式的变长字段简化。
203:判断当前服务器是否是执行该请求的服务器,如果是,则执行步骤205;如果否,则执行步骤204;
204:将写入后的请求下发至下一层服务器,结束;
在本发明实施例中,当前接收到请求的服务器当需要将该请求转发至下一层服务器时,将写入后的请求发至该下一层服务器。
该步骤202-204还可以是先判断该请求是否需在本地执行,如果是,则执行步骤205,如果否,则将服务器的本地地址信息写入变长字段,并将写入后的请求发至下一层服务器。
进一步地,若获知当前请求为不合法请求时,可直接将该不合法请求跳转回接入层的服务器。
205:执行该请求,并根据预设规则在请求的变长字段保存的地址信息中查询指定服务器的地址信息;
其中,该预设规则是指程序开发人员所预设的哪些响应应返回给哪些指定服务器。如,对于查询请求,按照预设规则,需返回给逻辑层服务器,等等。
206:根据查询到的地址信息,将请求的响应发送给指定服务器。
在本发明实施例中,当服务器接收到请求时,该请求的变长字段中已经存储了所有向上的上层服务器的地址信息,本层服务器处理完该请求时,按照服务器预设规则,根据预先存储的服务器地址信息将该请求的响应发送给指定服务器,即使得响应可以跳转到任何一个上层服务器中,无需通过层层转发,不仅增加了协议和逻辑的灵活性,且减少了现有解决方案的复杂度。
进一步地,当该指定服务器接收到响应时,该响应包含其对应的请求,则将请求中变长字段内该指定服务器对应的地址信息清除,从而节约了代码,也节约了网络资源。
举例说明,若接入层的服务器接收到一调出10条最近消息记录的请求,则在该请求中写入一变长字段wLen,并将该写入变长字段后的请求发送给下一层服务器,下一层服务器可以为逻辑层服务器,该服务器接收到该写入后的请求,将自身的服务器IP、端口号和预设类型2写入请求,使得该变长字段为wLen+stField1(stField1中包含服务器IP 61.81.110.0、端口号21和预设类型2)并将请求下发至索引层服务器,索引层服务器接收到该请求后,将自身的服务器IP、端口号和预设类型3写入请求,使得该变长字段为wLen+stField1+stField2(stField1中包含服务器IP 61.81.110.0、端口号21和预设类型2;stField2中包含服务器IP 61.81.115.0、端口号108和预设类型3),并将请求下发至沉淀层服务器,沉淀层服务器接收到该请求后,将自身的服务器IP、端口号和预设类型4写入请求,使得该变长字段为wLen+stField1+stField2+stField3(stField1中包含服务器IP 61.81.110.0、端口号21和预设类型2;stField2中包含服务器IP61.81.115.0、端口号108和预设类型3;stField3中包含服务器IP 61.81.115.8、端口号110和预设类型4),并处理该请求,调出10条最近消息记录,将所述记录和包含变长字段的请求打包成一响应,根据系统预设规则将该响应跳转给预设的服务器,如该沉淀层所反馈的响应必须反馈给逻辑层服务器,则根据变长字段中的stField1,将该响应跳转给stField1中所指定地址的服务器,当该指定地址的服务器接收到该响应后,清除响应中该服务器的地址信息。
在本实施例中所述的请求,可以为搜索请求、提取请求或其他网络技术中常用的数据请求,本发明实施例对此不做具体限定。
本发明实施例提供的方法,通过在集群服务器中将地址信息写入变长字段中以供寻址,并根据写入的地址信息进行任意层的跳转,不仅以方便快捷的方式实现复杂系统的路由,并且可以根据业务逻辑需要跳转到任何一个上层服务器,增加了协议和逻辑的灵活性,并减少了现有解决方案的复杂度。
实施例3
为了增强协议和逻辑的灵活性,本发明实施例提供了一种路由装置,参见图3,该装置包括:
接收模块301,用于接收携带变长字段的请求,该请求的变长字段中包含该请求经过的各个服务器的地址信息;
判断模块302,用于判断该请求是否在本地执行,如果是,则触发用于执行该请求的执行模块303,并触发用于根据预设规则在该变长字段中保存的地址信息中查询指定服务器的地址信息的查询模块304;
发送模块305,用于根据查询到的地址信息,将该请求的响应发送给该指定服务器。
该变长字段为接入层的服务器接收到请求时写入的。
该响应中包括该请求,相应地,该装置还包括:
清除模块306,用于当接收到该响应时,将该请求中对应的地址信息清除。
该装置还包括:
写入模块307,用于当该请求不在本地执行,则将本地地址信息写入该变长字段,并将写入后的请求转发至下一层服务器。
该写入模块307具体用于将地址信息、预设类型和该地址信息的长度写入该变长字段。
本实施例提供的装置,具体可以为服务器,与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例提供的装置,通过在集群服务器中将地址信息写入变长字段中以供寻址,并根据写入的地址信息进行任意层的跳转,不仅以方便快捷的方式实现复杂系统的路由,并且可以根据业务逻辑需要跳转到任何一个上层服务器,增加了协议和逻辑的灵活性,并减少了现有解决方案的复杂度。
本发明实施例提供的上述技术方案的全部或部分可以通过程序指令相关的硬件来完成,所述程序可以存储在可读取的存储介质中,该存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种路由方法,其特征在于,包括:
接收携带变长字段的请求,所述请求的变长字段中包含所述请求经过的各个服务器的地址信息;
判断所述请求是否在本地执行,如果是,则执行所述请求,并根据预设规则在所述变长字段中保存的地址信息中查询指定服务器的地址信息;
根据查询到的地址信息,将所述请求的响应发送给所述指定服务器。
2.根据权利要求1所述的方法,其特征在于,所述变长字段为接入层的服务器接收到请求时写入的。
3.根据权利要求1所述的方法,其特征在于,所述响应中包括所述请求,相应地,所述方法还包括:
当接收到所述响应时,将所述请求中对应的地址信息清除。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述请求不在本地执行,则将本地地址信息写入所述变长字段,并将写入后的请求转发至下一层服务器。
5.根据权利要求4所述的方法,其特征在于,将本地地址信息写入所述变长字段,具体包括:
将地址信息、预设类型和所述地址信息的长度写入所述变长字段。
6.一种路由装置,其特征在于,包括:
接收模块,用于接收携带变长字段的请求,所述请求的变长字段中包含所述请求经过的各个服务器的地址信息;
判断模块,用于判断所述请求是否在本地执行,如果是,则触发用于执行所述请求的执行模块,并触发用于根据预设规则在所述变长字段中保存的地址信息中查询指定服务器的地址信息的查询模块;
发送模块,用于根据查询到的地址信息,将所述请求的响应发送给所述指定服务器。
7.根据权利要求6所述的装置,其特征在于,所述变长字段为接入层的服务器接收到请求时写入的。
8.根据权利要求6所述的装置,其特征在于,所述响应中包括所述请求,相应地,所述装置还包括:
清除模块,用于当接收到所述响应时,将所述请求中对应的地址信息清除。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
写入模块,用于当所述请求不在本地执行,则将本地地址信息写入所述变长字段,并将写入后的请求转发至下一层服务器。
10.根据权利要求9所述的装置,其特征在于,所述写入模块具体用于将地址信息、预设类型和所述地址信息的长度写入所述变长字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010286746.5A CN102404191B (zh) | 2010-09-10 | 2010-09-10 | 路由方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010286746.5A CN102404191B (zh) | 2010-09-10 | 2010-09-10 | 路由方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102404191A true CN102404191A (zh) | 2012-04-04 |
CN102404191B CN102404191B (zh) | 2014-12-24 |
Family
ID=45885999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010286746.5A Active CN102404191B (zh) | 2010-09-10 | 2010-09-10 | 路由方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102404191B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681922A (zh) * | 2016-12-27 | 2017-05-17 | 广州唯品会信息科技有限公司 | 模拟服务器响应方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112963A1 (en) * | 2005-11-17 | 2007-05-17 | International Business Machines Corporation | Sending routing data based on times that servers joined a cluster |
CN101136946A (zh) * | 2006-08-31 | 2008-03-05 | 华为技术有限公司 | 基站ip地址分配系统及方法、基站、接入服务网络网关 |
CN101197788A (zh) * | 2006-12-07 | 2008-06-11 | 西门子通信技术(北京)有限公司 | 计算机网络中客户端获得数据库服务器配置信息的方法 |
CN101272305A (zh) * | 2008-04-29 | 2008-09-24 | 华为技术有限公司 | 接入点/用户设备入网方法、接入点及其网络管理装置 |
-
2010
- 2010-09-10 CN CN201010286746.5A patent/CN102404191B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112963A1 (en) * | 2005-11-17 | 2007-05-17 | International Business Machines Corporation | Sending routing data based on times that servers joined a cluster |
CN101136946A (zh) * | 2006-08-31 | 2008-03-05 | 华为技术有限公司 | 基站ip地址分配系统及方法、基站、接入服务网络网关 |
CN101197788A (zh) * | 2006-12-07 | 2008-06-11 | 西门子通信技术(北京)有限公司 | 计算机网络中客户端获得数据库服务器配置信息的方法 |
CN101272305A (zh) * | 2008-04-29 | 2008-09-24 | 华为技术有限公司 | 接入点/用户设备入网方法、接入点及其网络管理装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681922A (zh) * | 2016-12-27 | 2017-05-17 | 广州唯品会信息科技有限公司 | 模拟服务器响应方法及系统 |
CN106681922B (zh) * | 2016-12-27 | 2021-03-02 | 上海品顺信息科技有限公司 | 模拟服务器响应方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102404191B (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102857414B (zh) | 一种转发表写入、报文转发方法及装置 | |
CN103078847B (zh) | 一种多码率流文件的存储和读取方法及相关装置 | |
CN105357328B (zh) | 域名解析方法、dns递归服务器及域名解析系统 | |
CN108540211B (zh) | 基于sdn与icn技术的卫星网络系统 | |
CN103596066B (zh) | 一种数据处理方法及装置 | |
CN101841573B (zh) | 互联网地址信息处理方法、装置以及互联网系统 | |
US7882248B2 (en) | Content delivering system, server, and content delivering method | |
CN101330472B (zh) | 流媒体数据的缓存处理方法 | |
CN102088389B (zh) | 一种分布式内容存取调度装置和内容读取方法 | |
US8792487B2 (en) | Communication path selection | |
CN104601724B (zh) | 上传和下载文件的方法及系统 | |
CN104618243B (zh) | 路由方法、装置及系统、网关调度方法及装置 | |
CN102067617A (zh) | 在内容分发网络中自组织的高速缓存的方法和装置 | |
CN102439934A (zh) | 一种cdn中边缘服务器的多级缓存管理方法与系统 | |
CN102143150A (zh) | 一种获取媒体内容的方法、设备及系统 | |
CN104486233A (zh) | 辅助数字用户线路接入复用器上的业务量管理功能 | |
CN101146114A (zh) | 一种流媒体服务器负荷分担方法及其系统 | |
CN102333210B (zh) | 一种视频数据存储方法及其设备 | |
CN108293023A (zh) | 支持信息为中心的网络中的上下文感知的内容请求的系统和方法 | |
CN109150936A (zh) | 一种分布式集群中会话对象Session的共享方法及装置 | |
CN102387083B (zh) | 网络访问控制方法和系统 | |
CN100414936C (zh) | 平衡网络文件系统服务器多网卡间负载的方法 | |
CN106534278A (zh) | 一种报文转发方法及交换设备 | |
CN103297344B (zh) | 分布式数据通信系统及其组播报文转发方法 | |
CN106302861A (zh) | 一种地址分配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190730 Address after: 518000 Guangdong city of Shenzhen province Futian District SEG Science Park 2 East Room 403 Co-patentee after: Tencent cloud computing (Beijing) limited liability company Patentee after: Tencent Technology (Shenzhen) Co., Ltd. Address before: 518000 Guangdong city of Shenzhen province Futian District SEG Science Park 2 East Room 403 Patentee before: Tencent Technology (Shenzhen) Co., Ltd. |