公开/公告号CN110493352A
专利类型发明专利
公开/公告日2019-11-22
原文格式PDF
申请/专利权人 南京联创互联网技术有限公司;
申请/专利号CN201910821014.2
申请日2019-08-30
分类号H04L29/08(20060101);H04L29/06(20060101);H04L9/32(20060101);
代理机构32249 南京瑞弘专利商标事务所(普通合伙);
代理人刘珊珊
地址 210019 江苏省南京市建邺区奥体大街69号1幢4层
入库时间 2024-02-19 17:04:01
法律状态公告日
法律状态信息
法律状态
2020-08-21
授权
授权
2019-12-17
实质审查的生效 IPC(主分类):H04L29/08 申请日:20190830
实质审查的生效
2019-11-22
公开
公开
技术领域
本发明涉及web中间件技术领域,具体涉及一种基于WEB中间件的统一网关服务系统及其服务方法。
背景技术
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯。
目前系统中,路由代理、单点登录、服务集群负载均衡和接口合并基本都是作为单独地服务,需要独立部署和维护,耗费的服务器资源和人力资源较多。
现在有需求,需要将路由代理、单点登录、服务集群负载均衡、接口合并等功能使用中间件技术统一起来,方便系统调用,以及部署维护。
发明内容
发明目的:针对上述现有技术的不足,本发明提供一种基于WEB中间件的统一网关服务系统及其服务方法,能够实现网络服务代理、单点登录、服务集群负载均衡和接口合并功能。
技术方案:为实现上述技术效果,本发明提出以下技术方案:
一种基于WEB中间件的统一网关服务系统,包括:客户端、统一网关层、身份认证服务器、业务服务器中间件、分布式部署的业务服务器;统一网关层部署有路由代理中间件,路由代理中间件与业务服务器中间件之间通过编程建立端口连接;
路由代理中间件拦截客户端发起的网络请求,每拦截到一个网络请求就建立一个线程为其服务,建立线程后读取网络请求中携带的用户账户信息转发身份认证服务器验证登录信息,若验证不通过,则路由代理中间件结束相应线程;若验证通过,则路由代理中间件在当前线程中持续接收用户业务请求数据,并通过心跳机制保持与身份认证服务器中间的连接;路由代理中间件接收到用户业务请求数据后,通过解析用户业务请求数据得到用户想要执行的操作,然后将用户业务请求数据发送身份认证服务器验证用户是否具有执行相应操作的权限,当确认用户具备相应权限时,路由代理中间件向业务服务器中间件发出需要执行相应操作的业务请求;
业务服务器中间件监听路由代理中间件的端口,当接收到路由代理中间件的业务请求时,采用加权轮询策略获取各个业务服务器的负载情况;若业务请求为单一接口请求,则业务服务器中间件直接将业务请求转发到压力较小的服务器上,并获取返回数据发送给路由代理中间件;若业务请求为合并接口请求,则业务服务器中间件按照接口种类分别将业务请求发送给对应的业务服务器,收集所有业务服务器的返回数据后转发给路由代理中间件;路由代理中间件将接收到的数据反馈给客户端。
进一步的,所述路由代理中间件的实现方法为:在网关服务器上安装路由代理中间件所需的Java和Nodejs环境;然后导入网关系统文件,使用NPM下载系统需要的第三方依赖;编辑配置文件,包括请求转发路由和对应转发的服务器地址列表;使用Nodejs启动网关系统后即可运行路由代理中间件。
进一步的,所述身份认证服务器采用cas认证协议。
本发明还提出一种基于所述基于WEB中间件的统一网关服务系统的服务方法,包括以下业务流程:
1)用户访问业务:
用户通过客户端浏览器向所述服务系统的统一网关层发出网络请求,路由代理中间件拦截客户端发起的网络请求,并建立一个线程为其服务,然后对网络请求数据进行路由解析及会话缓存,从网络请求数据中提取登录凭证,若无登录凭证,则通知客户端用户未登录;若成功提取登录凭证,则将登录凭证发送至身份认证服务器验证,身份认证服务器在验证通过后将登录信息记录session或登录缓存,标识相应用户已经登录,并为用户分配权限;若身份验证不通过,则通知客户端用户未登录;
用户登录成功后,通过客户端浏览器向路由代理中间件发送业务请求数据,路由代理中间件接收到用户业务请求数据后,通过解析用户业务请求数据得到用户想要执行的操作,然后将用户业务请求数据发送给身份认证服务器验证用户是否具有执行相应操作的权限,当确认用户具备相应权限时,路由代理中间件向业务服务器中间件发出需要执行相应操作的业务请求;业务服务器中间件选择相应业务服务器执行业务请求;
2)会话保持:
用户登录成功之后,路由代理中间件通过心跳机制与身份认证服务器保持线程,保证身份认证服务器能够感知到用户当前的活动状态;若身份认证服务器在预设的时间内没有检测到用户的活动信息,则判定用户状态为下线,则身份认证服务器注销用户登录状态并通知所有业务服务器注销该用户的登录状态;
3)单点退出:
当用户主动下线或超时下线时,身份认证服务器会通过路由代理中间件向所有业务服务器发起用户下线通知,业务服务器则结束与相应用户的线程。
有益效果:与现有技术相比,本发明具有以下优势:
本发明路由代理、单点登录、服务集群负载均衡、接口合并均由统一网关层实现,减少中间件的使用,降低请求过程中消耗的网络资源,缓解服务器带宽和性能的压力,提高系统的执行效率,降低运维的成本和风险,提升系统架构的性能和稳定性。
附图说明
图1为实施例所述基于WEB中间件的统一网关服务系统的结构图;
图2为实施例所述基于WEB中间件的统一网关服务系统的物理架构示意图;
图3为单点登录的流程图;
图4为单点登出的流程图。
具体实施方式
本发明提出一种基于WEB中间件的统一网关服务系统,包括:
客户端、统一网关层、身份认证服务器、业务服务器中间件、分布式部署的业务服务器;统一网关层部署有路由代理中间件,路由代理中间件与业务服务器中间件之间通过编程建立端口连接;
路由代理中间件拦截客户端发起的网络请求,每拦截到一个网络请求就建立一个线程为其服务,建立线程后读取网络请求中携带的用户账户信息转发身份认证服务器验证登录信息,若验证不通过,则路由代理中间件结束相应线程;若验证通过,则路由代理中间件在当前线程中持续接收用户业务请求数据,并通过心跳机制保持与身份认证服务器中间的连接;路由代理中间件接收到用户业务请求数据后,通过解析用户业务请求数据得到用户想要执行的操作,然后将用户业务请求数据发送身份认证服务器验证用户是否具有执行相应操作的权限,当确认用户具备相应权限时,路由代理中间件向业务服务器中间件发出需要执行相应操作的业务请求;
业务服务器中间件监听路由代理中间件的端口,当接收到路由代理中间件的业务请求时,采用加权轮询策略获取各个业务服务器的负载情况;若业务请求为单一接口请求,则业务服务器中间件直接将业务请求转发到压力较小的服务器上,并获取返回数据发送给路由代理中间件;若业务请求为合并接口请求,则业务服务器中间件按照接口种类分别将业务请求发送给对应的业务服务器,收集所有业务服务器的返回数据后转发给路由代理中间件;路由代理中间件将接收到的数据反馈给客户端。
所述服务系统的服务流程包括:
1)用户访问业务:
用户通过客户端浏览器向所述服务系统的统一网关层发出网络请求,路由代理中间件拦截客户端发起的网络请求,并建立一个线程为其服务,然后对网络请求数据进行路由解析及会话缓存,从网络请求数据中提取登录凭证,若无登录凭证,则通知客户端用户未登录;若成功提取登录凭证,则将登录凭证发送至身份认证服务器验证,身份认证服务器在验证通过后将登录信息记录session或登录缓存,标识相应用户已经登录,并为用户分配权限;若身份验证不通过,则通知客户端用户未登录;
用户登录成功后,通过客户端浏览器向路由代理中间件发送业务请求数据,路由代理中间件接收到用户业务请求数据后,通过解析用户业务请求数据得到用户想要执行的操作,然后将用户业务请求数据发送给身份认证服务器验证用户是否具有执行相应操作的权限,当确认用户具备相应权限时,路由代理中间件向业务服务器中间件发出需要执行相应操作的业务请求;业务服务器中间件选择相应业务服务器执行业务请求;
2)会话保持:
用户登录成功之后,路由代理中间件通过心跳机制与身份认证服务器保持线程,保证身份认证服务器能够感知到用户当前的活动状态;若身份认证服务器在预设的时间内没有检测到用户的活动信息,则判定用户状态为下线,则身份认证服务器注销用户登录状态并通知所有业务服务器注销该用户的登录状态;
3)单点退出:
当用户主动下线或超时下线时,身份认证服务器会通过路由代理中间件向所有业务服务器发起用户下线通知,业务服务器则结束与相应用户的线程。
下面结合附图和具体实施方式进一步阐述本发明的技术方案。
实施例:图1所示为本实施例提出的基于WEB中间件的统一网关服务系统,它包括客户端、防火墙、Keepalived主备、若干个统一网关、若干个服务器、分布式数据库中间件、mysql用户主数据库。其中:防火墙保证了系统的服务和接口安全;应用部署采用单集群下多节点,单节点下多server的部署方式,容灾能力强关系型数据库层面,mysql采用Atlas作为分布式数据库中间件进行分布式集群部署,不需要再考虑数据备份;中间件采用主备集群方式部署,使用keepAlive做高可用方案,避免了单点故障,并可在线自动进行主备切换。
所述统一网关服务系统具备网络服务代理、单点登录、服务集群负载均衡以及接口合并等功能。当有请求进入统一网关层时,网络服务代理通过业务系统的需求对路由进行正向或反向代理。当存在多个系统应用时,通过统一网关层单点登录,多系统共享一个认证系统,可以实现用户统一登录、登出。当服务器采用服务集群部署时,统一网关层基于加权轮询机制的负载均衡模块会根据服务器压力情况,自动转发请求到压力较小的服务器上。同时,在统一网关层定义了接口合并的规则,实现了跨业务系统的接口合并功能。
下面对路由服务代理、业务访问、服务集群负载均衡以及接口合并等功能做详细介绍。
1.路由服务代理
路由服务代理基于http-proxy库实,先网关服务器上安装路由代理中间件所需的Java和Nodejs环境;然后导入网关系统文件,使用NPM下载系统需要的第三方依赖;编辑配置文件,包括请求转发路由和对应转发的服务器地址列表;使用Nodejs启动网关系统后即可运行路由代理中间件。统一网关层部署以后,接受客服端发送的请求,根据路由的配置信息,自动代理到对应的服务器系统,同时,可以对发送和返回的请求数据进行封装处理,减少客户端和服务器端的性能压力。
2、用户访问业务:
单点登录,其流程如图3所示:
如果业务服务器session或登录缓存中判断用户没有登录,则向客户端调用者返回未登录信息码;
如果业务服务器已经登录,则判断是否到达需要发送保持用户登录状态心跳包的时间,向身份认证服务器用户状态保持接口发送消息;同时,业务服务器处理自有业务,响应用户。
用户在身份认证服务器登录完毕,系统记录登录信息并将客户端跳转到业务服务器回跳页面,并带上url参数ticket票据。
业务服务器接收ticket参数向身份认证服务器验证ticket合法性并获取用户信息和权限信息。
业务服务器获取到用户信息,将登录信息记录session或登录缓存,标识已经登录,并根据返回的权限信息检验用户是否有操作权限;验证通过则执行相应业务操作。
会话保持:
用户登录成功之后,被访问的业务服务器需要在当前用户有访问请求时(在线状态)每间隔一段时间(默认3分钟)向身份认证服务器提交用户在线状态信息。保证身份认证服务器能够感知到用户当前的活动状态。
身份认证服务器在一定时间(默认30分钟)内没有检测到用户的活动信息则判定用户状态为下线。将注销用户登录状态并通知所有业务服务器注销该用户的登录状态。
单点退出,其流程如图4所示:
与单点登录相对应,单点退出功能可以解决“单点登录”功能在方便用户的同时留下的安全隐患,用户在客户端主动下线或超时下线时,身份认证服务器会向业务服务器发起用户下线通知,告知业务服务器,某用户已经下线,请销毁相关Session会话。
3、服务集群负载均衡
采用加权轮询机制实现服务集群的负载均衡,根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。通过加权轮询机制分配请求,实现服务集群负载均衡。
4、接口合并
在统一网关层定义一套接口合并的规则,并在服务代理解析客户端发来的请求后,对服务器端发起近距离请求,合并后返回。在统一网关层中可以聚合多个不同的服务器端的请求,实现跨业务系统的接口合并。多个内部请求是非阻塞的并行执行,并且由于统一网关层和服务器端部署网络更接近,相比较于客户端流水线式的请求能够提交访问效率。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
机译: 移动服务系统一种移动服务方法和用于研究的移动电话
机译: 统一通信/呼叫中心客户端和统一通信/呼叫中心服务方法使用客户关系管理中间件
机译: 分组通信服务系统,分组通信服务方法,边缘侧网关设备和网关设备的中心侧