[发明专利]一种多路请求复制分发系统和方法有效
申请号: | 202110103777.0 | 申请日: | 2021-01-26 |
公开(公告)号: | CN112953894B | 公开(公告)日: | 2022-05-20 |
发明(设计)人: | 张为华;鲁云萍;张高迪 | 申请(专利权)人: | 复旦大学 |
主分类号: | H04L9/40 | 分类号: | H04L9/40;H04L67/10 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 请求 复制 分发 系统 方法 | ||
1.一种多路请求复制分发系统,其特征在于,包括分发模块、服务实例、总控模块,其中:
所述分发模块,包含两方面功能:
第一方面,请求接受时,复制分发模块接收用户的访问请求并复制多份,修改相应的目的标志,实现复制分发;包括判断请求类型:是获取还是提交,从而进行不同的处理;
第二方面,请求返回时,对于多个实例返回的响应数据以及状态码,由分发模块进行判断,如果状态不正确或响应数据与其他实例的不同,则返回给用户选举中多数的正确结果,并通知总控模块对相应错误实例进行重新部署;
所述服务实例,主要是对用户的应用进行打包,并添加状态码和消息日志功能,表示此服务实例运行的正确性;服务实例各自接收分发模块复制分发传递过来的请求数据;在进行处理之后,返回响应数据和状态码给分发模块,返回状态码和消息处理日志给总控模块;服务实例启动时,生成相应的配置文件,分发模块与总控模块通过此文件与多个服务实例进行通信;
所述总控模块,包含两个功能部件:
第一个是总控客户端,其是集成在用户服务实例中的消息通信组件,用于收集服务实例的消息处理日志,并以键值对的形式返回给总控服务器;
第二个是总控服务器,其形式是一个消息队列类型的数据库,用于收集服务实例发送的消息处理日志,并对消息日志进行对比;正确情况下,经过复制分发模块给予的相同请求产生相同的消息日志,总控模块对这些日志进行对比,日志拥有自己的版本号,不同实例相同请求的日志版本号相应,如果有实例发生错误或被攻击,总控模块则判断出错的实例并对其进行重新部署;
在分发模块中,请求接受时,由于一些情况下不同的服务实例拥有不同的状态,对于有状态链接session,复制分发模块进行特殊的处理,保证整个链接的可持续性;具体通过在分发处生成一个自定义的session,并将后端多个实例原有的session与之组成一个一对多的键值对,在返回给用户响应消息时,更改消息的session为自定义的;在用户请求到达时,将请求复制成多份,各自替换自定义的session为对应实例的;将整个过程看作分发模块与多个实例保持连接,而用户则与分发模块保持连接。
2.基于权利要求1所述的系统的多路请求复制分发方法,其特征在于,具体步骤为:
(1)由分发模块代理获取用户访问服务器的请求,进入分发模块的请求处理阶段;
(2)分发模块对请求进行处理,判断请求的类型,包括提交或获取,不同的类型的请求复制时有不同的参数,之后将请求复制为多份,分别返回给多个后台服务实例;
(3)分发模块的请求被传递给多个服务实例;
(4)服务实例像往常一样处理用户的访问请求,此时服务实例需要以版本号加日志的形式生成请求处理日志;
(5)服务实例通过总控客户端的消息通信手段将日志信息发送给总控模块;
(6)总控木块对比和判断多个服务实例的请求处理日志;
(7)服务实例处理完请求之后返回相应的响应数据给分发模块,包括自定义的健康与否的状态码;
(8)分发模块对响应进行一定的对比判断,包括对比状态码和选举多数返回;
(9)分发模块将处理之后的响应返回给用户。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110103777.0/1.html,转载请声明来源钻瓜专利网。