本发明涉及一种网关,尤其是一种网关服务系统及方法。
背景技术:
1、在互联网的时代中,随着业务系统复杂度增高,会将单体服务按照不同的业务逻辑和业务模块进行拆分,随着功能模块的增加,程序的功能入口会越来越多,网关系统作为内外的桥梁,对外通过暴露http接口提供服务,对内管理所有业务系统对外暴露的接口,并将请求分发到内部的各个业务系统中,对外的访问请求统一收口,并将访问请求进行收敛。但现有的网关系统无法灵活地配置过滤规则,让请求通过不同的过滤规则,进行拦截或者统计;频繁地上下文切换,降低网关服务的性能。
技术实现思路
1、发明目的:本发明的目的是提供一种灵活配置过滤规则、适应多种服务协议、减少上下文切换的高性能网关服务系统,本发明的第二目的是提供一种网关服务方法。
2、技术方案:本发明所述的网关服务系统,包括服务端模块和客户端模块;
3、所述服务端模块在接收到客户端模块发送的下游服务请求时根据规则过滤器进行路由操作,所述规则过滤器包括前置过滤器、中置过滤器、后置过滤器和异常过滤器;
4、所述前置过滤器包括认证授权、流量控制和黑白名单认证;
5、所述中置过滤器用于负载均衡和协议解析,并根据下游处理请求的访问延迟时间的长短选择单异步请求处理或双异步请求处理;所述单异步请求处理是从线程池中取出一个线程处理客户端发送的请求,同步等待客户端模块的响应;双异步请求处理是从线程池中取出一个线程处理客户端发送的请求,在未收到下游服务响应时处理其他请求;
6、所述后置过滤器用于在下游服务将响应结果返回客户端后进行指标分析,所述指标包括响应时间和访问次数;
7、所述异常过滤器用于在出现异常信息时,将异常信息写回客户端模块,执行所述后置过滤器进行指标分析;
8、所述客户端模块用于解析和注册下游服务。
9、进一步地,所述负载均衡包括加权随机策略和加权轮循策略,所述加权随机策略为将所有服务器的权重相加得到权重和,从1至该权重和之间选择一个随机数与每个服务器的权重依次相减,选择相减后结果不大于0的服务器;所述加权轮循策略是在每次轮循时优先选择权重最高的服务器;服务器的权重在一段时间内从预设初始值增加至预设权重值。
10、进一步地,所述服务端模块内设有用于存放网关服务的配置讯息、过滤器规则信息和下游服务的注册表信息的缓存区;主线程将下游服务请求放入缓存区,后台线程异步执行所述下游服务请求;
11、进一步地,所述缓存区中,每个变量前后填充若干个填充值,每个变量占据一个缓存行。
12、进一步地,下游服务升级或上线新功能时,为该下游服务标记待升级标签,该下游服务完成已接收的请求后进行下线和升级操作;标记待升级标签的下游服务占全部下游服务的比例不超过第一阈值。
13、进一步地,所述客户端向注册中心集群注册所述下游服务,所述客户端将所述下游服务的ip地址、端口号、服务路径保存在服务配置信息表中并发送至注册中心集群进行保存;所述注册中心集群包括主注册中心服务端和备用注册中心服务端,当所述主注册中心服务端失去心跳时切换到备用注册中心服务端。
14、进一步地,所述客户端包括协议适配单元和注册中心客户端单元,所述协议适配单元用于对所述下游服务进行协议解析,所述注册中心客户端单元用于根据所述下游服务的协议向注册中心集群进行注册。
15、进一步地,所述网关服务系统还包括控制台模块,所述控制台模块包括用于确定网关服务编号、版本号、协议及服务路径的定义服务单元,用于配置访问地址、路由标签和服务器权重的服务器配置单元,以及用于配置所述前置过滤器、中置过滤器、后置过滤器和异常过滤器规则的规则配置单元。
16、本发明所述的网关服务方法,客户端模块解析并注册下游服务,服务端模块在接收到客户端模块发送的下游服务请求时根据规则过滤器进行路由操作,所述规则过滤器包括前置过滤器、中置过滤器、后置过滤器和异常过滤器;
17、所述前置过滤器包括认证授权、流量控制和黑白名单认证,
18、所述中置过滤器用于负载均衡和协议解析,并根据下游处理请求的访问延迟时间的长短选择单异步请求处理或双异步请求处理;所述单异步请求处理是从线程池中取出一个线程处理客户端发送的请求,同步等待客户端模块的响应;双异步请求处理是从线程池中取出一个线程处理客户端发送的请求,在未收到下游服务响应时处理其他请求;
19、所述后置过滤器用于在下游服务将响应结果返回客户端后进行指标分析,所述指标包括响应时间和访问次数;
20、所述异常过滤器用于在出现异常信息时,将异常信息写回客户端模块,执行所述后置过滤器进行指标分析。
21、本发明所述的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述的网关服务方法。
22、有益效果:与现有技术相比,本发明的优点在于:
23、(1)通过服务端模块、客户端模和控制台模块构成了整套网关服务系统,网关系统采用分布式架构,解决单点故障问题;
24、(2)负载均衡策略中的权重采用预热机制,当一个服务刚上线时,不会将请求全部分配到这台服务器,而是随着时间的推移依次增加权重,直到预热时间结束达到初始设置的权重;支持多种负载均衡策略,即随机和轮询策略,在执行上述策略时,也会优先考虑权重参数的设置,权重参数越高,被随机处理请求响应的几率也会越高;
25、(3)在网关服务将请求转发至下游进行处理时,采用的异步化设计,并且根据下游服务处理时间耗时长短来动态的切换成单异步模式或者是双异步模式。如果下游处理耗时长,则会切换到双异步模式即请求异步化,响应异步化。如果下游处理耗时短,会切换到单异步模式,避免了过多的上下文切换;
26、(4)网关服务采用本地缓存的策略进行存放所拉取的元数据,整体提升服务的健壮性,由于网关服务是cpu密集型服务,所以会将操作系统核和线程进行绑定,减少线程的上下文切换:
27、(5)在处理客户端请求的过程中,依次通过前置过滤器、中置过滤器、后置过滤器和异常过滤器,能够灵活地配置过滤信息,让请求通过不同的规则进行过滤;
28、(6)按照执行阶段将过滤器分类之后,也会按照过滤器的功能进行分类,比如黑白名单插件,统计分析插件;为了方便请求路径和过滤插件的管理,引入规则,通过将一个路径绑定一个规则,一个规则绑定多个插件,规则可以给多个服务路径使用。
1.一种网关服务系统,其特征在于,包括服务端模块和客户端模块;
2.根据权利要求1所述的网关服务系统,其特征在于,所述负载均衡包括加权随机策略和加权轮循策略,所述加权随机策略为将所有服务器的权重相加得到权重和,从1至该权重和之间选择一个随机数与每个服务器的权重依次相减,选择相减后结果不大于0的服务器;所述加权轮循策略是在每次轮循时优先选择权重最高的服务器;服务器的权重在一段时间内从预设初始值增加至预设权重值。
3.根据权利要求1所述的网关服务系统,其特征在于,所述服务端模块内设有用于存放网关服务的配置讯息、过滤器规则信息和下游服务注册表信息的缓存区;主线程将下游服务请求放入缓存区,后台线程异步执行所述下游服务请求。
4.根据权利要求3所述的网关服务系统,其特征在于,所述缓存区中,每个变量前后填充若干个填充值,每个变量占据一个缓存行。
5.根据权利要求1所述的网关服务系统,其特征在于,下游服务升级或上线新功能时,为该下游服务标记待升级标签,该下游服务完成已接收的请求后进行下线和升级操作;标记待升级标签的下游服务占全部下游服务的比例不超过第一阈值。
6.根据权利要求1所述的网关服务系统,其特征在于,所述客户端向注册中心集群注册所述下游服务,所述客户端将所述下游服务的ip地址、端口号、服务路径保存在服务配置信息表中并发送至注册中心集群进行保存;所述注册中心集群包括主注册中心服务端和备用注册中心服务端,当所述主注册中心服务端失去心跳时切换到备用注册中心服务端。
7.根据权利要求6所述的网关服务系统,其特征在于,所述客户端包括协议适配单元和注册中心客户端单元,所述协议适配单元用于对所述下游服务进行协议解析,所述注册中心客户端单元用于根据所述下游服务的协议向注册中心集群进行注册。
8.根据权利要求1所述的网关服务系统,其特征在于,还包括控制台模块,所述控制台模块包括用于确定网关服务编号、版本号、协议及服务路径的定义服务单元,用于配置访问地址、路由标签和服务器权重的服务器配置单元,以及用于配置所述前置过滤器、中置过滤器、后置过滤器和异常过滤器规则的规则配置单元。
9.一种网关服务方法,其特征在于,客户端模块解析并注册下游服务,服务端模块在接收到客户端模块发送的下游服务请求时根据规则过滤器进行路由操作,所述规则过滤器包括前置过滤器、中置过滤器、后置过滤器和异常过滤器;
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现根据权利要求9所述的网关服务方法。