本发明涉及软件架构领域,特别涉及一种路由代理及缓存管理方法。本发明同时还涉及一种路由代理及缓存管理装置。
背景技术:
高并发系统在缓存处理方式上一般分两种,分布式数据缓存与静态页面缓存,分布式数据缓存指单独部署缓存服务器,单独由服务或者客户端第一次请求写入缓存数据,静态页面缓存访问服务器上静态的html页面。
在现有技术业务开发中,需求版本迭代频繁尤其是并行需求开发,在源代码版本管理、合并上存在很大风险与时间成本。
另外,微服务架构是一个新兴的软件架构,相较于传统的单体式架构,能够更加有效的利用计算资源。微服务架构将一个大型的单个应用程序和服务拆分为多个微服务,各个微服务协同运行完成一个服务,而各个微服务是相对独立的,各个微服务之间通过api(applicationprogramminginterface,应用程序编程接口)进行通信。以一个采用微服务架构的精简版网络论坛为例,包括ui(userinterface,用户界面)微服务、用户管理微服务、发帖管理微服务和查贴管理微服务。
技术实现要素:
本发明提供了一种路由代理及缓存管理方法,用以解决现有技术中并行的多系统版本、多客户端版本、多客户端渠道间的路由代理到不同的微服务的问题,同时有利于提高硬件资源的合理配置与监控,并且本发明集成了二级缓存机制提高各控制器的高并发的访问能力。
该方法包括如下步骤:
校验渠道报文参数;
当所述报文参数通过后,根据路由命令、渠道类型、渠道版本号确定最优网络路由;
根据所述最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式。
优选地,在校验渠道报文参数,之前还包括:
渠道端组装特定报文格式发起渠道请求报文;
接受所述渠道请求报文,解析所述请求报文内容。
优选地,根据路由命令、渠道类型、渠道版本号确定最优的网络路由具体包括:
路由端配置路由指令并加载;
通过所述路由命令获取配置中的所有同名配置;
判断所述请求报文内容是否存在渠道类型字段,若存在,则从所述路由命令获取配置中的所有同名配置中过滤对应路由配置a;
判断所述请求报文内容是否存在所述版本字号段,所存在,则从上述步骤中的路由配置a中过滤对应路由配置b;
截取所述过滤的对应路由配置b中的第一条配置为所述最优网络路由。
优选地,根据所述最优网络路由创建唯一缓存键之前还包括解析所述渠道报文内容,判断是否存在缓存规则标示,若存在,所述网络路由执行缓存处理。
优选地,根据所述最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式,具体包括:
所述最优网络路由条件根据所述渠道请求报文内容截取报文部分字段,通过拼接组合方式创建所述唯一缓存键;
判断是否存在所述一级缓存数据,若存在所述一级缓存数据,则通过所述唯一缓存键获取所述一级缓存数据,并返回所述数据到渠道请求端;
若不存在所述一级缓存数据,则通过所述唯一缓存键获取二级缓存数据,并返回所述数据到渠道请求端,同时刷新一级缓存;
若不存在二级缓存数据,则根据所述最优网络路由地址分发到微服务,所述微服务返回数据,根据所述最优网络路由条件创建唯一缓存键,并将所述微服务返回的数据同时写入所述一级缓存和二级缓存。
本发明提供了一种路由代理及缓存管理装置,包括:
校验模块,用于校验渠道报文参数;
路由确定模块,用于当所述报文参数通过后,根据路由命令、渠道类型、渠道版本号确定最优网络路由;
缓存管理模块,用于根据所述最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式。
优选地,该校验模块还包括:
报文发起模块,用于渠道端组装特定报文格式发起渠道请求报文;
报文处理模块,用于接受所述渠道请求报文,解析所述请求报文内容。
优选地,该路由确定模块还包括:
配置模块,用于路由端配置路由指令并加载;
获取配置模块,用于通过所述路由命令获取配置中的所有同名配置;
渠道类型判断模块,用于判断所述请求报文内容是否存在渠道类型字段,若存在,则从所述路由命令获取配置中的所有同名配置中过滤对应路由配置a;
版本字号段判断模块,用于判断所述请求报文内容是否存在所述版本字号段,所存在,则从上述步骤中的路由配置a中过滤对应路由配置b;
截取模块,用于截取所述过滤的对应路由配置b中的第一条配置为所述最优网络路由。
优选地,该缓存管理模块还包括:
缓存判断模块,用于根据所述最优网络路由创建唯一缓存键之前还包括解析所述渠道报文内容,判断是否存在缓存规则标示,若存在,所述网络路由执行缓存处理。
优选地,该缓存管理模块还包括:
缓存键创建模块,用于所述最优网络路由条件根据所述渠道请求报文内容截取报文部分字段,通过拼接组合方式创建所述唯一缓存键;
一级缓存模块,用于判断是否存在所述一级缓存数据,若存在所述一级缓存数据,则通过所述唯一缓存键获取所述一级缓存数据,并返回所述数据到渠道请求端;
二级缓存模块,用于若不存在所述一级缓存数据,则通过所述唯一缓存键获取二级缓存数据,并返回所述数据到渠道请求端,同时刷新一级缓存;
微服务模块,用于若不存在二级缓存数据,则根据所述最优网络路由地址分发到微服务,所述微服务返回数据,根据所述最优网络路由条件创建唯一缓存键,并将所述微服务返回的数据同时写入所述一级缓存和二级缓存。
由此可见,通过应用本申请的技术方案,能够解决并行的多系统版本、多客户端版本、多客户端渠道间的路由代理到不同的微服务的问题,同时有利于提高硬件资源的合理配置与监控。
附图说明
图1为本申请提出一种路由代理及缓存管理方法的流程示意图;
图2为本申请具体实施例中的最优路由定位的流程示意图;
图3为本申请具体实施例中的缓存管理的示意图;
图4为本申请提出的一种多版本具体实施例的方法流程示意图;
图5为本申请提出的一种路由代理及缓存管理装置结构图。
具体实施方式
如背景技术所述,现有技术中需求版本迭代频繁尤其是并行需求开发,在源代码版本管理、合并上存在很大风险与时间成本。有鉴于此,本申请提出了一种路由代理及缓存方法,该方法能够解决并行的多系统版本、多客户端版本、多客户端渠道间的路由代理到不同的微服务的问题,同时有利于提高硬件资源的合理配置与监控。
如图1所示,为本申请提出的一种路由代理及缓存方法的流程示意图,具体地,本申请技术方案包括如下步骤:
s101,校验渠道报文参数。
在该步骤之前还包括:渠道端组装特定报文格式发起请求;
特定报文格式如下:
请求方法:
posthttp/1.1
请求头(关键字段):
serialnumber:请求流水号
requesthost:请求地址
requesttime:请求时间
command:路由命令
version:版本号
system:渠道类型
usecache:是否使用缓存
请求数据:
以键值对的方式,根据不同请求传送不同数据
接收请求后,解析请求内容,校验特有报文参数。
s102,当所述报文参数通过后,根据路由命令、渠道类型、渠道版本号确定最优网络路由。该步骤具体包括:
路由端配置路由指令并加载;
通过所述路由命令获取配置中的所有同名配置;
判断所述请求报文内容是否存在渠道类型字段,若存在,则从所述路由命令获取配置中的所有同名配置中过滤对应路由配置a;
判断所述请求报文内容是否存在所述版本字号段,所存在,则从上述步骤中的路由配置a中过滤对应路由配置b;
截取所述过滤的对应路由配置b中的第一条配置为所述最优网络路由。
s103,根据所述最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式。具体包括:最优网络路由条件根据所述渠道请求报文内容截取报文部分字段,通过拼接组合方式创建唯一缓存键;
判断是否存在一级缓存数据,若存在一级缓存数据,则通过唯一缓存键获取所述一级缓存数据,并返回数据到渠道请求端;
若不存在一级缓存数据,则通过唯一缓存键获取二级缓存数据,并返回数据到渠道请求端,同时刷新一级缓存。
若不存在二级缓存数据,则根据所述最优网络路由地址分发到微服务,所述微服务返回数据,根据所述最优网络路由条件创建唯一缓存键,并将所述微服务返回的数据同时写入所述一级缓存和二级缓存。
在该步骤之前还包括判断是否存在缓存规则标示,若存在,网络路由执行缓存处理。
图2是本具体实施例中根据路由命令、渠道类型、版本号定位最优路由到不同的微服务的方法步骤,如图2所示,该方法包括:
s201.路由端配置路由指令并加载;
s202.通过路由命令获取配置中的所有同名配置;
s203.判断请求报文头是否存在渠道类型字段,有则从步骤s202的结果中过滤对应路由配置;
s204.判断请求报文头是否存在版本号字段,有则从步骤s203的结果中过滤对应路由配置;
s205.截取最终结果的第一条配置为最优路由;
s206.如果不存在符合条件的路由配置,则返回路由配置项,表明不存在。
图3是本具体实施例中根据最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式方法步骤,如图3所示,该方法包括:
s301.解析请求内容,获取缓存规则标示;
如果请求报文头存在缓存规则标示(usecache)字段,表示此请求有限启动缓存,路由端执行缓存处理。
s302.通过路由条件构建唯一缓存key(缓存键);
其中路由条件参数如下:
1.命令名称(必填)
2.渠道类型(选填)
3.版本号(选填)
4.请求数据(选填)
路由条件通过请求报文内容,截取报文部分字段,通过拼接组合的方式构建唯一缓存key。参数选填表示请求报文中的非必传的字段,报文中存在则截取,不存在忽略。
s303.通过唯一缓存键获取一级缓存(本地高速缓存);
s304.有一级缓存(数据不为空)直接返回数据到渠道请求端;
s305.无一级缓存获取二级缓存(远程redis缓存);
s306.有二级缓存直接返回数据渠道请求端并且刷新一级缓存(避免一级和二级缓存数据不一致);
s307无二级缓存根据最优路由地址分发到微服务;
如果不存在缓存表示为首次访问或者缓存已过期。
s308.微服务返回数据,根据路由条件构建唯一缓存key,并将微服务返回的数据同时写入一级缓存与二级缓存。
图4以ios1.0版本、ios2.0版本、pc2.0等多版本为具体实施例,进行路由代理及缓存管理,如图4所示,该方法包括:
1.对渠道1、渠道2、渠道3等多个并发系统版本进行路由网络请求;
2.请求参数校验,如果参数正确,则根据渠道类型、渠道版本号定位最优路由,如果参数无效,则结束;
3.定位最优路由后,判断路由是否存在,如果存在,则判断是否启用缓存,启用缓存的话则通过路由条件构建唯一缓存key,如果路由不存在,则结束;
4.构建唯一缓存key后,查询一级缓存(本地内存高速缓存),如果存在一级缓存,则返回数据;
5.如果一级缓存不存在,则查询二级缓存,若存在二级缓存则直接返回数据渠道请求端并且刷新一级缓存;
6.如果无二级缓存根据最优路由地址分发到微服务,然后网络请求转发到业务网络请求,进行业务处理,返回数据,同时判断是否启动缓存,是的话则写入一级缓存,并返还数据,或者写入二级缓存。
7.如果步骤3中的判断缓存是否启用,若不启用,则直接根据最优路由地址分发到微服务,然后网络请求转发到业务网络请求,进行业务处理,返回数据,同时判断是否启动缓存,是的话则写入一级缓存,并返还数据,或者写入二级缓存。
为达到以上技术目的,本申请还提出了一种路由代理及缓存管理装置,如图5所示,该装置包括:
校验模块501,用于校验渠道报文参数;
路由确定模块502,用于当所述报文参数通过后,根据路由命令、渠道类型、渠道版本号确定最优网络路由;
缓存管理模块503,用于根据所述最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式。
在本实施例中,校验模块501还包括:
报文发起模块5011,用于渠道端组装特定报文格式发起渠道请求报文;
报文处理模块5012,用于接受所述渠道请求报文,解析所述请求报文内容。
路由确定模块502,还包括:
配置模块5021,用于路由端配置路由指令并加载;
获取配置模块5022,用于通过所述路由命令获取配置中的所有同名配置;
渠道类型判断模块5023,用于判断所述请求报文内容是否存在渠道类型字段,若存在,则从所述路由命令获取配置中的所有同名配置中过滤对应路由配置a;
版本字号段判断模块5024,用于判断所述请求报文内容是否存在所述版本字号段,所存在,则从上述步骤中的路由配置a中过滤对应路由配置b;
截取模块5025,用于截取所述过滤的对应路由配置b中的第一条配置为所述最优网络路由。
在本实施例中,缓存管理模块503,还包括:
缓存判断模块5031,用于根据所述最优网络路由创建唯一缓存键之前还包括解析所述渠道报文内容,判断是否存在缓存规则标示,若存在,所述网络路由执行缓存处理;
缓存键创建模块5032,用于所述最优网络路由条件根据所述渠道请求报文内容截取报文部分字段,通过拼接组合方式创建所述唯一缓存键;
一级缓存模块5033,用于判断是否存在所述一级缓存数据,若存在所述一级缓存数据,则通过所述唯一缓存键获取所述一级缓存数据,并返回所述数据到渠道请求端;
二级缓存模块5034,用于若不存在所述一级缓存数据,则通过所述唯一缓存键获取二级缓存数据,并返回所述数据到渠道请求端,同时刷新一级缓存;
微服务模块5035,用于若不存在二级缓存数据,则根据所述最优网络路由地址分发到微服务,所述微服务返回数据,根据所述最优网络路由条件创建唯一缓存键,并将所述微服务返回的数据同时写入所述一级缓存和二级缓存。
另外,本实施例还提出一种实体装置,具体如下:
一种装置,其包括存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于执行所述程序指令,以执行以下步骤:
校验渠道报文参数;
当所述报文参数通过后,根据路由命令、渠道类型、渠道版本号确定最优网络路由;
根据所述最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式。
作为优选的,在校验渠道报文参数,之前还包括:
渠道端组装特定报文格式发起渠道请求报文;
接受所述渠道请求报文,解析所述请求报文内容。
作为优选的,所述根据路由命令、渠道类型、渠道版本号确定最优的网络路由具体包括:
路由端配置路由指令并加载;
通过所述路由命令获取配置中的所有同名配置;
判断所述请求报文内容是否存在渠道类型字段,若存在,则从所述路由命令获取配置中的所有同名配置中过滤对应路由配置a;
判断所述请求报文内容是否存在所述版本字号段,所存在,则从上述步骤中的路由配置a中过滤对应路由配置b;
截取所述过滤的对应路由配置b中的第一条配置为所述最优网络路由。
作为优选的,根据所述最优网络路由创建唯一缓存键之前还包括解析所述渠道报文内容,判断是否存在缓存规则标示,若存在,所述网络路由执行缓存处理。
作为优选的,根据所述最优网络路由条件创建唯一缓存键,并管理一级缓存数据和二级缓存数据使用方式,具体包括:
所述最优网络路由条件根据所述渠道请求报文内容截取报文部分字段,通过拼接组合方式创建所述唯一缓存键;
判断是否存在所述一级缓存数据,若存在所述一级缓存数据,则通过所述唯一缓存键获取所述一级缓存数据,并返回所述数据到渠道请求端;
若不存在所述一级缓存数据,则判断是否存在二级缓存数据,若存在,则通过所述唯一缓存键获取二级缓存数据,并返回所述数据到渠道请求端,同时刷新一级缓存;
若不存在二级缓存数据,则根据所述最优网络路由地址分发到微服务,所述微服务返回数据,根据所述最优网络路由条件创建唯一缓存键,并将所述微服务返回的数据同时写入所述一级缓存和二级缓存。
也就是说,本实施例的实体装置的处理器所执行的程序步骤与上述实施例的一种路由代理及缓存方法相同,在此不再展开赘述。
由此可见,通过应用本申请的技术方案,可以解决现有技术中并行的多系统版本、多客户端版本、多客户端渠道间的路由代理到不同的微服务的问题,同时有利于提高硬件资源的合理配置与监控,并且本发明集成了二级缓存机制提高各控制器的高并发的访问能力。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。