服务集成中的数据传输方法、装置、设备及存储介质与流程

文档序号:24887559发布日期:2021-04-30 13:11阅读:130来源:国知局
服务集成中的数据传输方法、装置、设备及存储介质与流程

本申请涉及云计算服务领域,尤其涉及一种服务集成中的数据传输方法、装置、设备及计算机可读存储介质。



背景技术:

集成平台即服务(integrationplatformasaservice,ipaas)集成应用是为了将不同系统和服务按照一定逻辑集成起来而开发的应用程序。相关技术中,目标客户的很多内部系统、数据库、私有软件即服务(software-as-a-service,saas)系统都是部署在客户内网中的,而ipaas系统通常部署在公有云上的虚拟私有云(virtualprivatecloud,vpc)上,因而ipaas系统不能直连客户内网的私有服务和数据库,从而无法完成对内网的私有服务和数据库的集成逻辑。此外,对于部分部署在不同的虚拟私有云上的待集成系统和数据库,由于跨地域之间的vpc无法通过客户内网直连,因此也无法通过部署在vpc上的ipaas系统进行集成。可见,相关技术中的ipaas服务集成方案在部分场景下存在网络不通的限制因素,无法很好地满足服务集成需求。



技术实现要素:

本申请实施例提供一种服务集成中的数据传输方法、装置、设备及计算机可读存储介质,能够实现ipaas系统与租户内网之间网络的互通,并实现对内网中服务的集成逻辑,从而可以实现对同一租户不同内网或不同vpc中服务的集成逻辑,进而可以完善ipaas系统的服务集成能力,并能有效降低ipaas系统的开发、维护和迭代成本。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种服务集成中的数据传输方法,包括:

集成平台即服务ipaas系统的网关接收所述ipaas系统的连接器发送的数据传输请求;所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一虚拟私有云vpc上;

基于预先配置的服务配置信息,确定所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;其中,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;

通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

本申请实施例提供一种服务集成中的数据传输方法,包括:

服务代理接收ipaas系统的网关发送的所述ipaas系统的连接器的数据传输请求和所述连接器要访问的目标服务的地址标识;其中,所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一vpc上,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中;

基于所述地址标识,将所述连接器的数据传输请求发送至所述接器要访问的目标服务;

在接收到所述连接器要访问的目标服务发送的响应数据的情况下,基于所述目标服务的地址标识,确定所述服务代理与所述网关进行数据传输的第一传输连接;其中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;

通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器,将所述目标服务的响应数据发送至所述目标连接器。

在一些实施例中,在所述服务代理接收到所述连接器要访问的目标服务发送的响应数据之前,所述方法还包括:所述服务代理向所述网关发送第一连接建立请求,以使所述网关与所述服务代理建立第一传输连接;其中,所述第一连接建立请求中包括所述服务代理的服务列表,以使所述网关在建立所述第一传输连接后,针对所述服务列表中的每一服务,为所述服务分配一转发代理地址,并将所述服务的地址标识与所述转发代理地址之间的对应关系添加至服务配置信息中。

在一些实施例中,所述基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务,包括:基于所述地址标识,确定所述服务代理与所述连接器要访问的目标服务之间预先建立的第三传输连接;通过所述第三传输连接,将所述连接器的数据传输请求发送至所述目标服务;所述通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器,将所述目标服务的响应数据发送至所述连接器,包括:通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器以及与所述连接器预先建立的第一传输连接,并通过所述第一传输连接将所述目标服务的响应数据发送至所述连接器。

在一些实施例中,在基于所述地址标识,确定所述服务代理与所述连接器要访问的目标服务之间预先建立的第三传输连接之前,所述方法还包括:在接收到所述网关发送的携带所述连接器要访问的目标服务的地址标识的第三连接建立请求的情况下,基于所述目标服务的地址标识,与所述目标服务建立第三传输连接。

在一些实施例中,所述基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务,包括:基于所述地址标识,查询所述服务代理的连接状态跟踪表,得到所述服务代理的地址和所述连接器要访问的目标服务的地址;通过所述服务代理的地址和所述目标服务的地址将所述连接器的数据传输请求发送至所述连接器要访问的目标服务;在接收到所述连接器要访问的目标服务发送的响应数据的情况下,在所述基于所述目标服务的地址标识,确定所述服务代理与所述网关进行数据传输的第一传输连接之前,还包括:获取所述连接器要访问的目标服务的地址和接收所述目标服务的响应数据的服务代理的地址;基于所述目标服务的地址和所述服务代理的地址,查询所述服务代理的连接状态跟踪表,得到所述目标服务的地址标识。

在一些实施例中,所述基于所述地址标识,查询所述服务代理的连接状态跟踪表,得到所述服务代理的地址和所述连接器要访问的目标服务的地址,包括:在所述服务代理的连接状态跟踪表中查询不到所述地址标识对应的记录的情况下,基于所述连接器要访问的目标服务的地址,为所述目标服务分配服务代理的地址;将所述目标服务的地址、所述服务代理的地址和所述地址标识组成的记录添加至所述服务代理的连接状态跟踪表中。

本申请实施例提供一种服务集成中的数据传输装置,包括:

第一接收模块,用于集成平台即服务ipaas系统的网关接收所述ipaas系统的连接器发送的数据传输请求;所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一虚拟私有云vpc上;

第一映射模块,用于基于预先配置的服务配置信息,确定所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;其中,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;

第一发送模块,用于通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

在一些实施例中,所述装置还包括:第一建立模块,用于在接收到所述服务代理发起的第一连接建立请求的情况下,与所述服务代理建立第一传输连接;其中,所述第一连接建立请求中包括所述服务代理的服务列表;第一分配模块,用于针对所述服务列表中的每一服务,为所述服务分配一转发代理地址,并将所述服务的地址标识与所述转发代理地址之间的对应关系添加至所述服务配置信息中。

在一些实施例中,所述数据传输请求为所述连接器通过与所述网关预先建立的第二传输连接发送的,所述第一映射模块还用于:基于所述第二传输连接的标识,查询所述服务配置信息,得到所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;所述第一发送模块还用于:通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,确定与目标服务预先建立的第三传输连接,并通过所述第三传输连接,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

在一些实施例中,所述装置还包括:第二接收模块,用于通过所述第一传输连接,接收所述服务代理返回的响应数据和所述目标服务的地址标识;其中,所述响应数据为所述目标服务通过所述第三传输连接发送至所述服务代理的;第一查询模块,用于基于所述目标服务的地址标识,查询所述服务配置信息,得到所述第二传输连接的标识;第二发送模块,用于基于所述第二传输连接的标识,将所述响应数据通过所述第二传输连接发送至所述连接器。

在一些实施例中,所述装置还包括:第二建立模块,用于在接收到所述连接器发送的第二连接建立请求的情况下,与所述连接器建立第二传输连接;第二查询模块,用于基于所述第二连接建立请求所请求的转发代理地址,查询所述服务配置信息,得到所述连接器要访问的目标服务的地址标识,以及与所述目标服务的服务代理进行数据传输的第一传输连接;第三发送模块,用于基于所述第一传输连接,将携带所述目标服务的地址标识的第三连接建立请求发送至所述服务代理,以使所述服务代理基于所述目标服务的地址标识,与所述目标服务建立第三传输连接。

在一些实施例中,所述第一映射模块还用于:获取发送所述数据传输请求的连接器的地址、接收所述数据传输请求的转发代理的地址以及所述连接器要访问的目标服务的地址;基于所述连接器的地址和所述转发代理的地址,查询所述网关的连接状态跟踪表,得到所述连接器要访问的目标服务的地址标识;基于所述转发代理的地址,查询预先配置的服务配置信息,得到所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;所述第一发送模块还用于:通过所述第一传输连接,将所述数据传输请求、所述目标服务的地址和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,查询所述服务代理的连接状态跟踪表,确定所述服务代理的地址,并通过所述服务代理的地址和所述目标服务的地址将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

在一些实施例中,所述第一映射模块还用于:在所述网关的连接状态跟踪表中查询不到所述连接器的地址和所述转发代理的地址对应的记录的情况下,基于所述目标服务的地址,生成所述连接器要访问的目标服务的地址标识;将所述连接器的地址、所述转发代理的地址和所述目标服务的地址标识组成的记录添加至所述网关的连接状态跟踪表中。

在一些实施例中,所述装置还包括:第三接收模块,用于通过所述第一传输连接,接收所述服务代理返回的响应数据和所述连接器要访问的目标服务的地址标识;第三查询模块,用于基于所述目标服务的地址标识,查询所述网关的连接状态跟踪表,得到发送所述响应数据的转发代理的地址以及接收所述响应数据的连接器的地址;第四发送模块,用于基于所述转发代理的地址和所述连接器的地址,将所述响应数据发送至所述连接器。

本申请实施例提供一种服务集成中的数据传输装置,包括:

第四接收模块,用于服务代理接收ipaas系统的网关发送的所述ipaas系统的连接器的数据传输请求和所述连接器要访问的目标服务的地址标识;其中,所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一vpc上,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中;

第五发送模块,用于基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务;

第五接收模块,用于在接收到所述连接器要访问的目标服务发送的响应数据的情况下,基于所述目标服务的地址标识,确定所述服务代理与所述网关进行数据传输的第一传输连接;其中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;

第六发送模块,用于通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器,将所述目标服务的响应数据发送至所述连接器。

在一些实施例中,所述装置还包括:第三建立模块,用于所述服务代理向所述网关发送第一连接建立请求,以使所述网关与所述服务代理建立第一传输连接;其中,所述第一连接建立请求中包括所述服务代理的服务列表,以使所述网关在建立所述第一传输连接后,针对所述服务列表中的每一服务,为所述服务分配一转发代理地址,并将所述服务的地址标识与所述转发代理地址之间的对应关系添加至服务配置信息中。

在一些实施例中,所述第五发送模块还用于:基于所述地址标识,确定所述服务代理与所述连接器要访问的目标服务之间预先建立的第三传输连接;通过所述第三传输连接,将所述连接器的数据传输请求发送至所述目标服务;所述第六发送模块还用于:通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器以及与所述连接器预先建立的第一传输连接,并通过所述第一传输连接将所述目标服务的响应数据发送至所述连接器。

在一些实施例中,所述装置还包括:第四建立模块,用于在接收到所述网关发送的携带所述连接器要访问的目标服务的地址标识的第三连接建立请求的情况下,基于所述目标服务的地址标识,与所述目标服务建立第三传输连接。

在一些实施例中,所述第五发送模块还用于:基于所述地址标识,查询所述服务代理的连接状态跟踪表,得到所述服务代理的地址和所述连接器要访问的目标服务的地址;通过所述服务代理的地址和所述目标服务的地址将所述连接器的数据传输请求发送至所述连接器要访问的目标服务;所述第五接收模块还用于:获取所述连接器要访问的目标服务的地址和接收所述目标服务的响应数据的服务代理的地址;基于所述目标服务的地址和所述服务代理的地址,查询所述服务代理的连接状态跟踪表,得到所述目标服务的地址标识。

在一些实施例中,所述第五发送模块还用于:在所述服务代理的连接状态跟踪表中查询不到所述地址标识对应的记录的情况下,基于所述连接器要访问的目标服务的地址,为所述目标服务分配服务代理的地址;将所述目标服务的地址、所述服务代理的地址和所述地址标识组成的记录添加至所述服务代理的连接状态跟踪表中。

本申请实施例提供一种服务集成中的数据传输设备,包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的方法。

本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现本申请实施例提供的方法。

本申请实施例具有以下有益效果:

通过部署在第一vpc上的ipaas系统的网关接收ipaas系统的连接器发送的数据传输请求,并基于预先配置的服务配置信息,对该数据传输请求进行地址映射处理,得到数据传输请求的目标服务的地址标识,以及网关与目标服务的服务代理进行数据传输的第一传输连接,其中,服务代理部署在租户的内网中,目标服务部署在该内网或第二vpc中,且第一传输连接为基于服务代理发起的第一连接建立请求预先建立的,通过第一传输连接,将数据传输请求和目标服务的地址标识发送至服务代理,以使服务代理基于该地址标识,将该数据传输请求发送至目标服务。这样,能够实现ipaas系统与租户内网之间网络的互通,并实现对内网中服务的集成逻辑,从而可以实现对同一租户不同内网或不同vpc中服务的集成逻辑,进而可以完善ipaas系统的服务集成能力,并能有效降低ipaas系统的开发、维护和迭代成本。

附图说明

图1a是相关技术中部署ipaas系统的一个可选的场景示意图;

图1b是相关技术中部署ipaas系统的一个可选的场景示意图;

图1c是相关技术中部署ipaas系统的一个可选的场景示意图;

图1d是相关技术中ipaas系统私有化部署的一个可选的架构示意图;

图1e是本申请实施例提供的集成服务系统的一个可选的架构示意图;

图2a是本申请实施例提供的服务集成中的数据传输设备的一个可选的结构示意图;

图2b是本申请实施例提供的服务集成中的数据传输设备的一个可选的结构示意图;

图3是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图4是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图5a是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图5b是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图5c是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图6a是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图6b是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图7是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图8a是本申请实施例提供的服务集成系统的一种实现架构示意图;

图8b是本申请实施例提供的服务集成系统的一种实现架构示意图;

图8c是本申请实施例提供的服务集成系统中各模块之间的交互流程示意图;

图8d是本申请实施例提供的服务集成系统中私有云元数据的状态转移示意图;

图9是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图;

图10是本申请实施例提供的采用流量转发模式进行端口映射的服务集成系统的组成架构示意图;

图11是本申请实施例提供的采用nat模式进行端口映射的服务集成系统的组成架构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

为了更好地理解本申请实施例提供的服务集成中的数据传输方法,下面先对相关技术中的ipaas系统的部署方案进行说明。

相关技术中,ipaas系统在某些场景下存在限制因素,无法满足集成需求。例如在如下的场景中,通过ipaas系统无法完成集成逻辑:

1)场景1:

参见图1a,在该场景下,目标租户的内部系统11、数据库12部署在内网10中、内部私有saas21部署在内网20中,而ipaas系统31部署在公有云vpc上,在没有任何代理、虚拟专有网络(virtualprivatenetwork,vpn)等第三方工具的辅助时,ipaas系统31可以直连公网saas32,但不能直连内网10中的内部系统11和数据库12,以及内网20中的内部私有saas21,从而无法完成对内部系统11、数据库12以及私有saas21的集成逻辑;

2)场景2:

参见图1b,在该场景下,商户系统41和数据库42部署在腾讯云中的商户vpc40上,ipaas系统51部署在腾讯云中的ipaasvpc50上,当商户vpc40与ipaasvpc50属于不同地域(region)时,由于跨地域之间的vpc无法通过内网直连,因此也无法通过部署在ipaasvpc50上的ipaas系统51对商户系统41和数据库42进行集成。同样的,参见图1c,hr系统61和数据库62部署在腾讯云中的自研vpc60上,ipaas系统71部署在腾讯云中的ipaasvpc70上,当自研vpc60与ipaasvpc70属于不同地域时,也无法通过部署在ipaasvpc70上的ipaas系统71对hr系统61和数据库62进行集成。

可见,在上述场景中,由于ipaas系统与租户的内网不能互通,并且ipaas系统无法通过内网线路访问公有云vpc或自研vpc上的服务,导致相关技术中的ipaas系统的应用场景受限,无法很好地满足服务集成需求。

针对上述问题,参见图1d,相关技术中采用在目标租户的内网80部署一套完整的私有ipaas系统81的方式,利用私有ipaas系统81打通同一个内网中的数据库82、内部私有saas83,同时私有ipaas系统81支持与公网saas32的互通,但是私有ipaas系统81与部署在另一内网90中的数据库91和内部私有saas92之间的网络并不互通。

因此,上述相关技术中ipaas系统私有化部署的方式并不能完全解决内网互通问题,存在如下问题:1)无法支持对多个不互通的内网或vpc中的服务集成,假如租户拥有一个以上内网时,一套私有ipaas不能满足多个不互通的内网之间服务和数据库的集成;2)成本高,多个客户需要部署多套私有ipaas系统,资源要求高;3)迭代更新周期长,ipaas系统每次迭代更新的同时,需要同步更新所有部署在租户内网的私有ipaas系统;4)维护难,不同客户的资源、网络等方面存在差异,私有ipaas系统的运维成本会很大。

本申请实施例提供一种服务集成中的数据传输方法、装置、设备和计算机可读存储介质,能够实现ipaas系统与租户内网之间网络的互通,并实现对内网中服务的集成逻辑,从而可以实现对同一租户不同内网或不同vpc中服务的集成逻辑,进而可以完善ipaas系统的服务集成能力,并能有效降低ipaas系统的开发、维护和迭代成本。下面说明本申请实施例提供的服务集成中的数据传输设备的示例性应用,本申请实施例提供的服务集成中的数据传输设备可以是ipaas系统的网关,也可以是部署在租户内网中的服务代理。在实施时,该网关和该服务代理均可以实施为笔记本电脑,平板电脑,台式计算机,车载导航仪,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明作为服务集成中的数据传输设备的网关和服务代理均实施为服务器时的示例性应用。

参见图1e,图1e是本申请实施例提供的集成服务系统100的一个可选的架构示意图,可以将内网中的服务按照一定逻辑集成起来,该集成服务系统100包括部署在租户的内网(示例性示出了内网400-1和内网400-2)中的服务代理(示例性示出了服务代理410-1和服务代理410-2)和服务(示例性示出了服务420-1和服务420-2),部署在第一虚拟私有云上的ipaas系统500,以及ipaas系统500的网关510,服务代理与网关510之间可以实现网络互通,ipaas系统可以通过网关510和服务代理,与相应的服务之间进行数据传输互通,同时ipaas系统500还支持与公网saas32的互通。

网关510用于:接收所述ipaas系统的连接器发送的数据传输请求;所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一虚拟私有云vpc上;基于预先配置的服务配置信息,确定所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;其中,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

服务代理用于:接收ipaas系统的网关发送的所述ipaas系统的连接器的数据传输请求和所述连接器要访问的目标服务的地址标识;其中,所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一vpc上,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中;基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务;在接收到所述连接器要访问的目标服务发送的响应数据的情况下,基于所述目标服务的地址标识,确定所述服务代理与所述网关进行数据传输的第一传输连接;其中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器,将所述目标服务的响应数据发送至所述连接器。

在一些实施例中,网关510和服务代理均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdeliverynetwork,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。网关和服务代理可以通过有线或无线通信方式进行直接或间接地连接,本发明实施例中不做限制。

在一些实施例中,网关510和服务代理也均可以是区块链系统中的节点,其中,区块链系统可以是由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成的分布式节点,节点之间形成组成的点对点(p2p,peertopeer)网络,p2p协议是一个运行在传输控制协议(tcp,transmissioncontrolprotocol)之上的应用层协议。在区块链系统中,任何机器如服务器、终端都可以加入而成为节点。

参见图2a,图2a是本申请实施例提供的一种网关200的结构示意图,图2a所示的网关200包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。道路匹配设备200中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2a中将各种总线都标为总线系统240。

处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。

存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。

存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,readonlyme-mory),易失性存储器可以是随机存取存储器(ram,randomaccessmemor-y)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。

在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universalserialbus)等;

呈现模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);

输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。

在一些实施例中,本申请实施例提供的服务集成中的数据传输装置可以采用软件方式实现,图2a示出了存储在存储器250中的服务集成中的数据传输装置255,其可以是程序和插件等形式的软件,包括以下软件模块:第一接收模块2551、第一映射模块2552和第一发送模块2553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。

在另一些实施例中,本申请实施例提供的服务集成中的数据传输装置还可以采用硬件方式实现,作为示例,本申请实施例提供的服务集成中的数据传输装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的道路匹配方法,例如,硬件译码处理器形式的处理器可以采用一个或多个专用集成电路(applicationspecificintegratedcircuit,asic)、dsp、可编程逻辑器件(programmablelogicdevice,pld)、复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或其他电子元件。

参见图2b,图2b是本申请实施例提供的一种服务代理300的结构示意图,图2b所示的服务代理300包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。道路匹配设备300中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2b中将各种总线都标为总线系统340。

处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。

存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。

存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是rom,易失性存储器可以是ram。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。

在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、wifi和usb等;

呈现模块353,用于经由一个或多个与用户接口330相关联的输出装置331(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);

输入处理模块354,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。

在一些实施例中,本申请实施例提供的服务集成中的数据传输装置可以采用软件方式实现,图2b示出了存储在存储器350中的服务集成中的数据传输装置355,其可以是程序和插件等形式的软件,包括以下软件模块:第四接收模块3551、第五发送模块3552、第五接收模块3553和第六发送模块3554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。

在另一些实施例中,本申请实施例提供的服务集成中的数据传输装置还可以采用硬件方式实现,作为示例,本申请实施例提供的服务集成中的数据传输装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的道路匹配方法,例如,硬件译码处理器形式的处理器可以采用一个或多个asic、dsp、pld、cpld、fpga或其他电子元件。

下面将结合本申请实施例提供的网关的示例性应用和实施,说明本申请实施例提供的服务集成中的数据传输方法。

参见图3,图3是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,下面将结合图3示出的步骤进行说明,下述步骤的执行主体可以是前文的网关。

在步骤s101中,集成平台即服务ipaas系统的网关接收所述ipaas系统的连接器发送的数据传输请求;所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一虚拟私有云vpc上。

这里,第一vpc可以是公有云上任意合适的可以部署ipaas系统的vpc,ipaas系统的连接器需要通过连接相应的服务来实现服务的集成逻辑。数据传输请求为连接器要向目标服务获取数据的请求。

在步骤s102中,基于预先配置的服务配置信息,确定所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;其中,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的。

这里,连接器要访问的目标服务为连接器发送该数据传输请求最终需要访问的服务,目标服务的服务代理为用于协助网关与目标服务进行数据传输的代理服务器。目标服务的地址标识为可以唯一确定目标服务的地址的标识信息,可以是目标服务的网际互联协议(internetprotocol,ip)地址与端口的组合,也可以是基于目标服务的ip地址和端口生成的唯一标识,这里并不限定。第一传输连接为基于服务代理发起的第一连接建立请求预先建立的,可以是tcp连接,也可以是远程过程调用(remoteprocedurecall,rpc)连接。

服务配置信息可以是预先配置的用于对连接器的地址与目标服务器的地址进行地址映射所需的配置信息,可以包括但不限于表征连接器的地址与目标服务的地址之间的对应关系的信息、表征网关中接收数据传输请求的转发代理的地址与目标服务的地址之间的对应关系的信息、表征连接器与转发代理的地址组合与目标服务和目标服务的服务代理的地址组合之间的对应关系的信息等,还可以包括但不限于表征连接器的地址与第一传输连接之间的对应关系的信息、表征接收网关中接收数据传输请求的转发代理的地址与第一传输连接之间的对应关系的信息等。在实施时,可以根据实际情况采用合适的服务配置信息,这里并不限定。

例如,服务配置信息中可以包括连接器的地址与目标服务的地址标识,以及第一传输连接之间的映射关系,对数据传输请求进行地址映射处理时,可以根据发送数据传输请求的连接器的地址,查询服务配置信息,得到与该连接器的地址对应的目标服务的地址标识以及第一传输连接。再如,服务配置信息中可以包括网关中接收数据传输请求的转发代理的地址与目标服务的地址标识,以及第一传输连接之间的映射关系,对数据传输请求进行地址映射处理时,可以根据接收数据传输请求的转发代理的地址,查询服务配置信息,得到与该转发代理的地址对应的目标服务的地址标识以及第一传输连接。

目标服务的服务代理部署在租户的内网,目标服务可以是部署在内网中,也可以部署在租户的第二vpc中,这样,网关可以通过内网中的服务代理与内网中的服务进行网络互通,也可以通过内网中的服务代理与第二vpc中的服务进行网络互通。

在步骤s103中,通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

这里,网关可以通过第一传输连接,将数据传输请求和目标服务的地址标识发送至目标服务的服务代理,服务代理可以基于目标服务的地址标识确定目标服务的ip地址和端口,并基于确定的ip地址和端口,将数据传输请求发送至目标服务。

本申请实施例中,通过部署在第一vpc上的ipaas系统的网关接收ipaas系统的连接器发送的数据传输请求,并基于预先配置的服务配置信息,确定连接器要访问的目标服务的地址标识,以及网关与目标服务的服务代理进行数据传输的第一传输连接,其中,服务代理部署在租户的内网中,目标服务部署在该内网或第二vpc中,且第一传输连接为基于服务代理发起的第一连接建立请求预先建立的,通过第一传输连接,将数据传输请求和目标服务的地址标识发送至服务代理,以使服务代理基于该地址标识,将该数据传输请求发送至目标服务。这样,能够实现ipaas系统与租户内网之间网络的互通,并实现对内网中服务的集成逻辑,从而可以实现对同一租户不同内网或不同vpc中服务的集成逻辑,进而可以完善ipaas系统的服务集成能力,并能有效降低ipaas系统的开发、维护和迭代成本。

在一些实施例中,参见图4,图4是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,基于图3,在步骤s101之前还可以执行如下步骤s401至步骤s402,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的网关。

步骤s401中,在接收到所述服务代理发起的第一连接建立请求的情况下,与所述服务代理建立第一传输连接;其中,所述第一连接建立请求中包括所述服务代理的服务列表。

这里,服务代理可以主动向网关发起网络连接请求,网关在接收到服务代理发起的第一连接建立请求后,可以与该服务代理建立第一传输连接。

服务代理的服务列表中可以包括该服务代理可以连接的至少一个服务。

步骤s402中,针对所述服务列表中的每一服务,为所述服务分配一转发代理地址,并将所述服务的地址标识与所述转发代理地址之间的对应关系添加至所述服务配置信息中。

这里,转发代理地址为网关为服务列表中的每一服务分配的用于转发该服务对应的数据包的地址,可以是用于转发数据报文的端口,也可以包括用于转发数据报文的ip地址和端口。在实施时,网关在与服务代理建立连接之后。可以从当前可用的端口中选择一端口作为转发代理地址。

服务的地址标识可以是在服务列表中获取的服务的ip地址和端口,也可以是网关基于服务的ip地址和端口分配的唯一标识,这里并不限定。

服务配置信息可以是由网关存储维护的,也可以是由其他系统或模块存储维护的,例如,可以在第一vpc中部署一注册中心,用于存储维护服务配置信息。

本申请实施例中,服务代理可以主动向网关发起网络连接请求,网关在接收到服务代理发起的第一连接建立请求后,可以与该服务代理建立第一传输连接,并将该服务代理的服务列表中的每一服务分配一转发代理地址,将每一服务的地址标识与相应的转发代理地址之间的对应关系添加至服务配置信息中。这样,在连接器向目标服务进行数据传输时,网关可以基于接收数据传输请求的转发代理端口从服务配置信息中获取目标服务的地址标识。

在一些实施例中,参见图5a,图5a是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,基于图3,所述数据传输请求为所述连接器通过与所述网关预先建立的第二传输连接发送的,步骤s102可通过如下步骤s501实现,步骤s103可以通过如下步骤s502实现,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的网关。

步骤s501中,基于所述第二传输连接的标识,查询所述服务配置信息,得到所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接。

这里,第二传输连接为连接器与网关之间预先建立的连接,第二传输连接的标识为表征唯一第二传输连接的信息,可以是在建立第二传输连接时由连接器或网关生成的,也可以是该连接器的ip地址和端口的组合,或者是该网关中与该连接器连接的ip地址和端口的组合,这里并不限定。

服务配置信息中可以包括第二传输连接的标识与服务的地址标识,以及第一传输连接之间的对应关系,也可以包括第二传输连接的标识与转发代理的地址之间的对应关系,以及转发代理的地址与服务的地址标识、第一传输连接之间的对应关系,这里并不限定。

步骤s502中,通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,确定与目标服务预先建立的第三传输连接,并通过所述第三传输连接,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

这里,服务代理可以与目标服务预先建立第三传输连接,服务代理在接收到网关通过第一传输连接发送的目标服务的地址标识之后,可以基于该地址标识,确定与该目标服务对应的第三传输连接。

本申请实施例中,可以预先在连接器与网关之间建立第二传输连接,在网关与目标服务的服务代理之间建立第一传输连接,在目标服务的服务代理与目标服务之间建立第三传输连接,并基于第二传输连接的标识可以确定目标服务的地址标识和第一传输连接,基于目标服务的地址标识可以确定第三传输连接。这样,可以基于预先建立的连接器与目标服务之间的全链路连接,在进行数据传输时基于预先建立的全链路连接,可以简单快速地实现第一vpc中的ipaas系统与内网或第二vpc中的目标服务之间的网络互通。

在一些实施例中,参见图5b,图5b是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,基于图5a,该方法还可以包括如下步骤s503至步骤s505,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的网关。

步骤s503中,通过所述第一传输连接,接收所述服务代理返回的响应数据和所述目标服务的地址标识;其中,所述响应数据为所述目标服务通过所述第三传输连接发送至所述服务代理的。

这里,响应数据可以为目标服务通过服务代理返回给网关的响应数据包。

步骤s504中,基于所述目标服务的地址标识,查询所述服务配置信息,得到所述第二传输连接的标识。

这里,服务配置信息中可以包括表征目标服务于第二传输连接之间的对应关系的信息,通过查询该对应关系,可以确定目标服务的地址标识对应的第二传输连接的标识。

步骤s505中,基于所述第二传输连接的标识,将所述响应数据通过所述第二传输连接发送至所述连接器。

本申请实施例中,通过预先建立的第三传输连接、第一传输连接和第二传输连接,可以将目标服务的响应数据发送至ipaas系统的连接器,这样,可以简单快速地实现目标服务与ipaas系统的连接器之间的网络互通。

在一些实施例中,参见图5c,图5c是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,基于图5a,在步骤s101之前还可以执行如下步骤s506至步骤s508,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的网关。

步骤s506中,在接收到所述连接器发送的第二连接建立请求的情况下,与所述连接器建立第二传输连接。

这里,连接器可以主动向网关发送第二连接建立请求,从而网关可以与该连接器建立第二传输连接。在实施时,第二传输连接可以是tcp连接,也可以是rpc连接,这里并不限定。

步骤s507中,基于所述第二连接建立请求所请求的转发代理地址,查询所述服务配置信息,得到所述连接器要访问的目标服务的地址标识,以及与所述目标服务的服务代理进行数据传输的第一传输连接。

这里,连接器可以在第二连接建立请求中携带要请求的转发代理地址,转发代理地址可以包括转发代理的ip地址和端口。

步骤s508中,基于所述第一传输连接,将携带所述目标服务的地址标识的第三连接建立请求发送至所述服务代理,以使所述服务代理基于所述目标服务的地址标识,与所述目标服务建立第三传输连接。

这里,网关可以基于预先建立的第一传输连接向目标服务的服务代理发送第三连接建立请求,目标服务的服务代理在接收到第三连接建立请求后,可以基于目标服务的地址标识确定要连接的目标服务,从而与该目标服务建立第三传输连接。

本申请实施例中,网关在接收到连接器发送的第二连接建立请求的情况下,与连接器建立第二传输连接。并基于第二连接建立请求所请求的转发代理地址,确定连接器要访问的目标服务的地址标识,以及与目标服务的服务代理进行数据传输的第一传输连接,基于第一传输连接,将携带目标服务的地址标识的第三连接建立请求发送至服务代理,以使服务代理基于目标服务的地址标识,与目标服务建立第三传输连接。这样,可以快速建立ipaas系统与目标服务之间的全链路连接。

在一些实施例中,参见图6a,图6a是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,基于图3,步骤s102可以通过如下步骤s601至步骤s603实现,步骤s103可以通过如下步骤s604实现,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的网关。

步骤s601中,获取发送所述数据传输请求的连接器的地址、接收所述数据传输请求的转发代理的地址以及所述连接器要访问的目标服务的地址。

这里,可以通过解析数据传输请求报文,获取请求报文的源地址和目的地址,请求报文的源地址即发送所述数据传输请求的连接器的地址,请求报文的目的地址即为接收所述数据传输请求的转发代理的地址。数据传输请求报文中还可以携带连接器要访问的目标服务的地址。

步骤s602中,基于所述连接器的地址和所述转发代理的地址,查询所述网关的连接状态跟踪表,得到所述连接器要访问的目标服务的地址标识。

这里,网关的连接状态跟踪表用于记录网关中连接器的地址或转发代理的地址与目标服务的地址标识之间的对应关系。连接器要访问的目标服务的地址标识,可以是网关在接收到连接器发送的数据传输请求后,基于连接器的地址和转发代理的地址为连接器要访问的目标服务的地址分配的唯一标识。在实施时,连接器要访问的目标服务的地址标识可以与连接器的地址或转发代理的地址进行绑定后,记录在网关的连接状态跟踪表中。

步骤s603中,基于所述转发代理的地址,查询预先配置的服务配置信息,得到所述网关与所述目标服务的服务代理进行数据传输的第一传输连接。

步骤s604中,通过所述第一传输连接,将所述数据传输请求、所述目标服务的地址和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,查询所述服务代理的连接状态跟踪表,确定所述服务代理的地址,并通过所述服务代理的地址和所述目标服务的地址将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

这里,服务代理的地址可以包括服务代理中用于与目标服务进行数据传输的端口。服务代理的连接状态跟踪表用于记录服务代理中目标服务的地址标识与服务代理的地址之间的对应关系。目标服务的服务代理可以在接收到网关发送的数据传输请求、目标服务的地址和目标服务的地址标识后,查询服务代理的连接状态跟踪表中是否有与该目标服务的地址标识对应的记录,若没有,则基于接收到的目标服务的地址,为该目标服务分配一服务代理的地址,并将分配的服务代理的地址与目标服务的地址标识进行绑定后,记录在服务代理的连接状态跟踪表中。

在一些实施例中,上述步骤s602可以通过如下步骤s621至步骤s622实现:步骤s621中,在所述网关的连接状态跟踪表中查询不到所述连接器的地址和所述转发代理的地址对应的记录的情况下,基于所述目标服务的地址,生成所述连接器要访问的目标服务的地址标识;步骤s622中,将所述连接器的地址、所述转发代理的地址和所述目标服务的地址标识组成的记录添加至所述网关的连接状态跟踪表中。

本申请实施例中,通过网关的连接状态跟踪表记录网关中连接器的地址或转发代理的地址与目标服务的地址标识之间的对应关系,通过服务代理的连接状态跟踪表记录服务代理中目标服务的地址标识与服务代理的地址之间的对应关系。这样,在网关与服务代理进行数据传输时,可以基于网关的连接状态跟踪表和服务代理的连接状态跟踪表实现连接器的地址或转发代理的地址与服务代理的地址之间的映射,从而实现连接器的地址或转发代理的地址与目标服务的地址之间的映射,由于连接器通过网关及服务代理向目标服务发送数据的过程中仅需维持第一传输连接,从可以在一定程度减小数据传输的延迟,提高数据传输效率。

在一些实施例中,参见图6b,图6b是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,基于图6a,该方法还可以执行如下步骤s605至步骤s607,下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的网关。

步骤s605中,通过所述第一传输连接,接收所述服务代理返回的响应数据和所述连接器要访问的目标服务的地址标识。

步骤s606中,基于所述目标服务的地址标识,查询所述网关的连接状态跟踪表,得到发送所述响应数据的转发代理的地址以及接收所述响应数据的连接器的地址。

步骤s607中,基于所述转发代理的地址和所述连接器的地址,将所述响应数据发送至所述连接器。

本申请实施例中,网关通过第一传输连接接收服务代理返回的响应数据和目标服务的地址标识,并基于目标服务的地址标识,查询网关的连接状态跟踪表,得到发送响应数据的转发代理的地址以及接收响应数据的连接器的地址,从而基于转发代理的地址和连接器的地址,将响应数据发送至连接器。这样,可以快速地将目标服务的响应数据返回至连接器。

下面将结合本申请实施例提供的服务代理的示例性应用和实施,说明本申请实施例提供的服务集成中的数据传输方法。

参见图7,图7是本申请实施例提供的服务集成中的数据传输方法的一个可选的流程示意图,下面将结合图7示出的步骤进行说明,下述步骤的执行主体可以是前文的服务代理。

在步骤s701中,服务代理接收ipaas系统的网关发送的所述ipaas系统的连接器的数据传输请求和所述连接器要访问的目标服务的地址标识;其中,所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一vpc上,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中。

在步骤s702中,基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

在步骤s703中,在接收到所述连接器要访问的目标服务发送的响应数据的情况下,基于所述目标服务的地址标识,确定所述服务代理与所述网关进行数据传输的第一传输连接;其中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的。

在步骤s704中,通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器,将所述目标服务的响应数据发送至所述连接器。

这里,连接器为ipaas系统中接收该目标服务发送的响应数据的连接器。

本申请实施例中,通过部署在租户内网中的服务代理接收部署在第一vpc上的ipaas系统的网关发送的数据传输请求和目标服务的地址标识,基于该地址标识,将数据传输请求发送至部署在该内网或第二vpc中的目标服务,在接收到目标服务发送的响应数据的情况下,基于该目标服务的地址标识,确定服务代理与该网关进行数据传输的第一传输连接,其中,该第一传输连接为基于该服务代理发起的第一连接建立请求预先建立的,通过该第一传输连接,将响应数据和目标服务的地址标识发送至该网关,以使该网关基于地址标识,确定ipaas系统中的要访问该目标服务的连接器,并将响应数据发送至该连接器。这样,能够实现ipaas系统与租户内网之间网络的互通,并实现对内网中服务的集成逻辑,从而可以实现对同一租户不同内网或不同vpc中服务的集成逻辑,进而可以完善ipaas系统的服务集成能力,并能有效降低ipaas系统的开发、维护和迭代成本。

在一些实施例中,在步骤s703之前,该方法还可以执行如下步骤s801:

步骤s801中,所述服务代理向所述网关发送第一连接建立请求,以使所述网关与所述服务代理建立第一传输连接;其中,所述第一连接建立请求中包括所述服务代理的服务列表,以使所述网关在建立所述第一传输连接后,针对所述服务列表中的每一服务,为所述服务分配一转发代理地址,并将所述服务的地址标识与所述转发代理地址之间的对应关系添加至服务配置信息中。

在一些实施例中,步骤s702可以通过如下步骤s901至步骤s902实现:

步骤s901中,基于所述地址标识,确定所述服务代理与所述连接器要访问的目标服务之间预先建立的第三传输连接。

步骤s902中,通过所述第三传输连接,将所述连接器的数据传输请求发送至所述目标服务。

对应地,步骤s704可以通过如下步骤s903实现:

步骤s903中,通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器以及与所述连接器预先建立的第一传输连接,并通过所述第一传输连接将所述目标服务的响应数据发送至所述连接器。

在一些实施例中,在步骤s901之前,该方法还可以执行如下步骤s904:

步骤s904中,在接收到所述网关发送的携带所述连接器要访问的目标服务的地址标识的第三连接建立请求的情况下,基于所述目标服务的地址标识,与所述目标服务建立第三传输连接。

在一些实施例中,步骤s702可以通过如下步骤s1001至步骤s1002实现:

步骤s1001中,基于所述地址标识,查询所述服务代理的连接状态跟踪表,得到所述服务代理的地址和所述连接器要访问的目标服务的地址。

步骤s1002中,通过所述服务代理的地址和所述目标服务的地址将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

对应地,步骤s703之前还可以执行如下步骤s1003至步骤s1004:

步骤s1003中,获取所述连接器要访问的目标服务的地址和接收所述目标服务的响应数据的服务代理的地址。

步骤s1004中,基于所述目标服务的地址和所述服务代理的地址,查询所述服务代理的连接状态跟踪表,得到所述目标服务的地址标识。

在一些实施例中,上述步骤s1001可以通过如下步骤s1005至步骤s1006实现:

步骤s1005中,在所述服务代理的连接状态跟踪表中查询不到所述地址标识对应的记录的情况下,基于所述连接器要访问的目标服务的地址,为所述目标服务分配服务代理的地址。

步骤s1006中,将所述目标服务的地址、所述服务代理的地址和所述地址标识组成的记录添加至所述服务代理的连接状态跟踪表中。

需要说明的是,以上服务代理侧的方法实施例的描述,与上述网关侧的方法实施例的描述是类似的,具有同网关侧的方法实施例相似的有益效果。对于本申请服务代理侧的方法实施例中未披露的技术细节,请参照本申请网关侧的方法实施例的描述而理解。

下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。

以ipaas系统中connector(连接器)和目标客户内网中的服务(service)的集成互通为例,本申请实施例提供一种服务集成系统,参见图8a,图8a为本申请实施例提供的服务集成系统的一种实现架构示意图,该系统包括在客户内网110中部署的服务代理(agent)111、内部系统112和数据库113,在客户内网120中部署的服务代理(agent)121、内部私有saas122,在公有云vpc上部署的ipaas系统130,以及在公有云上部署的公网saas141,其中,agent可以访问公有云但无法在公有云进行监听,通过agent主动访问ipaas系统130,可以实现agent与ipaas系统130之间的网络互通,同时考虑到对已有ipaas系统的兼容和改造成本,降低耦合度,在ipaas内部设置网关(gateway)131,gateway131可以协助打通ipaas系统130与客户内网110和120之间的网络互通,从而可以实现内部系统112、数据库113、内部私有saas122以及公网saas141之间的集成逻辑。

参见图8b,图8b为本申请实施例提供的服务集成系统的一种实现架构示意图,为了实现部署在ipaasvpc上的ipaas系统中connector(示例性示出connector1321、connector1322和connector132n,n为正整数)和客户内网中的service(示例性示出service1121、service1122和service112n)集成互通,新增三个模块:gateway131、注册中心133和agent(示例性示出agent1111和agent111n),其中gateway131和注册中心133部署在ipaasvpc,agent部署在客户内网,同时允许客户内网中根据地域/服务划分,部署多个agent。与此同时,在gateway中,为客户内网的每个service创建一个相对应的转发代理proxy(示例性示出proxy1311、proxy1312和proxy131n),两者之间一一对应,connector与proxy通讯等效于直接和该proxy对应的service通讯,对ipaas系统的用户无感知。该实现架构的优点主要在于:1)已有ipaas系统中connector的改动成本最小,不需要改通讯相关的代码,只需要新增serviceip/port和proxyip/port的映射逻辑,按原来连接service的方式连接对应proxy即可;2)可以降低代码耦合度,connector组件内部只关注业务处理逻辑,具体网络互联统一由gateway处理。

参见图8c,图8c为本申请实施例提供的服务集成系统中各模块之间的交互流程示意图,该流程包括如下步骤:

步骤s1101,agent主动请求与gateway建立连接,即agentconnection;

步骤s1102,gateway首先为agent的每个service创建对应的proxy;

步骤s1103,gateway创建proxy成功之后将创建的proxy注册到注册中心;

步骤s1104,connector连接serviceip/port时,从注册中心根据serviceip/port找到对应的proxyip/port;

步骤s1105,connector直接与对应的proxyip/port通讯;

步骤s1106,gateway通过agentconnection将connector与proxy的通讯映射为agent与service的通讯,数据传输完成后,返回给connector完成一次完整的通讯。

上述交互流程中包括如下实体:私有云(privatecloud)、gateway、proxy、agent,注册中心中维护了各实体对应的元数据和配置文件,其中,注册中心保存的主要元数据包括:

1)私有云元数据privatecloudmeta:

该元数据中可以包括应用标识appid、云标识cloudid、云名称cloudname、服务列表services、源ip地址白名单sourceipwhitelist、状态status、agentconnection列表agentconnectionlist,其中,私有云元数据的状态status可以是可用状态enabled、正在禁用disabling、禁用状态disabled中的一种,参见图8d,图8d为本申请实施例提供的服务集成系统中私有云元数据的状态转移示意图,enabled状态下该私有云元数据被禁用时,进入disabling状态,私有云元数据禁用完成后,进入disabled状态,在disabled状态下,该私有云元数据被启用时,则进入enabled状态。服务列表services中可以包括至少一个服务,每一服务可以包括ip、端口port、模式mode,mode中可以包括网络地址转换(networkaddresstranslation,nat)模式、转发(forward)模式,agentconnection列表中可以包括至少一个agentconnection,每一agentconnection可以包括agentconnection的标识agentconnectionid、gateway的标识gatewayid和状态status,agentconnection的状态status可以是连接状态connected或者断开状态disconnected。

2)gateway元数据gatewaymeta:

该元数据中可以包括gateway的标识gatewayid、gateway的ip地址gatewayip、状态status、心跳信息heartbeat。这里,gateway的状态status可以是活跃状态active或者不可用状态unavailable。

3)proxy元数据proxymeta:

该元数据中可以包括云标识cloudid、服务的ip地址serviceip、服务的端口serviceport、转发代理的ip地址proxyip、转发代理的端口proxyport、连接proxy的agentconnection的标识agentconnectionid。

注册中心保存的配置文件包括agent配置文件,agent配置文件中可以包括应用的验证序号appkey、应用的验证密钥appsecret、云标识cloudid和服务白名单servicewhitelist。

本申请实施例提供一种服务集成中的数据传输方法,参见图9,该方法包括如下步骤s1201至步骤s1213:

步骤s1201,客户在注册中心创建安全网关(即私有云);

步骤s1202,客户在客户内网创建agent配置文件,部署并启动agent程序;

步骤s1203,agent启动后,主动与gateway建立连接,即建立agentconnection;

步骤s1204,连接成功后,agent向gateway发送握手指令,握手指令包括参数appkey、appid、cloudid、servicewhitelist、appsecret的签名signature;

步骤s1205,gateway收到握手指令后,通过鉴权获得appid,再根据appid+cloudid从注册中心获取到私有云元数据;

步骤s1206,如果鉴权失败,或私有云不存在,或私有云的status不是可用状态,或握手指令的源ip不在sourceipwhitelist中,或者可用端口数不足,则gateway返回对应的错误;

步骤s1207,校验通过后,gateway为该连接分配agentconnectionid与之关联,并将该连接注册到私有云元数据的agentconnectionlist;

步骤s1208,gateway获取私有云元数据中的所有service,若握手报文中指定了servicewhitelist,则从私有云元数据中的所有service中筛选出servicewhitelist中包含的每个service,为每一service分配代理端口;

针对每一service,可以执行如下操作:

步骤s1208a,在gateway的可用端口池中分配proxyport;

步骤s1208b,gateway尝试监听分配的proxyport,若监听失败,则休眠1s后,将该proxyport放回端口池,并跳转至步骤s1208a,若监听成功,则跳转至步骤s1208c;

步骤s1208c,gateway在注册中心创建proxy元数据,其中,proxy元数据的proxyip为该gateway节点的内网ip,proxyport为分配的proxyport,agentconnectionid为该连接关联的agentconnectionid,serviceip/port对应当前service的ip地址和端口。

步骤s1209,客户在配置connector时,可指定私有云;

步骤s1210,connector在与目标服务建立连接时,如果参数指定了cloudid,则根据appid+cloudid从注册中心获取私有云元数据,如果私有云元数据不存在,或者状态不是可用状态,则报错;

步骤s1211,如果目标serviceip/port不在service列表中,则connector直接连接目标serviceip/port进行通讯,否则,connector根据目标ip、port、appid、cloudid查找状态为active的gateway中heartbeat没超时,且agentconnection处于connected状态的proxy,如果没找到,则报错;

步骤s1212,connector从找到的至少一个proxy中按负载均衡策略选取一个proxy,与选取的proxyip/port连接通讯;

步骤s1213,由gateway、agent共同完成proxyip/port与serviceip/port之间端口映射的职能,在实施时,端口映射支持nat和流量转发两种模式。

在上述流程中,控制台的操作可以包括:1)创建私有云;2)启停私有云;3)停止状态下,维护/删除私有云元数据;4)查看私有云与agent连接的网络结构拓扑图。

gateway可以通过执行如下步骤实现系统控制:

步骤s1301,gateway启动后获取gatewayip;

步骤s1302,在注册中心按照gatewayip查询active的gateway并剔除;这样,可以避免重复启动相同ip的gateway;

步骤s1303,分配gatewayid并注册到注册中心;

步骤s1304,初始化端口池;

这里,可以采用如下步骤s1304a至步骤s1304d实现端口池的初始化:

步骤s1304a,从注册中心找到所有gatewayip相同、被剔除的、最后心跳时间在最大代理生命时长(maxproxylifetime,mpl)内的gatewayid,并从注册中心找到对应的端口(port);

这里,mpl用于防止proxy被错误连接,在proxy的mpl内,同一组ip/port不会被复用,connector的客户端client需要确保使用proxyip/port时在proxy的mpl内,mpl可以默认是10分钟。

步骤s1304b,将每个port放入延时队列,时间为port对应的gatewayid的最后心跳时间+mpl;

步骤s1304c,将剩余的可用端口放入延时队列头部,得到的延时队列即为端口池。

步骤s1305,开始接收来自agent的连接;

步骤s1306,定时更新注册中心gateway的心跳时间,如果发现自己被剔除了,则中断所有agentconnection,停止proxyport并重启服务;

步骤s1307,定时剔除心跳超时的gateway;

步骤s1308,gateway定期探活agentconnection,当agentconnection不可用时,断开连接,并更新该agentconnection的状态为disconnected;

这里,agent也会定期探活agentconnection,当agentconnection不可用时,断开连接,并重新建立连接。

步骤s1309,gateway进行私有云禁用时,可以执行如下操作:

步骤s1309a,将要禁用的私有云元数据中的状态标记为disabling;

步骤s1309b,依次调用每个agentconnection对应的gateway的断开连接接口,调用完成后,将私有云元数据中的状态标记为disabled。

在本申请实施例提供的服务集成中的数据传输方法中,需要保证私有云状态、gateway状态以及agentconnection状态各自的一致性。各状态具有如下一致性优先级:私有云状态一致性>gateway状态一致性>agentconnection状态一致性。针对gateway状态以及agentconnection状态一致性的保证,可以采用如下方式:

1)gateway状态一致性保证:

若gateway不可用了,导致状态不一致,则在心跳超时后,该gateway被其它节点剔除,保证状态一致;

若gateway分区了,在心跳超时后,会被其它节点剔除,分区恢复后,导致状态不一致,心跳检测发现被剔除后,gateway主动重启,保证状态一致。

2)agentconnection状态一致性保证:

若gateway不可用了,agent连不上gateway,则agent自动重启,状态达到一致;

若agent不可用了,gateway连不上agent,则将相应的agentconnection标记为disconnected,状态达到一致;

若gateway网络不通,agent连不上gateway,则agent自动重启,gateway网络连通后,若agent不可用了,gateway连不上agent,则将相应的agentconnection标记为disconnected,状态达到一致;

若agent网络不通,agentconnection断开连接,并将连接状态标记为disconnected,当agent网络连通时,重新连接,若gateway网络不通,agent连不上gateway,则agent自动重启,gateway网络连通后,若agent不可用了,gateway连不上agent,则将相应的agentconnection标记为disconnected,状态达到一致。

综上所述,在本申请实施例提供的服务集成中的数据传输方法中,由部署在ipaas内网中的gateway和部署在客户内网的agent共同完成proxyip/port与serviceip/port之间端口映射的职能,并且支持nat和流量转发两种端口映射模式。以下将展开介绍两种模式的端口映射原理。

1)流量转发模式

参见图10,图10为本申请实施例提供的采用流量转发模式进行端口映射的服务集成系统的组成架构示意图,在流量转发模式下,ipaas系统的连接器connector1010与目标服务service1040之间的完整链路需要建立三次tcp连接,包括connector1010与gateway1020的转发代理proxy1021之间建立的连接clientconnector,gateway1020的转发代理proxy1021与agent1030之间建立的agentconnection,以及agent1030与service1040之间建立的serviceconnection,gateway1020和agent1030可以共同作为分布式代理网关。

在服务集成中,基于流量转发模式进行数据传输时,主要包括全链路连接建立和数据传输两个流程,同时需要考虑连接中断与错误处理。下面分别对各流程进行说明。

全链路连接建立可以包括如下步骤s1401至步骤s1405:

步骤s1401,connector的客户端client通过tcp的三次握手与proxy建立连接clientconnection;

步骤s1402,gateway为该clientconnection分配标识connectionid;

步骤s1403,gateway发送建立连接指令给proxy对应的agentconnection,等待返回;

这里,gateway与agent之间的连接为rpc连接,建立连接指令对应的rpc报文格式如下:

cmd:establish

connectionid:xxx

serviceip/port:xxx:xxx;

其中,cmd为控制类型,establish表示建立连接,connectionid是为clientconnection分配的唯一标识,serviceip/port为目标服务的ip地址/端口。

步骤s1404,agent通过tcp的三次握手与与目标服务serviceip/port建立连接serviceconnection,并将该连接与connectionid绑定;

步骤s1405,agent向gateway返回建立成功或失败。

数据传输流程包括上行数据传输和下行数据传输两部分,在上述步骤s1402之后可以执行上行数据传输流程,包括如下步骤s1411至步骤s1416:

步骤s1411,connector通过clientconnection发送数据流给proxy;

这里,发送数据流时可以包括对数据流进行的拆包、组包等操作,connector向proxy发送数据包时的tcp报文格式如下:

src:clientip/port

dst:proxyip/port

flag:data

payload;

其中,报文的源地址src为connector的客户端的ip地址和端口,也即clientip/port,报文的目的地址dst为proxy的ip地址和端口,也即proxyip/port,flag为报文标志,data表示数据发送报文,payload为要传输的数据。

此外,proxy接收到connector发送的报文后,会向connector返回一个确认报文。

步骤s1412,gateway根据clientconnection获取对应的connectionid,并根据proxy获取对应的agentconnection;

步骤s1413,gateway通过agentconnection发送数据流指令给agent,等待返回;

这里,发送数据流时可以包括对数据流进行的拆包、组包等操作,agentconnection可以是tcp连接也可以是rpc连接,gateway向agentconnection发送数据包时的rpc报文格式如下:

cmd:data

connectionid:xxx

payload;

其中,cmd为控制类型,data表示数据发送,payload为要传输的数据,connectionid为clientconnection的标识。如果该connectionid的前一个上行数据传输指令还没有返回,则放入等待队列,等待发送。

步骤s1414,agent根据connectionid找到对应的serviceconnection;

步骤s1415,agent通过serviceconnection将数据流发送给service;

这里,发送数据流时可以包括对数据流进行的拆包、组包等操作,agent向service发送数据包时的tcp报文格式如下:

src:agentip/port

dst:serviceip/port

flag:data

payload;

其中,报文的源地址src为agent的ip地址和端口,也即agentip/port,报文的目的地址dst为service的ip地址和端口,也即serviceip/port,flag为报文标志,data表示数据发送报文,payload为要传输的数据。

步骤s1416,service返回发送成功或失败。

此外,service接收到agent发送的报文后,会向agent返回一个表示发送成功或失败的确认报文。

下行数据传输流程,包括如下步骤s1421至步骤s1426:

步骤s1421,service通过serviceconnection发送数据流给agent;

这里,发送数据流时可以包括对数据流进行的拆包、组包等操作,service向agent发送数据包时的tcp报文格式如下:

src:serviceip/port

dst:agentip/port

flag:data

payload;

其中,报文的源地址src为service的ip地址和端口,也即serviceip/port,报文的目的地址dst为agent的ip地址和端口,也即agentip/port,flag为报文标志,data表示数据发送报文,payload为要传输的数据。

此外,agent接收到service发送的报文后,会向service返回一个确认报文。

步骤s1422,agent根据serviceconnection确定connectionid;

步骤s1423,agent通过agentconnection发送数据流指令给proxy;

这里,发送数据流时可以包括对数据流进行的拆包、组包等操作,agentconnection可以是tcp连接也可以是rpc连接,agent通过agentconnection发送数据包时的rpc报文格式如下:

cmd:data

connectionid:xxx

payload;

其中,cmd为控制类型,data表示数据发送,payload为要传输的数据,connectionid为clientconnection的标识。如果该connectionid的前一个下行数据传输指令还没有返回,则放入等待队列,等待发送。

步骤s1424,gateway根据connectionid确定对应的clientconnection;

步骤s1425,gateway通过clientconnection将数据流发送给connector;

这里,发送数据流时可以包括对数据流进行的拆包、组包等操作,gateway向connector发送数据包时的tcp报文格式如下:

src:proxyip/port

dst:clientip/port

flag:data

payload;

其中,报文的源地址src为proxy的ip地址和端口,也即proxyip/port,报文的目的地址dst为connector的客户端的ip地址和端口,也即clientip/port,flag为报文标志,data表示数据发送报文,payload为要传输的数据。

步骤s1426,connector返回发送成功或失败。

这里,connector接收到proxy发送的报文后,会向proxy返回一个表示发送成功或失败的确认报文。

在上述本申请实施例提供的采用流量转发模式进行端口映射的数据传输方法中,对于各连接的中断与错误处理可以包括:

(1)clientconnection被动断开的处理过程如下:

a、gateway检测到clientconnection断开,如超时、重启或收到connector的断开;

b、gateway标记connectionid状态为已断开;

c、gateway通过agentconnection发送断开指令给agent,断开指令中携带参数connectionid;

d、agent收到指令后,标记connectionid状态为已断开,断开对应的serviceconnection;

e、gateway后续收到通过agentconnection发来的该connectionid的下行指令时返回错误。

(2)serviceconnection被动断开的处理过程如下:

a、agent检测到serviceconnection断开,如超时、重启或收到service的断开;

b、agent标记connectionid为已断开

c、agent通过agentconnection发送断开指令给gateway,断开指令中携带参数connectionid;

d、gateway收到指令后,标记connectionid为已断开,断开对应的clientconnection;

e、agent后续收到gateway通过agentconnection发来的该connectionid的上行指令时返回错误。

(3)gateway发送上行指令返回错误时,标记对应的connectionid为已断开,断开对应的clientconnection;

(4)agent发送下行指令返回错误时,标记对应的connectionid为已断开,断开对应的serviceconnection。

在上述本申请实施例提供的采用流量转发模式进行端口映射的数据传输方法,实现简单,连接可靠,且能充分利用操作系统内核中现有的tcp协议支持能力,数据传输性能好。

2)nat模式

参见图11,图11为本申请实施例提供的采用nat模式进行端口映射的服务集成系统的组成架构示意图,在nat模式下,ipaas系统的连接器connector1010与目标服务service1040之间进行数据传输时,需要通过gateway1020和agent1030进行地址转换,gateway1020中的每一proxy1021与agent1030之间预先建立了agentconnection,基于agentconnection进行数据传输时,通过gateway维护的gateway连接状态跟踪表(gatewayconnectiontrack)1022,以及agent维护的agent连接状态跟踪表(agentconnectiontrack)1031实现proxyip/port与serviceip/port之间的映射,从而实现connector与service之间的网络互通。

在服务集成中,基于nat模式进行数据传输时,可以包括如下步骤s1501至步骤s1517:

步骤s1501,client向proxy发送tcp握手报文syn包;

步骤s1502,gateway收到syn包后,根据clientip/port+proxyport从gateway的连接状态跟踪表中查找connectionid及对应的状态数据;

步骤s1503,判断syn包类型,并根据不同的syn包类型进行如下操作:

a、若gateway的连接状态跟踪表的记录中不存在clientip/port+proxyport对应的connectionid,则此包为首次到达的包,分配新的connectionid后,注册到gateway的连接状态跟踪表后,跳转至步骤s1504;

b、若gateway的连接状态跟踪表的记录中clientflag==syn且clientseq==seq1,则此包为重传包,跳转至步骤s1504;否则,此包为乱序包,忽略。

步骤s1504,gateway通过agentconnection发送同步指令给agent;

这里,可以采用rpc方式进行指令发送,同步指令的报文中可以包括connectionid、serviceip/port以及去掉端口号的原tcp报文。

步骤s1505,agent收到同步指令后,按照connectionid从agent的连接状态跟踪表中查找agent端口(agentport)和状态数据;

步骤s1506,agent判断报文类型,包括:

a、若agent的连接状态跟踪表的记录中不存在connectionid对应的agentport,则此包为首次到达的包,分配agentport后,将该agentport注册到agent的连接状态跟踪表,并更新对应记录中的clientflag、clientseq后,跳转至步骤s1507;

b、若agent的连接状态跟踪表的记录中,connectionid对应的记录的clientflag==syn且clientseq==seq1,则此包为重传包,跳转至步骤s1507,否则此包为乱序包,忽略。

步骤s1507,agent通过agentport发送tcp报文给serviceip/port,tcp报文中源地址为agentip/port,目的地址为serviceip/port,报文标志位为syn,也即发送的为syn包,seq为seq1;

步骤s1508,service收到syn包后,回复syn|ack包,对应的tcp报文中源地址为serviceip/port,目的地址为agentip/port,报文标志位为syn|ack,seq为seq2,ack为seq1+1;

步骤s1509,agent收到syn|ack包后,根据serviceip/port和agentport从agent的连接状态跟踪表中查找connectionid和对应的状态数据;

步骤s1510,agent判断报文类型,包括:

a、若agent的连接状态跟踪表的记录中不存在serviceip/port与agentport对应的connectionid,则此包为乱序包,忽略;

b、若agent的连接状态跟踪表的记录中,connectionid对应的记录的clientflag!=syn或者clientseq!=该包ack(即seq1+1),则此包为乱序包,忽略;

c、若agent的连接状态跟踪表的记录中,connectionid对应的记录的serviceflag==nil、serviceseq==nil,则此包为首个syn|ack包,更新serviceflag、serviceseq,跳转至步骤s1511;

d、若agent的连接状态跟踪表的记录中,connectionid对应的记录的serviceflag==该包flag(即syn|ack)、serviceseq==该包seq(即seq2),则此包为重传包,跳转至步骤s1511;

e、否则此包为乱序包,忽略。

步骤s1511,agent发送同步答复指令给gateway,答复指令的rpc报文中包括控制字段cmd、connectionid以及去掉端口号的原tcp报文;

步骤s1512,gateway收到同步答复指令时,根据connectionid从gateway的连接状态跟踪表中查找clientip/port、proxyport和状态数据;

步骤s1513,gateway判断报文类型,包括:

a、若gateway的连接状态跟踪表的记录中不存在connectionid对应的clientip/port和proxyport,则此包为乱序包,忽略;

b、若gateway的连接状态跟踪表的记录中不存在connectionid对应的记录中clientflag!=syn或者clientseq!=该包ack(即seq1+1),则此包为乱序包,忽略;

c、若gateway的连接状态跟踪表的记录中不存在connectionid对应的记录中serviceflag==nil、serviceseq==nil,则此包为首个syn|ack包,更新serviceflag、serviceseq,跳转至步骤s1514;

d、若gateway的连接状态跟踪表的记录中不存在connectionid对应的记录中serviceflag==该包flag(即syn|ack)、serviceseq==该包seq(即seq2),则此包为重传包,跳转至步骤s1514;

e、否则此包为乱序包,忽略。

步骤s1514,gateway通过proxy的端口(port)发送tcp报文给clientip/port,发送的tcp报文中源地址为proxyip/port,目的地址为clientip/port,标志位flag为syn|ack,seq为seq2,ack为seq1+1;

步骤s1515,client收到gateway发送的syn|ack包后,回复ack包或ack|psh包;

步骤s1516,gateway收到client发来的ack包或psh|ack包或psh包时或连接断开相关的控制报文时,根据clientip/port和proxyip/port,匹配gateway的连接状态跟踪表,判断报文类型,包括:

a、若为后继报文,更新gateway的连接状态跟踪表后,发指令给agentconnection;这里,后继报文指按照顺序正常接收的报文。

b、若为重传报文,直接发指令给agentconnection;

c、若为乱序报文,忽略;

agent收到指令后,与gateway类似,根据connectionid,匹配agent的连接状态跟踪表,判断报文类型,包括:

a、若为后继报文,更新agent的连接状态跟踪表后,经agent的端口(agentport)将接收的数据包发送给serviceip/port;

b、若为重传报文,直接经agentport将接收的数据包发送给serviceip/port

c、若为乱序报文,忽略。

步骤s1517、agent收到service发来的ack包或psh|ack包或psh包时或连接断开相关的控制报文时,根据serviceip/port,匹配agent的连接状态跟踪表,判断报文类型:

a、若为后继报文,更新agent的连接状态跟踪表后发指令给agentconnection;

b、若为重传报文,直接发指令给agentconnection;

c、若为乱序报文,忽略。

gateway收到指令后,根据connectionid,匹配gateway的连接状态跟踪表,判断报文类型:

a、若为后继报文,更新gateway的连接状态跟踪表后,经proxy的端口(proxyport)发送接收的数据包给clientip/port;

b、若为重传报文,直接经proxyport发送接收的数据包给clientip/port;

c、若为乱序报文,忽略。

此外,对于每一proxyport,当gateway收到针对该proxyport的rst报文或者检测到对应的agentconnection的四次挥手结束后,放入延时为2倍报文最大生存时间(maximumsegmentlifetime,msl)的延时队列,随后放回可用的proxy端口池中。

对于每一agentport,当agent收到针对该agentport的rst报文或者检测到对应的agentconnection的四次挥手结束后,放入延时为2倍报文最大生存时间(maximumsegmentlifetime,msl)的延时队列,随后放回可用的agent端口池中。

在上述本申请实施例提供的采用nat模式进行端口映射的数据传输方法中,tcp状态为真实状态,不会出现全链路未真正建立连接时已返回连接状态的情况,此外,整个数据传输过程在一条tcp连接上进行,延时更低。

本申请实施例提供的服务集成系统相较相关技术中私有化部署ipaas的方案,开发、维护、迭代成本都大大降低,同时能够满足同一客户多个内网之间的网络打通,能更进一步完善ipaas系统自身的服务集成能力。

下面继续说明本申请实施例提供的服务集成中的数据传输装置255的实施为软件模块的示例性结构,在一些实施例中,如图2a所示,存储在存储器250的服务集成中的数据传输装置255中的软件模块可以包括:

第一接收模块2551,用于ipaas系统的网关接收所述ipaas系统的连接器发送的数据传输请求;所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一虚拟私有云vpc上;

第一映射模块2552,用于基于预先配置的服务配置信息,确定所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;其中,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;

第一发送模块2553,用于通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

在一些实施例中,所述装置还包括:第一建立模块,用于在接收到所述服务代理发起的第一连接建立请求的情况下,与所述服务代理建立第一传输连接;其中,所述第一连接建立请求中包括所述服务代理的服务列表;第一分配模块,用于针对所述服务列表中的每一服务,为所述服务分配一转发代理地址,并将所述服务的地址标识与所述转发代理地址之间的对应关系添加至所述服务配置信息中。

在一些实施例中,所述数据传输请求为所述连接器通过与所述网关预先建立的第二传输连接发送的,所述第一映射模块还用于:基于所述第二传输连接的标识,查询所述服务配置信息,得到所述连接器要访问的目标服务的地址标识,以及所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;所述第一发送模块还用于:通过所述第一传输连接,将所述数据传输请求和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,确定与目标服务预先建立的第三传输连接,并通过所述第三传输连接,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

在一些实施例中,所述装置还包括:第二接收模块,用于通过所述第一传输连接,接收所述服务代理返回的响应数据和所述目标服务的地址标识;其中,所述响应数据为所述目标服务通过所述第三传输连接发送至所述服务代理的;第一查询模块,用于基于所述目标服务的地址标识,查询所述服务配置信息,得到所述第二传输连接的标识;第二发送模块,用于基于所述第二传输连接的标识,将所述响应数据通过所述第二传输连接发送至所述连接器。

在一些实施例中,所述装置还包括:第二建立模块,用于在接收到所述连接器发送的第二连接建立请求的情况下,与所述连接器建立第二传输连接;第二查询模块,用于基于所述第二连接建立请求所请求的转发代理地址,查询所述服务配置信息,得到所述连接器要访问的目标服务的地址标识,以及与所述目标服务的服务代理进行数据传输的第一传输连接;第三发送模块,用于基于所述第一传输连接,将携带所述目标服务的地址标识的第三连接建立请求发送至所述服务代理,以使所述服务代理基于所述目标服务的地址标识,与所述目标服务建立第三传输连接。

在一些实施例中,所述第一映射模块还用于:获取发送所述数据传输请求的连接器的地址、接收所述数据传输请求的转发代理的地址以及所述连接器要访问的目标服务的地址;基于所述连接器的地址和所述转发代理的地址,查询所述网关的连接状态跟踪表,得到所述连接器要访问的目标服务的地址标识;基于所述转发代理的地址,查询预先配置的服务配置信息,得到所述网关与所述目标服务的服务代理进行数据传输的第一传输连接;所述第一发送模块还用于:通过所述第一传输连接,将所述数据传输请求、所述目标服务的地址和所述目标服务的地址标识发送至所述服务代理,以使所述服务代理基于所述地址标识,查询所述服务代理的连接状态跟踪表,确定所述服务代理的地址,并通过所述服务代理的地址和所述目标服务的地址将所述连接器的数据传输请求发送至所述连接器要访问的目标服务。

在一些实施例中,所述第一映射模块还用于:在所述网关的连接状态跟踪表中查询不到所述连接器的地址和所述转发代理的地址对应的记录的情况下,基于所述目标服务的地址,生成所述连接器要访问的目标服务的地址标识;将所述连接器的地址、所述转发代理的地址和所述目标服务的地址标识组成的记录添加至所述网关的连接状态跟踪表中。

在一些实施例中,所述装置还包括:第三接收模块,用于通过所述第一传输连接,接收所述服务代理返回的响应数据和所述连接器要访问的目标服务的地址标识;第三查询模块,用于基于所述目标服务的地址标识,查询所述网关的连接状态跟踪表,得到发送所述响应数据的转发代理的地址以及接收所述响应数据的连接器的地址;第四发送模块,用于基于所述转发代理的地址和所述连接器的地址,将所述响应数据发送至所述连接器。

下面继续说明本申请实施例提供的服务集成中的数据传输装置355的实施为软件模块的示例性结构,在一些实施例中,如图2b所示,存储在存储器350的服务集成中的数据传输装置355中的软件模块可以包括:

第四接收模块3551,用于服务代理接收ipaas系统的网关发送的所述ipaas系统的连接器的数据传输请求和所述连接器要访问的目标服务的地址标识;其中,所述ipaas系统部署在云网络中所述ipaas系统所属租户的第一vpc上,所述服务代理部署在所述租户的内网中,所述目标服务部署在所述内网或所述租户的第二vpc中;

第五发送模块3552,用于基于所述地址标识,将所述连接器的数据传输请求发送至所述连接器要访问的目标服务;

第五接收模块3553,用于在接收到所述连接器要访问的目标服务发送的响应数据的情况下,基于所述目标服务的地址标识,确定所述服务代理与所述网关进行数据传输的第一传输连接;其中,所述第一传输连接为基于所述服务代理发起的第一连接建立请求预先建立的;

第六发送模块3554,用于通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器,将所述目标服务的响应数据发送至所述连接器。

在一些实施例中,所述装置还包括:第三建立模块,用于所述服务代理向所述网关发送第一连接建立请求,以使所述网关与所述服务代理建立第一传输连接;其中,所述第一连接建立请求中包括所述服务代理的服务列表,以使所述网关在建立所述第一传输连接后,针对所述服务列表中的每一服务,为所述服务分配一转发代理地址,并将所述服务的地址标识与所述转发代理地址之间的对应关系添加至服务配置信息中。

在一些实施例中,所述第五发送模块还用于:基于所述地址标识,确定所述服务代理与所述连接器要访问的目标服务之间预先建立的第三传输连接;通过所述第三传输连接,将所述连接器的数据传输请求发送至所述目标服务;所述第六发送模块还用于:通过所述第一传输连接,将所述目标服务的响应数据和所述目标服务的地址标识发送至所述网关,以使所述网关基于所述地址标识,确定所述连接器以及与所述连接器预先建立的第一传输连接,并通过所述第一传输连接将所述目标服务的响应数据发送至所述连接器。

在一些实施例中,所述装置还包括:第四建立模块,用于在接收到所述网关发送的携带所述连接器要访问的目标服务的地址标识的第三连接建立请求的情况下,基于所述目标服务的地址标识,与所述目标服务建立第三传输连接。

在一些实施例中,所述第五发送模块还用于:基于所述地址标识,查询所述服务代理的连接状态跟踪表,得到所述服务代理的地址和所述连接器要访问的目标服务的地址;通过所述服务代理的地址和所述目标服务的地址将所述连接器的数据传输请求发送至所述连接器要访问的目标服务;所述第五接收模块还用于:获取所述连接器要访问的目标服务的地址和接收所述目标服务的响应数据的服务代理的地址;基于所述目标服务的地址和所述服务代理的地址,查询所述服务代理的连接状态跟踪表,得到所述目标服务的地址标识。

在一些实施例中,所述第五发送模块还用于:在所述服务代理的连接状态跟踪表中查询不到所述地址标识对应的记录的情况下,基于所述连接器要访问的目标服务的地址,为所述目标服务分配服务代理的地址;将所述目标服务的地址、所述服务代理的地址和所述地址标识组成的记录添加至所述服务代理的连接状态跟踪表中。

本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的服务集成中的数据传输方法。

本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的服务集成中的数据传输方法,例如,如图3示出的方法。

在一些实施例中,计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hypertextmarkuplanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

综上所述,通过本申请实施例能够实现ipaas系统与租户内网之间网络的互通,并实现对内网中服务的集成逻辑,从而可以实现对同一租户不同内网或不同vpc中服务的集成逻辑,进而可以完善ipaas系统的服务集成能力,并能有效降低ipaas系统的开发、维护和迭代成本。

以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

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