一种环境隔离方法及设备与流程

文档序号:12789504阅读:406来源:国知局
一种环境隔离方法及设备与流程

本申请涉及通信技术领域,特别涉及一种环境隔离方法。本申请同时还涉及一种RPC客户端以及环境隔离设备。



背景技术:

RPC(Remote Procedure Call,远程过程调用)是一个分布式计算的客户端-服务器(Client/Server)的协议,由于通过RPC能够从远程计算机程序上请求服务的同时不需要了解底层网络技术,因此RPC既简单而又广受欢迎。远程过程调用总是由客户端对服务器发出一个执行若干过程请求,使用客户端提供的参数,服务端将执行结果返回给客户端。目前大部分的云计算平台的公有云计算产品均提供了RPC的服务功能,方便各类语言开发者快速使用。

如图1所示,为RPC原理示意图。(RPC)客户端与(RPC)服务器利用各自的传输编码通过协议在各个频段相互连接,其中客户端具有接口模块,服务器则具有用于运行的实施模块。通过RPC可以充分利用非共享内存的多处理器环境(例如通过局域网连接得多台服务器),这样可以简便地将应用分布在多台服务器上,应用程序就像运行在一个多处理器的计算机上一样。技术人员可以方便的实现过程代码共享,提高系统资源的利用率,也可以将以大量数据处理的操作分散到处理能力较强的集群中运行,从而减轻单机负担,同时也能更好的做服务化处理。

在应用RPC技术的过程中,RPC框架中的Client需要调用Server,请求路由到哪台Server有不同的策略和实现方式。而基于请求路由技术如何实现环境隔离也是现有的RPC应用过程中所必不可少的一项内容。

环境隔离就是指通过一定的手段(这里指请求路由技术),完成对测试环境、生产环境的分布式调用服务、数据的区分,防止不同环境间分布式调用服务、数据的相互干扰和使用。现有技术一般通过修改请求来源标志位(IP)将请求隔离到指定机器上,或者是通过调整负载均衡的权重配置将请求隔离到指定机器或者集群中(可能存在隔离不干净的问题),亦或是通过配置混合路由的分组值将机器隔离到指定分组当中(要在服务端设置服务分组,区别于其他分组)。

如图2所示,为现有技术中基于请求路由的隔离架构示意图。预先为生产环境中的不同APP对应配置了统一接入1、配置服务1以及通知等模块,而隔离环境中的APP则对应配置了与生产环境不同的统一接入2以及配置服务2等模块。然而无论是生产环境还是隔离环境,均通过统一的管理平台进行管理。由于基于请求路由的环境隔离需要修改客户端请求标志位(IP)或者修改RPC路由配置文件,势必造成需要发布和重启应用,操作成本很高,不能动态完成隔离,而且服务端也需要配置单独的分组以支持隔离操作,而这些操作十分复杂,极易出错,配置不对可能造成隔离不干净等问题,由于整体环境的波动等不确定因素,极易导致服务请求调用失败,进而影响安全性和稳定性,所以现有技术中若需要通过环境隔离进行测试对比的话,一般需要部署一套相同应用,设置不同的路由配置和分组。而单独部署的环境在真实性上有损失,同时也加重了操作人员运维负担。

在实现本申请的过程中,发明人发现现有的环境隔离方案存在着以下缺点:

(1)对应用侵入大

常规的隔离技术不是需要对原应用代码、分组、路由规则配置进行修改,就是需要对服务提供方的服务进行分组配置。对应用的侵入很大,而且配置复杂,极易出错,修改的版本要单独打分支,以后的维护成本也很大。

(2)隔离后应用稳定性存在风险

隔离后链路一旦出现稳定性问题,将直接导致上层依赖系统服务不可用的情况。常规的隔离技术并没有链路可用性检查功能,也并没有考虑隔离后造成服务请求失败的容灾策略,由于其机制的原因,也无法快速进行容灾。

(3)部署成本高

通过硬件路由实施隔离需要添加额外的设备,落地部署成本极高,使用上需要专业人员操作,开发和测试人员无法按需操作,更改隔离规则操作复杂,易出错,一般使用不需要过多的附加功能,使用上存在浪费。

(4)隔离后的环境拟真性差

常规的基于请求路由的隔离需要改动配置文件或者单独部署一套应用,因此在真实性上和原有生产环境有区别,在进行测试或者其他对比验证的时候环境上存在一定差异,而隔离的目的是定向引流,并不是改变环境,同时存在后续维护成本高的缺点,因为生产环境的统一配置无法直接应用于隔离出的β环境。

(5)操作复杂,实时性差。常规的基于请求路由的隔离方案,由于对应用和配置的修改,势必造成重新部署或者重启应用,整体操作链路长,时间长,无法快速实时生效,要准备的配置多,维护配置可用性成本高。

由此可见,如何在保证安全与稳定的前提下实现环境隔离,并同时降低隔离的成本以及隔离操作的复杂度,成为本领域技术人员亟待解决的技术问题。



技术实现要素:

本申请公开了一种环境隔离方法,用以在提升环境隔离的实时性、安全性以及稳定性的前提下,尽量降低环境隔离的人工及硬件成本。该方法应用于RPC客户端,预设与所述RPC客户端相连的环境隔离设备,所述RPC客 户端中的路由地址池按照预设的周期自动刷新预置的全量地址,该方法还包括:

所述RPC客户端接收所述环境隔离设备发送的环境隔离指示;

所述RPC客户端停止自动刷新所述路由地址池,并将所述路由地址池中当前的地址替换为合并地址,所述合并地址为所述RPC客户端根据所述路由地址池中当前的地址以及预设的手动地址列表中的地址合并生成;

当所述RPC客户端接收到用户发送的服务调用请求时,根据所述路由地址池中的合并地址生成有效的目标地址;

所述RPC客户端将所述服务调用请求发送至与所述目标地址对应的RPC服务端,并将所述RPC服务端返回的业务处理结果反馈至所述用户。

优选地,所述手动地址列表由参与环境隔离的RPC客户端以及RPC服务端的地址组成,所述RPC客户端将所述路由地址池中当前的地址替换为合并地址,具体为:

从所述手动地址列表中筛选可用于地址合并的第一子地址;

将停止自动刷新后的所述路由地址池中的地址作为第二子地址;

根据预设的地址合并算法,将所述第一子地址以及所述第二子地址合并为所述合并地址;

将所述路由地址池中当前的地址删除,并将所述合并地址添加至所述路由地址池中。

优选地,所述RPC客户端根据所述路由地址池中的合并地址生成有效的目标地址,具体为:

查询预设的路由规则,以及在所述路由地址池中查询可用的设备地址,;

根据所述路由规则对查询到的设备地址进行筛选;

若存在符合所述路由规则的设备地址,将所述设备地址作为所述目标地址;

若不存在符合所述路由规则的设备地址,向所述用户返回服用调用失败响应。

优选地,在所述RPC客户端将所述路由地址池中当前的地址替换为合并地址之后,还包括:

向所述环境隔离设备返回环境隔离成功响应;

当接收到所述环境隔离设备发送的隔离状态检查指示时,查询自身与各个下游RPC服务端之间的接口是否正常,并将查询结果发送至所述环境隔离设备,以使所述环境隔离设备向所述用户反馈所述查询结果。

优选地,在所述RPC客户端将所述路由地址池中当前的地址替换为合并地址之后,还包括:

若接收到所述环境隔离设备发送的环境隔离取消指示,将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

相应地,本申请还提出了一种环境隔离方法,所述方法应用于环境隔离设备,所述环境隔离设备与所述RPC客户端相连,该方法包括:

根据用户发送的环境隔离请求中所携带的地址信息确定需要进行环境隔离的RPC客户端,所述RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址;

向所述RPC客户端发送环境隔离指示,以使所述RPC客户端停止自动刷新所述路由地址池以及将所述路由地址池中当前的地址替换为合并地址,所述合并地址为所述RPC客户端根据所述路由地址池中当前的地址以及预设的手动地址列表中的地址合并生成。

优选地,所述地址信息具体为源IP地址以及目标IP地址,根据用户发送的环境隔离请求中所携带的地址信息确定需要进行环境隔离的RPC客户端, 具体为:

从所述环境隔离请求中提取所述地址信息;

通过查询RPC服务端的接口获取需要进行环境隔离的服务;

将与所述源IP地址对应的RPC客户端作为所述需要进行环境隔离的RPC客户端。

优选地,在向所述RPC客户端发送环境隔离指示之后,还包括:

若接收到所述RPC客户端发送的环境隔离成功响应,向所述RPC客户端发送隔离状态检查指示,并将所述RPC客户端返回的查询结果反馈至所述用户;所述状态检查指示用于使所述RPC客户端查询自身与各个下游RPC服务端之间的接口是否正常,并将查询结果发送至所述环境隔离设备。

优选地,在向所述RPC客户端发送环境隔离指示之后,还包括:

若接收到所述RPC客户端发送的环境隔离成功响应,检测所述RPC客户端的各下游RPC服务端的状态是否正常,以及判断所述路由地址池中的合并地址在经过预设的路由规则筛选后是否为空;

若存在状态为异常的下游RPC服务端,或所述路由地址池中的合并地址在经过预设的路由规则筛选后为空,向所述用户发送下游存活安全告警提示。

优选地,在向所述RPC客户端发送环境隔离指示之后,还包括:

当接收到所述用户发送的环境隔离取消请求时,向所述RPC客户端发送环境隔离取消指示,以使所述RPC客户端将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

相应地,本申请还提出了一种RPC客户端,所述RPC客户端与预设的环境隔离设备相连,所述RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址,该RPC客户端还包括:

接收模块,接收所述环境隔离设备发送的环境隔离指示;

替换模块,所述RPC客户端停止自动刷新所述路由地址池,并将所述路由地址池中当前的地址替换为合并地址,所述合并地址为所述RPC客户端根据所述路由地址池中当前的地址以及预设的手动地址列表中的地址合并生成;

生成模块,当所述接收模块接收到用户发送的服务调用请求时根据所述路由地址池中的合并地址生成有效的目标地址;

发送模块,将所述服务调用请求发送至与所述目标地址对应的RPC服务端,并将所述RPC服务端返回的业务处理结果反馈至所述用户。

优选地,所述手动地址列表由参与环境隔离的RPC客户端以及RPC服务端的地址组成,所述替换模块将所述路由地址池中当前的地址替换为合并地址,具体为:

从所述手动地址列表中筛选可用于地址合并的第一子地址;

将停止自动刷新后的所述路由地址池中的地址作为第二子地址;

根据预设的地址合并算法,将所述第一子地址以及所述第二子地址合并为所述合并地址;

将所述路由地址池中当前的地址删除,并将所述合并地址添加至所述路由地址池中。

优选地,所述生成模块具体用于:

查询预设的路由规则,以及在所述路由地址池中查询可用的设备地址,;

根据所述路由规则对查询到的设备地址进行筛选;

若存在符合所述路由规则的设备地址,将所述设备地址作为所述目标地址;

若不存在符合所述路由规则的设备地址,向所述用户返回服用调用失败响应。

优选地,还包括:

响应模块,向所述环境隔离设备返回环境隔离成功响应;

查询模块,当接收到所述环境隔离设备发送的隔离状态检查指示时查询自身与各个下游RPC服务端之间的接口是否正常,并将查询结果发送至所述环境隔离设备,以使所述环境隔离设备向所述用户反馈所述查询结果。

优选地,还包括:

撤销模块,在接收到所述环境隔离设备发送的环境隔离取消指示时将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

相应地,本申请还提出了一种环境隔离设备,所述环境隔离设备与所述RPC客户端相连,该环境隔离设备包括:

确定模块,根据用户发送的环境隔离请求中所携带的地址信息确定需要进行环境隔离的RPC客户端,所述RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址;

发送模块,向所述RPC客户端发送环境隔离指示,以使所述RPC客户端停止自动刷新所述路由地址池以及将所述路由地址池中当前的地址替换为合并地址,所述合并地址为所述RPC客户端根据所述路由地址池中当前的地址以及预设的手动地址列表中的地址合并生成。

优选地,所述地址信息具体为源IP地址以及目标IP地址,所述确定模块具体用于:

从所述环境隔离请求中提取所述地址信息;

通过查询RPC服务端的接口获取需要进行环境隔离的服务;

将与所述源IP地址对应的RPC客户端作为所述需要进行环境隔离的RPC客户端。

优选地,还包括:

第一检测模块,在接收到所述RPC客户端发送的环境隔离成功响应时向所述RPC客户端发送隔离状态检查指示,并将所述RPC客户端返回的查询结果反馈至所述用户;所述状态检查指示用于使所述RPC客户端查询自身与各个下游RPC服务端之间的接口是否正常,并将所述查询结果发送至所述环境隔离设备。

优选地,还包括:

第二检测模块,在接收到所述RPC客户端发送的环境隔离成功响应时检测所述RPC客户端的各下游RPC服务端的状态是否正常,以及判断所述路由地址池中的合并地址在经过预设的路由规则筛选后是否为空,并在存在状态为异常的下游RPC服务端或所述路由地址池中的合并地址在经过预设的路由规则筛选后为空时,向所述用户发送下游存活安全告警提示。

优选地,还包括:

撤销模块,当接收到所述用户发送的环境隔离取消请求时向所述RPC客户端发送环境隔离取消指示,以使所述RPC客户端将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

由此可见,通过应用本申请的技术方案,预先令RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址,RPC客户端接收环境隔离设备发送的环境隔离指示后停止自动刷新路由地址池,并将路由地址池中当前的地址替换为合并地址,后续当RPC客户端接收到用户发送的服务调用请求时,根据路由地址池中的合并地址生成有效的目标地址,将服务调用请求发送至与目标地址对应的RPC服务端,并将RPC服务端返回的业务处理结果反馈至用户。从而在不对硬件进行改动的前提下,解决了在RPC调用过程中进 行环境隔离所带来的复杂度高、无法完全隔离等问题,保证了环境隔离的安全性以及稳定性。

附图说明

图1为现有技术中的RPC原理示意图;

图2为为现有技术中基于请求路由的隔离架构示意图;

图3为本申请提出的一种环境隔离方法的流程示意图;

图4为本申请具体实施例提出的一种隔离优化方案示意图;

图5为本申请提出的另一种环境隔离方法的流程示意图;

图6为本申请具体实施例中进行隔离的流程示意图;

图7为本申请具体实施例中隔离的整体架构图;

图8为本申请提出的一种RPC客户端的结构示意图

图9为本申请提出的一种环境隔离设备的结构示意图。

具体实施方式

有鉴于背景技术中的问题,发明人在实现本申请的技术方案的过程中参考了现有的基于请求路由的隔离模型,针对现有的RPC请求路由模型提出了一种环境隔离方法,该方法应用于RPC客户端,为了在用户针对该RPC客户端实现环境隔离,本申请额外设置了与该RPC客户端相连的环境隔离设备,在本申请的优选实施例中,该环境隔离设备可结合可视化平台的功能设置为隔离控制台,该隔离控制台能够将RPC客户端与RPC服务端之间的上下游关系以及状态进行可视化展示,并且面向用户(技术人员)提供隔离调用操作。除此之外,由于后续需要利用RPC客户端中的路由地址池获取地址,因此本申请的技术方案设置路由地址池按照预设的周期自动刷新预置的全量地址(现有的RPC客户端中的路由地址池中的地址固定且无法修改)。该全量地址是为应用与当前所有设备上的地址(包括参与隔离的设备和不参与隔离的设备),预 先设置且地址固定。

如图3所示,为本申请提出的一种环境隔离方法的流程示意图,包括以下步骤:

S301,所述RPC客户端接收所述环境隔离设备发送的环境隔离指示。

为了保持隔离环境的真实性以及安全性,当用户当需要发起环境隔离时,用户将请求发送至环境隔离设备,环境隔离设备在根据请求中携带的地址信息确定了相应的RPC客户端之后,即向RPC客户端发送环境隔离指示。

S302,所述RPC客户端停止自动刷新所述路由地址池,并将所述路由地址池中当前的地址替换为合并地址。

有别于传统隔离在路由规则上改动,本申请的技术方案主要针对RPC客户端的路由地址池进行改进。为此本申请技术方案预设了手动地址列表,该手动地址列表由参与环境隔离的RPC客户端以及RPC服务端的地址组成,该手动地址列表可通过环境隔离设备设置,技术人员也可以通过环境隔离设备对其进行修改。

基于RPC客户端路由地址池中当前的地址以及预设的手动地址列表中的地址,RPC客户端将二者合并生成合并地址,并将该合并地址替换路由地址池中原有的地址,在本申请的优选实施例中,具体的步骤如下:

步骤a)从所述手动地址列表中筛选可用于地址合并的第一子地址;

步骤b)将停止自动刷新后的所述路由地址池中的地址作为第二子地址;

步骤c)根据预设的地址合并算法,将所述第一子地址以及所述第二子地址合并为所述合并地址;

步骤d)将所述路由地址池中当前的地址删除,并将所述合并地址添加至所述路由地址池中。

上述步骤通过地址合并算法完成手动设置地址和自动刷新的全量地址快 速有效合并,并且合并后不影响归组情况,得到合并地址后,后续即可基于RPC请求路由的功能完成环境隔离,操作简单、改动小,不触碰路由层文件,避免出错。

在执行完毕以上步骤后,为了使用户知晓当前的环境隔离进度,本申请优选实施例令RPC客户端向所述环境隔离设备返回环境隔离成功响应。环境隔离设备在接收到该环境隔离成功响应后,一方面将其反馈至用户,另一方面指示RPC客户端对隔离状态进行检查,从而保证隔离环境的稳定。因此当RPC客户端接收到所述环境隔离设备发送的隔离状态检查指示时,查询自身与各个下游RPC服务端之间的接口是否正常,并将查询结果发送至所述环境隔离设备,以使所述环境隔离设备向所述用户反馈所述查询结果。

S303,当所述RPC客户端接收到用户发送的服务调用请求时,根据所述路由地址池中的合并地址生成有效的目标地址。

由于路由地址池中可能会存在多个合并地址,并且根据实际应用场景的不同也需要采用不同的路由规则(该路由规则一般在客户端中存储,需要技术人员操作更新,与IP地址并非一一对应,但是与IP地址之间有一些泛化的匹配规则),因此在通过合并地址得到有效的目标地址的过程中,需要利用预设的路由规则对合并地址进行筛选。具体地,本申请优选实施例首先查询预设的路由规则,以及在所述路由地址池中查询可用的设备地址,再根据所述路由规则对查询到的设备地址进行筛选,若存在符合所述路由规则的设备地址,将所述设备地址作为所述目标地址;若不存在符合所述路由规则的设备地址,向所述用户返回服用调用失败响应。

结合图4所示的隔离优化方案示意图,该具体实施例的隔离优化方案流程如下:

步骤a)客户向RPC客户端发起服务请求。RPC客户端会查询路由地址池 中可用的合并地址和路由规则。

步骤b)若用户事先通过环境隔离设备开启了隔离,RPC客户端的路由地址池将会在之前关闭自动刷新且通过读取手动设置的地址列表,以及将手动设置的地址列表和路由地址池中截至到自动刷新停止时的全量地址通过地址合并算法进行快速合并。此时针对路由地址池中的合并地址经过各种路由规则的过滤后取得有效的目标地址,也可能由于条件不满足(下游应用并不存在),合并后地址为空。

S304,所述RPC客户端将所述服务调用请求发送至与所述目标地址对应的RPC服务端,并将所述RPC服务端返回的业务处理结果反馈至所述用户。

通过S301-S304的环境隔离优化方案,有效地提升了隔离的实时性、安全性、稳定性和隔离环境的真实性,同时降低了成本以及简化了操作。后续当用户需要取消隔离时,用户亦是通过环境隔离设备向RPC客户端下达环境隔离取消指示。相应地,RPC客户端在接收到环境隔离设备发送的环境隔离取消指示后,将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

在S303的具体实施例中,当确定了有效的目标地址后后,RPC客户端即向服务端发送请求,并接受服务端的结果反馈,完成该次用户的服务调用。后续若用户需要取消隔离,那么只需要恢复地址池的自动刷新即可,原有的地址将被刷新成全量地址,这样下次请求就不会定向。换言之,环境隔离取消操作中不需要做任何清理工作,简单高效。

以上实施例以RPC客户端的角度详细阐述了环境隔离的具体实现方式以及细节。除此之外,本申请以环境隔离设备的角度,还提出了另一种环境隔离方法,该方法应用于环境隔离设备,且需要保证环境隔离设备与所述RPC 客户端相连(实体连接或是逻辑连接均可),如图5所示,该方法包括以下步骤:

S501,根据用户发送的环境隔离请求中所携带的地址信息确定需要进行环境隔离的RPC客户端,所述RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址。

在本申请的优选实施例中,地址信息可具体为源IP地址以及目标IP地址,基于这两个详细的IP地址,该步骤首先从所述环境隔离请求中提取所述地址信息,随后通过查询RPC服务端的接口获取需要进行环境隔离的服务,最终将与所述源IP地址对应的RPC客户端作为所述需要进行环境隔离的RPC客户端。

S502,向所述RPC客户端发送环境隔离指示,以使所述RPC客户端停止自动刷新所述路由地址池以及将所述路由地址池中当前的地址替换为合并地址,所述合并地址为所述RPC客户端根据所述路由地址池中当前的地址以及预设的手动地址列表中的地址合并生成。

正常情况下,本申请中的RPC客户端在环境隔离初步完成后会向环境隔离设备返回响应,因此为了保证环境隔离后的稳定性,环境隔离设备可发起隔离状态检查以及下游服务可用检查,相应流程如下:

(一)隔离状态检查

若接收到所述RPC客户端发送的环境隔离成功响应,向所述RPC客户端发送隔离状态检查指示,并将所述RPC客户端返回的查询结果反馈至所述用户;所述状态检查指示用于使所述RPC客户端查询自身与各个下游RPC服务端之间的接口是否正常,并将查询结果发送至所述环境隔离设备。

(二)下游服务可用检查

若接收到所述RPC客户端发送的环境隔离成功响应,检测所述RPC客户端的各下游RPC服务端的状态是否正常,以及判断所述路由地址池中的合并地址 在经过预设的路由规则筛选后是否为空;

若存在状态为异常的下游RPC服务端,或所述路由地址池中的合并地址在经过预设的路由规则筛选后为空,向所述用户发送下游存活安全告警提示。

最终,在用户需要取消环境隔离的时候,用户会将环境隔离取消请求发送至环境隔离设备,当环境隔离设备接收到所述用户发送的环境隔离取消请求时,向所述RPC客户端发送环境隔离取消指示,以使所述RPC客户端将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

需要说明的是,上述的隔离流程中请求隔离以及指示的下发一般可通过REST协议交互。然而,在这些过程中密码很可能被恶意的用户劫持,发送恶意隔离请求。因此本申请的优选实施例通过Digest摘要认证方式设置过期时间30秒(该时间可以根据实际情况进行调整),从而有效防止密码明文传输、重放攻击、支持客户端对服务器验证、有一定的防篡改能力,同时对用户密码加密,以避免密码被盗用造成用户的损失。Response加密算法如下:

1.HA1=MD5(A1)=MD5(username:realm:password)

2.HA2=MD5(A2)=MD5(method:digestURI:MD5(entityBody))

3.Response=MD5(HA1:nonce:nonceCount:clientNonce:qop:HA2)

以上实施例阐述了环境隔离设备如何配和RPC客户端实现环境隔离以及环境隔离后如何实现用户的服务调用请求,为了进一步阐述本发明的技术思想,现结合图6所示的具体应用场景,对本发明的技术方案进行说明:

步骤1.用户通过浏览器向隔离控制台发起隔离请求,并向隔离控制台提供隔离源IP,目标IP。

步骤2.隔离控制台通过源IP和目标IP查询服务端接口,获得要隔离的服 务,再根据源IP向源IP所在的RPC客户端发起隔离请求,并且传递目标IP参数。

步骤3.RPC客户端获取到上一步骤传递的目标IP地址后,停止地址池自动刷新,并且修改路由地址池里的地址。具体地,通过地址合并算法把手动设置的地址列表中的地址和原地址池中的地址进行有效合并。

步骤4.上一步骤执行结束后,隔离控制台会向用户发送执行成功或者失败的响应。

步骤5.若RPC客户端成功执行请求路由定向,控制台会开启隔离状态检查和下游存活安全检查,隔离状态检查可以反馈链路隔离状况,比如开启隔离,关闭隔离亦或是状态异常,下游存活安全检查针对下游机器重启或是通过路由规则筛选后最终地址为空的情况进行监控,防止因为下游不可用造成上游稳定性问题,影响最终用户。

步骤6.前五个步骤已经完成了环境隔离,这时客户可以向RPC客户端发起请求,RPC客户端通过查询路由地址池获得合并地址,再经过中心、单元、同机房等过滤规则筛选后得到最终有效的目标地址(也可能合并后结果为空),将RPC客户端的服务请求发送到指定的RPC服务端

步骤7.RPC服务端处理客户端发来的请求,完成业务处理后,返回处理结果给RPC客户端

步骤8.RPC客户端将结果展示给用户。

步骤9.当用户想取消隔离时,向隔离控制台发送取消隔离请求,隔离控制台根据源IP向源IP所在的RPC客户端发起取消隔离请求。

步骤10.RPC客户端接收到取消请求后,恢复刷新机器地址池,并将执行结果返回隔离控制台。

步骤11.在上一步骤执行结束后,隔离控制台会向客户发送执行成功或者失败的响应。

基于上述流程,该具体实施例整体架构如上图所示,特点如下:

1.不需要对应用做任何修改;

2.不需要单独部署,运维;

3.实时生效;

4.REST数据传输采用标准Digest摘要认证,过期时间30秒,有效防止密码明文传输、重放攻击、支持客户端对服务器验证、有一定的防篡改能力;

5.有服务状态和下游存活安全检查,稳定性高;

6.部署成本低,不需要特殊路由硬件支持;

7.操作简单,技术人员可通过控制台可视化进行操作,也可以通过REST协议直接发起请求;

8.隔离和取消隔离方便,取消隔离也不需要做任何清理工作。

为达到以上技术目的,本申请还提出了一种RPC客户端,如图8所示,所述RPC客户端与预设的环境隔离设备相连,所述RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址,该RPC客户端还包括:

接收模块810,接收所述环境隔离设备发送的环境隔离指示;

替换模块820,所述RPC客户端停止自动刷新所述路由地址池,并将所述路由地址池中当前的地址替换为合并地址,所述合并地址为所述RPC客户端根据所述路由地址池中当前的地址以及预设的手动地址列表中的地址合并生成;

生成模块830,当所述接收模块接收到用户发送的服务调用请求时根据所述路由地址池中的合并地址生成有效的目标地址;

发送模块840,将所述服务调用请求发送至与所述目标地址对应的RPC服务端,并将所述RPC服务端返回的业务处理结果反馈至所述用户。

在具体的应用场景中,所述手动地址列表由参与环境隔离的RPC客户端以 及RPC服务端的地址组成,所述替换模块将所述路由地址池中当前的地址替换为合并地址,具体为:

从所述手动地址列表中筛选可用于地址合并的第一子地址;

将停止自动刷新后的所述路由地址池中的地址作为第二子地址;

根据预设的地址合并算法,将所述第一子地址以及所述第二子地址合并为所述合并地址;

将所述路由地址池中当前的地址删除,并将所述合并地址添加至所述路由地址池中。

在具体的应用场景中,所述生成模块具体用于:

查询预设的路由规则,以及在所述路由地址池中查询可用的设备地址,;

根据所述路由规则对查询到的设备地址进行筛选;

若存在符合所述路由规则的设备地址,将所述设备地址作为所述目标地址;

若不存在符合所述路由规则的设备地址,向所述用户返回服用调用失败响应。

在具体的应用场景中,还包括:

响应模块,向所述环境隔离设备返回环境隔离成功响应;

查询模块,当接收到所述环境隔离设备发送的隔离状态检查指示时查询自身与各个下游RPC服务端之间的接口是否正常,并将查询结果发送至所述环境隔离设备,以使所述环境隔离设备向所述用户反馈所述查询结果。

在具体的应用场景中,还包括:

撤销模块,在接收到所述环境隔离设备发送的环境隔离取消指示时将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

相应地,本申请还提出了一种环境隔离设备,如图9所示,所述环境隔离设备与RPC客户端相连,该环境隔离设备包括:

确定模块910,根据用户发送的环境隔离请求中所携带的地址信息确定需要进行环境隔离的RPC客户端,所述RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址;

发送模块920,向所述RPC客户端发送环境隔离指示,以使所述RPC客户端停止自动刷新所述路由地址池以及将所述路由地址池中当前的地址替换为合并地址,所述合并地址为所述RPC客户端根据所述路由地址池中当前的地址以及预设的手动地址列表中的地址合并生成。

在具体的应用场景中,所述地址信息具体为源IP地址以及目标IP地址,所述确定模块具体用于:

从所述环境隔离请求中提取所述地址信息;

通过查询RPC服务端的接口获取需要进行环境隔离的服务;

将与所述源IP地址对应的RPC客户端作为所述需要进行环境隔离的RPC客户端。

在具体的应用场景中,还包括:

第一检测模块,在接收到所述RPC客户端发送的环境隔离成功响应时向所述RPC客户端发送隔离状态检查指示,并将所述RPC客户端返回的查询结果反馈至所述用户;所述状态检查指示用于使所述RPC客户端查询自身与各个下游RPC服务端之间的接口是否正常,并将所述查询结果发送至所述环境隔离设备。

在具体的应用场景中,还包括:

第二检测模块,在接收到所述RPC客户端发送的环境隔离成功响应时检测所述RPC客户端的各下游RPC服务端的状态是否正常,以及判断所述路由地址池中的合并地址在经过预设的路由规则筛选后是否为空,并在存在状态为异 常的下游RPC服务端或所述路由地址池中的合并地址在经过预设的路由规则筛选后为空时,向所述用户发送下游存活安全告警提示。

在具体的应用场景中,还包括:

撤销模块,当接收到所述用户发送的环境隔离取消请求时向所述RPC客户端发送环境隔离取消指示,以使所述RPC客户端将所述路由地址池中的合并地址刷新为所述全量地址,并使路由地址池按照预设的周期自动刷新预置的所述全量地址。

通过应用本申请的技术方案,预先令RPC客户端中的路由地址池按照预设的周期自动刷新预置的全量地址,RPC客户端接收环境隔离设备发送的环境隔离指示后停止自动刷新路由地址池,并将路由地址池中当前的地址替换为合并地址,后续当RPC客户端接收到用户发送的服务调用请求时,根据路由地址池中的合并地址生成有效的目标地址,将服务调用请求发送至与目标地址对应的RPC服务端,并将RPC服务端返回的业务处理结果反馈至用户。从而在不对硬件进行改动的前提下,解决了在RPC调用过程中进行环境隔离所带来的复杂度高、无法完全隔离等问题,保证了环境隔离的安全性以及稳定性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本申请序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1