具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对边缘云场景面临的服务之间如何跨边缘节点进行数据传输的技术问题,在本申请一些实施例中,在边缘云系统中增设通信管控组件和通信代理组件,并将通信代理组件部署到边缘云系统中的边缘节点中,在通信管控组件和通信代理组件的配合下,由通信代理组件代理其所在边缘节点中的服务与其它边缘节点中的服务进行通信,从而解决服务之间跨边缘节点进行数据传输的问题;另外,采用通信代理组件代理服务进行跨边缘节点的数据传输,还具有实时性较高、传输速度较快、可靠性较强等优势。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1a为本申请示例性实施例提供的一种边缘云系统的结构示意图。如图1a所示,该边缘云系统100包括:多个边缘节点10,边缘节点10之间可以网络连接。
本实施例的边缘云系统100是基于云计算技术和边缘计算的能力,构筑在边缘基础设施之上的云计算平台,是一种靠近边缘位置的具备计算、网络、存储以及安全等能力的网络系统。边缘云是个相对概念,边缘云是指相对靠近终端的云计算平台,这里的终端是指云计算服务的需求端,例如可以是互联网中的终端或者用户端,或者物联网中的终端或用户端。或者说,本实施例的边缘云系统100与中心云或者传统的云计算平台相区别,中心云或者传统的云计算平台可以包括资源规模化且位置集中的数据中心,而本实施例的边缘云系统100包括边缘节点10,这些边缘节点10分散在不同区域位置,覆盖的网络范围更广泛,也因此具备距离终端更近的特性,单个边缘节点10的资源规模较小,但是边缘节点10的数量相对较多。另外,本实施例的边缘节点10可以全部由同一互联网服务提供商(InternetService Provider,ISP)部署,也可以由不同ISP部署实现,对此不做限定。
在本实施例中,每个边缘节点10包括一系列的边缘基础设施,这些边缘基础设施包括但不限于:分布式数据中心(DC)、无线机房或集群,运营商的通信网络、核心网设备、基站、边缘网关、家庭网关、计算设备和/或存储设备等边缘设备及对应的网络环境等等。在一些可选实施例中,边缘节点10可实现为位于边缘的互联网数据中心(Internet DataCenter,IDC),即一个边缘IDC即为本申请实施例中的一个边缘节点10;或者,边缘节点10可实现为位于边缘的机房,即一个机房即为本申请实施例中的一个边缘节点10。在此说明,不同边缘节点10的位置、能力以及包含的基础设施可以相同,也可以不相同。基于这些边缘基础设施,边缘节点10可以对外提供各种资源,例如CPU、GPU、服务器、计算设备等具有一定计算能力的资源,内存、硬盘等具有存储能力的资源,以及带宽等网络资源等。在本实施例中,将边缘节点10中具有一定计算能力的资源称为边缘计算节点,例如可以是服务器、计算设备等,在每个边缘节点10中包括至少一个边缘计算节点。
本实施例的边缘云系统100可应用于内容分发网络(Content Delivery Network,CDN)、电商、游戏、音视频、物联网、物流、工业大脑、城市大脑等各种应用场景中,面向各种场景中的终端用户提供云计算服务。具体地,针对各应用场景,可以在边缘云系统100中的边缘节点10中部署该应用场景中可提供云计算服务的服务;其中,在边缘节点10中部署服务实际上是在边缘节点10中的边缘计算节点上部署可提供该服务的应用的过程。例如,在电商场景中,可以在边缘节点10中的边缘计算节点上部署可提供在线购物服务的应用,例如可以是在线购物的服务端,该服务端与购物终端进行交互可为购物用户提供在线购物功能。又例如,在游戏场景中,可以在边缘节点10中的边缘计算节点上部署可提供在线游戏服务的应用,例如可以是在线游戏的服务端,该服务端与游戏终端进行交互可为游戏用户提供在线游戏服务。又例如,在音视频领域中,可以在边缘节点10中的边缘计算节点上部署可提供音视频服务的应用,例如可以是直播服务端、点播服务端或视频监测服务端等,这些服务端与播放终端进行交互可为观看用户提供直播、点播或监测等服务。
如图1a所示,本实施例的边缘云系统100还包括:服务编排节点20。该服务编排节点20与各边缘节点10网络连接,是服务提供方与边缘云系统100之间的交互接口,可接收服务提供方的服务部署需求,根据服务提供方的服务部署需求对多个边缘节点10进行资源调度,即根据服务提供方的服务部署需求在边缘节点10中部署服务提供方请求部署的服务。其中,服务提供方是边缘云系统100的用户,是需要在边缘云系统100中部署服务的一方,可选地,服务提供方可以是一些企业或组织,也可以是个人。可选地,服务编排节点20可以对外提供服务部署需求的提交入口,该提交入口可以是web页面、应用页面或命令窗等;该提交入口的作用是供服务提供方向服务编排节点20提交自己的服务部署需求。在部署实施上,服务编排节点20可以部署在一个或多个云计算数据中心中,或者,可以部署在一个或多个传统数据中心中;当然,服务编排节点20也可以部署在边缘云系统100中,例如服务编排节点20可独立于多个边缘节点10单独部署,或者也可以部署在一个、两个或两个以上的边缘节点10中,本实施例对此不做限定。
其中,同一服务可能被部署在一个边缘节点10中,也可能被部署在多个边缘节点10中,具体可根据服务提供方的服务需求而定。例如,在服务提供方希望其服务能够覆盖较广区域范围的情况下,可在多个边缘节点10中部署该服务,以便满足服务提供方对服务覆盖范围的需求。又例如,在服务提供方希望其服务具有较强容灾能力的情况下,可以在多个边缘节点10中部署该服务,以便在某个边缘节点10发生故障的情况下其它边缘节点10中的服务能够继续对外提供服务。另外,在同一边缘节点10中既可以部署不同服务提供方的服务,也可以部署同一服务提供方的不同服务。
在实际应用中,部署在不同边缘节点10中的服务可能需要进行数据传输,而需要进行数据传输的服务既可以是部署在不同边缘节点10中的同一服务,也可以是部署在不同边缘节点10中的不同服务,这里的不同服务既可以是同一服务提供方的服务,也可以是不同服务提供方的服务。例如,因为服务调用需求,部署在某一边缘节点C1中的服务A需要和部署在另一边缘节点C2中的服务B进行数据传输。又例如,原来部署在边缘节点D1中的服务因为扩容需求被重新部署到边缘节点D2中,在将边缘节点D1中的服务删除之前需要将服务在边缘节点D1中产生的历史数据同步到边缘节点D2中的服务,该服务需要跨越边缘节点D1与边缘节点D2进行数据传输。
在本申请实施例中,为了解决服务之间跨边缘节点10进行数据传输的问题,如图1a所示,在边缘云系统100中增设通信管控组件30和通信代理组件40;通信管控组件30和通信代理组件40共同作为服务间通信的基础设施层,用于代理服务之间进行通信,使得服务之间不需要关注彼此的部署地址信息即可完成彼此之间的数据传输。
其中,通信管控组件30负责为通信代理组件40代理服务之间进行通信提供数据基础,其数量可以是一个或多个,对此不做限定。在部署实施上,通信管控组件30可以部署在一个或多个云计算数据中心中,或者,可以部署在一个或多个传统数据中心中;当然,通信管控组件30也可以部署在边缘云系统100中,例如通信管控组件30可独立于多个边缘节点10单独部署,或者也可以部署在一个、两个或两个以上的边缘节点10中,本实施例对此不做限定。
其中,通信代理组件40被部署在边缘节点10中,用于在通信管控组件30的配合下,代理其所在边缘节点10中的服务与其它服务进行通信。在同一边缘节点10中可以部署一个或多个通信代理组件40。在一可选实施例中,针对边缘节点10中的每个服务分别部署通信代理组件40,即一个服务对应一个通信代理组件40,每个通信代理组件40专门代理其所对应服务与其它服务进行通信。在另一可选实施例中,边缘节点10中部署一个或多个通信代理组件40,一个或多个通信代理组件40共同负责代理该边缘节点10中的所有服务与其它服务进行通信。在又一可选实施例中,可以在边缘节点10中的每个边缘计算节点上部署通信代理组件40,由该通信代理组件40代理其所在边缘计算节点上的服务与其它服务进行通信,换句话说,通信代理组件40与其所代理的服务部署在同一边缘计算节点(或一台机器上)。可选地,在边缘节点10中部署多个通信代理组件40且多个通信代理组件40被该边缘节点10中的所有服务共用的情况下,可以采用负载均衡策略将各服务的通信代理需求均衡到多个通信代理组件40上。
需要说明的是,通信代理组件40代理其所在边缘节点10中与其对应的服务与其它服务进行通信,既包括代理同一边缘节点10中的不同服务之间进行通信,也包括代理不同边缘节点10中的服务之间进行通信,而且这两个代理通信过程基本相同或相似。在本申请实施例中,重点关于由通信管控组件30和通信代理组件40相互配合,代理不同边缘节点10中的服务进行通信的过程。
为了便于描述和区分,在本实施例中,以被部署到边缘云系统100中的第一服务为例,对通信管控组件30和通信代理组件40相互配合代理第一服务与第二边缘节点中的第二服务进行通信的过程进行详细说明。其中,第一服务可以是任何一个被部署到边缘云系统100中的服务,且第一服务可以被部署到边缘云系统100中一个或至少两个边缘节点10中,对此不做限定。第二边缘节点是不同于第一边缘节点的边缘节点,第二边缘节点可以是一个或至少两个;相应地,第二服务是部署在第二边缘节点中的服务,可以是任何需要与第一服务进行数据传输的服务。其中,第二服务与第一服务可以是被部署在不同边缘节点中的同一服务,也可以是不同的服务,对此不做限定。
具体地,在第一服务被部署到边缘云系统100中的情况下,可以为第一服务配置对应的通信代理组件40,为了便于代理第一服务与第二服务进行通信,第一服务对应的通信管控组件30可以获取代理第一服务进行通信所需的代理配置信息,并将该代理配置信息下发给第一服务对应的通信代理组件40。其中,代理配置信息是指由通信代理组件40代理第一服务与第二服务进行通信所需的一些配置信息,在本实施例对此不做限定。为了便于描述和区分,将第一服务所在的边缘节点称为第一边缘节点;若第一服务被部署在一个边缘节点中,则第一边缘节点的数量是一个;若第一服务被同时部署在至少两个边缘节点中,则第一边缘节点的数量是至少两个。其中,在第一边缘节点为至少两个的情况下,通信管控组件30具体可以将第一服务对应的代理配置信息分别下发给至少两个第一边缘节点中与第一服务对应的通信代理组件40。
对第一边缘节点中与第一服务对应的通信代理组件40来说,可接收通信管控组件30下发的代理配置信息,根据该代理配置信息代理第一服务与第二边缘节点中的第二服务进行通信。如图1a所示,第一服务和第二服务之间的数据传输过程为:第一服务的数据传输请求先到达第一边缘节点中与第一服务对应的通信代理组件40,再由第一服务对应的通信代理组件40将数据传输请求发出,经网络传输后到达第二边缘节点中与第二服务对应的通信代理组件40,最后由第二服务对应的通信代理组件40将该数据传输请求发送给第二服务。在该过程中,第一服务和第二服务不需要知道彼此在边缘节点中的部署地址信息,或者说,第一服务和第二服务的部署地址信息不需要对外公开,可在一定程度上降低服务被网络攻击的概率,有利于提高服务安全性;另外,因为有通信代理组件的存在,第一服务也无需执行与数据传输安全相关的操作,例如加密,这些操作可以由通信代理组件完成,可以减轻第一服务的处理负担,便于第一服务更加专注于服务逻辑。
在本申请实施例中,并不限定通信管控组件30获取代理第一服务进行通信所需的代理配置信息的实施方式。下面举例说明:
方式1:通信管控组件30可以对外提供人机交互接口,例如web页面、应用页面或命令窗等,基于该人机交互接口,可以接收部署第一服务的服务提供方或系统管理人员提供的代理第一服务进行通信所需的代理配置信息。例如,服务提供方或系统管理人员可以打开命令窗,在命令窗中输入命令行,通过命令行来配置代理第一服务进行通信所需的服务端口以及在该服务端口上的服务路由规则。
方式2:通信管控组件30借助于服务编排节点20获取代理第一服务进行通信所需的代理配置信息。具体地,服务编排节点20在根据用户的服务部署需求在边缘云系统100中部署第一服务之后,可以配置代理第一服务进行通信所需的代理配置信息,并将该代理配置信息提供给通信管控组件30,以供通信管控组件30下发给第一边缘节点中与第一服务对应的通信代理组件40。
在一可选实施例中,服务编排节点20可以根据预设的配置模板配置代理第一服务进行通信所需的代理配置信息,在该配置模板中包含需要配置的代理配置信息的名称等描述信息。或者,在另一可选实施例中,通信管控组件30可以向服务编排节点20发起注册请求;在注册过程中,服务编排节点20可以对通信管控组件30进行合法性验证,在确认通信管控组件30合法的情况下,通过通信管控组件30的注册请求。在成功注册之后,通信管控组件30可以与服务编排节点20进行交互,因此可以向服务编排节点20提供代理配置描述信息,以告知服务编排节点20代理通信需要哪些代理配置信息,即该代理配置描述信息用于描述代理第一服务进行通信需要哪些代理配置信息,例如这些代理配置描述信息可以包括代理配置信息的名称字段等信息。服务编排节点20可以接收通信管控组件30发送的代理配置描述信息,根据该代理配置描述信息配置代理第一服务进行通信所需的代理配置信息。
进一步可选地,服务编排节点20可以根据代理配置描述信息,向服务提供方提供与代理配置信息适配的信息配置接口,该信息配置接口用于供服务提供方配置代理配置信息;对服务提供方来说,可以通过该信息配置接口配置代理配置信息;服务编排节点20接收服务提供方通过该信息配置接口提供的代理配置信息。其中,该信息配置接口可以是服务编排节点20提供的web页面、应用页面或命令窗,对此不做限定。在此说明,在代理配置信息有多个的情况下,多个代理配置信息可以共用同一信息配置接口,即服务提供方可以通过同一信息配置接口同时配置多个代理配置信息;或者,也可以为每个代理配置信息分别提供一个信息配置接口,即服务提供方可以执行多次配置操作,每次通过一个信息配置接口配置该信息配置接口对应的代理配置信息。其中,这些代理配置信息允许服务提供方自主配置,使用起来比较灵活。
在本申请实施例中,上述代理配置信息至少包括第一服务所需的服务端口和在该服务端口上的服务路由规则。其中,服务端口用于供与第一服务对应的通信代理组件40监测第一服务发出的数据传输请求,例如可以是8080端口;换句话说,第一服务可以通过该服务端口将自己的数据传输请求提供给与其对应的通信代理组件40,通信代理组件40可以通过该服务端口获取第一服务发出的数据传输请求。服务路由规则至少可以描述通信代理组件40应该将第一服务的数据传输请求发送给哪个服务。其中,一种类型的数据传输请求对应一个服务路由规则,该服务路由规则中至少包括:数据传输请求的标识信息和该数据传输请求需要到达的目的服务的标识信息。在本实施例中,第一服务的数据传输请求需要到达的目标服务即为第二服务。其中,数据传输请求的标识信息可以是数据传输请求对应的域名,或者域名和路径信息,例如URL。
基于上述,第一边缘节点中与第一服务对应的通信代理组件代理第一服务与第二边缘节点中的第二服务进行通信的过程具体为:第一服务对应的通信代理组件通过服务端口接收第一服务发起的数据传输请求,根据第一服务对应的服务路由规则,确定与第一服务存在通信需求的第二服务;经第二边缘节点中与第二服务对应的通信代理组件将该数据传输请求转发至第二服务。在此说明,若该通信代理组件是第一服务专用的,则该服务端口上仅存在与第一服务对应的服务路由规则;反之,若该通信代理组件是第一服务和其它服务共用的,则该服务端口上可能同时存在第一服务和其它服务对应的服务路由规则,但不同服务对应的服务路由规则中的域名是不一样的,故在接收到第一服务的数据传输请求之后,可以根据数据传输请求中包含的域名在多个服务路由规则中进行匹配,从而得到第一服务对应的服务路由规则。
进一步可选地,第二服务可能被部署在至少两个边缘节点中,也就是说,第二边缘节点为至少两个,在该情况下,第一边缘节点中与第一服务对应的的通信代理组件可以在第二服务被部署在至少两个第二边缘节点中的情况下,从至少两个第二边缘节点中选择目标边缘节点;经目标边缘节点中与第二服务对应的通信代理组件将来自第一服务的数据传输请求转发至目标边缘节点中的第二服务。
进一步可选地,上述代理配置信息还可以包括流量策略(Traffic Policing),用于对通信代理组件40的代理流量进行限制或管控。基于此,第一服务对应的通信代理组件可以根据服务端口上的流量策略,经第二服务对应的通信代理组件将来自第一服务的数据传输请求转发至第二服务;进一步,在第二服务被部署在至少两个第二边缘节点中的情况下,第一服务对应的通信代理组件可以从至少两个第二边缘节点中选择目标边缘节点;根据服务端口上的流量策略,经目标边缘节点中与第二服务对应的通信代理组件将来自第一服务的数据传输请求转发至目标边缘节点中的第二服务。
其中,流量策略包括但不限于:限流策略、限速策略、负载均衡策略以及故障注入策略等中至少一种。以限流或限速策略为例,在将来自第一服务的数据传输请求转发至目标边缘节点中的第二服务时,可以对该数据传输请求进行限流或限速处理,将限流或限速处理后的数据传输请求转发给目标边缘节点中的第二服务。以负载均衡策略为例,在将来自第一服务的数据传输请求转发至目标边缘节点中的第二服务时,可以根据负载均衡策略,从目标边缘节点中承载第二服务的多台物理机中选择目标物理机,将该数据传输请求转发至目标物理机上的第二服务。
在本申请实施例中,并不限定第一边缘节点中与第一服务对应的通信代理组件将数据传输请求转发给第二边缘节点中的第二服务所经过的路径信息。在一可选实施例中,第一服务对应的通信代理组件可以通过第一边缘节点与第二边缘节点之间的网络,直接将数据传输请求直接转发给第二边缘节点中与第二服务对应的通信代理组件,由第二服务对应的通信代理组件将数据传输请求转发给第二服务。除此之外,考虑到边缘场景中不同边缘节点之间的网络质量是动态变化的,以第一边缘节点和第二边缘节点为例,在第一边缘节点和第二边缘节点之间的网络质量比较差的时候,第一服务对应的通信代理组件直接与第二服务对应的通信代理组件进行通信,通信性能会比较差,数据传输速率会较低。为了得到网络通信质量符合设定要求的路径信息,在本申请实施例中,允许通过其它边缘节点在第一边缘节点与第二边缘节点之间进行中转。具体地,通信管控组件30还可以获取从第一边缘节点到第二边缘节点的目标路径信息,该目标路径信息是网络通信质量符合设定要求的路径信息,可能是直接从第一边缘节点到第二边缘节点的路径信息(可称为直达路径信息),也可能是从第一边缘节点经其它边缘节点中转后到达第二边缘节点的路径信息(可称为中转路径信息)。通信管控组件30将目标路径信息发送给第一边缘节点中与第一服务对应的通信代理组件40;第一服务对应的通信代理组件40可沿着该目标路径信息,将来自第一服务的数据传输请求发送给第二边缘节点(或目标边缘节点)中的第二服务。在本申请实施例中,并不限定通信管控组件30获取从第一边缘节点到第二边缘节点的目标路径信息的方式,下面举例说明:
在一可选实施例中,通信管控组件30可以获取各边缘节点之间的网络质量参数,例如传输延时、传输速率、丢包率等;根据这些网络质量参数,结合各边缘节点之间的网络拓扑关系,从第一边缘节点到第二边缘节点的可达路径信息中,选择网络通信质量符合设定要求的目标路径信息,目标路径信息可能是直达路径信息也可能是中转路径信息。具体地,各边缘节点可以采用一定方式探测彼此之间的网络质量参数,并上报给通信管控组件30。
在另一可选实施例中,如图1b所示,本实施例的边缘云系统100还包括:选路节点50和探测节点60;其中,探测节点60部署在各边缘节点10中。探测节点60,用于探测其所在边缘节点到其它边缘节点之间的网络质量参数,并上报给选路节点50。其中,探测节点60可以周期性或不定时地探测边缘节点之间的网络质量参数,并上报选路节点50。在本实施例中,并不限定探测节点60所采用的探测方式。例如,探测节点60可以相互发送探测数据包,并在接收到对端发送的探测数据包之后返回响应数据包;探测节点60可以根据发送探测数据包的时间和接收到响应数据包的时间探测两个边缘节点之间的传输延时,可以通过发送出的探测数据包的数量和对端返回的响应数据包的数量来探测两个边缘节点之间的丢包率。另外,还可以采用一些网络质量测量软件,例如Ping工具来探测边缘节点之间的网络传输速率等。
选路节点50用于接收探测节点60上报的边缘节点之间的网络质量参数,根据各边缘节点之间的网络质量参数,从第一边缘节点到第二边缘节点的可达路径信息中,选择网络通信质量符合设定要求的目标路径信息,并将该目标路径信息提供给通信管控组件30。也就是说,通信管控组件30可以从选路节点50获取目标路径信息并下发给第一边缘节点中与第一服务对应的通信代理组件40。在部署实现上,选路节点50可以部署在云计算数据中心,或传统数据中心,当然也可以部署在边缘云系统100中,例如选路节点50可独立于多个边缘节点10单独部署,或者也可以部署在一个、两个或两个以上的边缘节点10中,本实施例对此不做限定。
在一可选实施例中,通信管控组件30在获取代理第一服务进行通信所需的代理配置信息之后,基于服务路由规则可以确定第一服务需要与第二服务进行数据传输,通信管控组件30可以从服务编排节点20获取第一服务和第二服务相关的部署信息,这里的部署信息包括但不限于第一服务或第二服务所在边缘节点的信息;根据该部署信息,通信管控组件30可以知道第一服务部署在第一边缘节点中以及第二服务部署在第二边缘节点中。基于此,通信管控组件30向选路节点50发送选路请求,以向选路节点50请求从第一边缘节点到第二边缘节点的目标路径信息。其中,选路请求中至少包括第一边缘节点和第二边缘节点的标识信息,例如节点名称或ID等。选路节点50接收通信管控组件30发送的选路请求,根据该选路请求,结合多个边缘节点之间的网络质量参数,计算从第一边缘节点到第二边缘节点的各条可达路径信息的质量分数,并从各条可达路径信息中选择质量分数大于设定分数阈值的可达路径信息作为目标路径信息。其中,第一边缘节点可能是一个或至少两个,第二边缘节点也可能是一个或至少两个,而任一第一边缘节点中的第一服务可能和任一第二边缘节点中的第二服务进行数据传输,故在本实施例中,针对每个第一边缘节点,选路节点50可以计算出该第一边缘节点到每个第二边缘节点的目标路径信息,并由通信管控组件30将该第一边缘节点到每个第二边缘节点的目标路径信息下发给该第一边缘节点中与第一服务对应的通信代理组件40。
其中,对任一可达路径信息,选路节点50对该可达路径信息上相邻边缘节点之间的网络质量参数进行加权求和,得到该可达路径信息的质量分数;质量分数越高,该可达路径信息的网络通信质量越好;选择质量分数超过设定分数阈值的可达路径信息作为目标路径信息。进一步,质量分数超过设定分数阈值的可达路径信息为多条时,可以随机选择其中一条作为目标路径信息,或者,可以选择质量分数最高的一条作为目标路径信息。其中,相比于第一边缘节点到第二边缘节点的直达路径信息,如果经过其它边缘节点的中转路径信息的网络质量更好,选路节点50会将经过其它边缘节点的中转路径信息作为目标路径信息提供给通信管控组件30。下面举例说明:
假设边缘节点A、B、C和D之间的网络延迟为:A->B:25ms,A->C:20ms,A->D:100ms,B->C:20ms,C->D:15ms,B->D:30ms。其中,边缘节点A中的通信代理组件需要将第一服务的数据传输请求发送至边缘节点D中的第二服务,选路节点50会计算从边缘节点A到边缘节点D的各条可达路径的整体网络延迟如下:A->D的总延时:100ms,A->C->D的总延时:20+15=35ms,A->B->D的总延时:25+30=55ms,A->B->C->D的总延时:25+20+15=60ms;其中,路径信息A->C->D的总延时最小,比路径信息A->D直连延时降低了65ms,选路节点50会将路径信息A->C->D作为目标路径信息,边缘节点A经边缘节点C进行中转与边缘节点D进行通信,可大大提高传输性能和可靠性。
由上述示例可知,在本实施例提供的边缘云系统中,通过探测节点和选路节点,可以在第一边缘节点和第二边缘节点之间选择较佳的路径信息,例如选路延时较小的中转路径信息,从而解决边缘场景下边缘节点之间直达路径网络质量较差时的数据传输问题,充分发挥边缘场景下边缘节点分布较广的优势,有利于提高网络传输性能和可靠性。
进一步,考虑到从第一边缘节点到第二边缘节点需要通过公网传输,为了保证数据传输的安全性,本实施例中的通信代理组件还具有传输加密的能力,即在通过上述目标路径信息向第二边缘节点中的第二服务发送数据传输请求的过程中,还可以采用约定的加密传输协议对该数据传输请求进行加密,经公网传输以及第二边缘节点中与第二服务对应的通信代理组件最终将加密后的数据传输请求转发至第二服务。其中,约定的加密传输协议可以是自研的加密传输协议,也可以采用现有的解密传输协议,例如安全套接字层(Secure Sockets Layer,SSL)协议。
其中,图1c所示是另一种实现服务之间跨节点进行数据传输的方案,在图1c中,第一边缘节点中的第一服务可以将数据上传到对象存储服务(Object Storage Service,OSS)中,第二边缘节点中的第二服务等待第一服务传输完成之后,再从OSS上面拉取第一服务上传的数据,这种方式可以实现第一服务和第二服务之间的跨节点通信,但是仅适用于异步数据传输和对时间不敏感的同步数据传输场景,对于时间敏感的同步数据传输场景不适用;而且,通过OSS中转需要耗费存储资源,同时传输速率得不到保障。而本申请实施例在边缘云系统中增设通信管控组件和通信代理组件,并将通信代理组件部署到边缘云系统中的边缘节点中,在通信管控组件和通信代理组件的配合下,由通信代理组件代理其所在边缘节点中的服务与其它边缘节点中的服务进行通信,不仅可以解决服务之间跨边缘节点进行数据传输的问题,而且采用通信代理组件代理服务进行跨边缘节点的数据传输,还具有实时性较高、传输速度较快、可靠性较强等优势,适用于各种数据传输场景。
在本申请实施例中,通信管控组件30和各边缘节点10中的通信代理组件40相互配合代理服务之间进行通信,解决了服务之间跨节点的数据传输问题,但并不限制通信管控组件30与通信代理组件40在实现上具体采用的技术手段,凡是可以实现上述实施例中描述的功能逻辑的技术手段均适用于本申请实施例。例如,在一些可选实施例中,可以将服务网格(service mesh)技术应用于本申请实施例提供的边缘云系统中,作为处理边缘云系统中服务间通信的基础设施层,在云原生场景中复杂的服务拓扑中实现可靠的数据传输,具体地,可以在通信管控组件30中实现服务网格技术中的控制面组件,该控制面组件又可称为网格中心,可以在通信代理组件40中实现服务网格技术中的数据面组件,从而实现为一种如图2所示的边缘云系统中的通信架构。
进一步,如图2所示,在该实施例中还将服务网格技术与Kubernetes(K8s)系统进行了结合,K8s系统是一个可以移植、可扩展的开源平台,使用声明式的配置,并依据配置信息自动地执行容器化应用程序的管理。K8s系统中的主(master)节点可部署在服务编排节点20中实现,K8s系统中的工作(worker)节点被部署在边缘节点10中的边缘计算节点上实现,除此之外,边缘计算节点上还部署有容器组(Pod),Pod是对容器实例进行组织和管理时可被调度的最小原子单位,被部署在每个边缘计算节点上,这些Pod负责对外提供服务,一个服务通常由一组Pod提供。下面对图2所示的边缘云系统的工作原理进行详细说明:
首先,服务提供方可通过K8s系统在各个边缘节点上部署各种应用;网格中心会监测(watch)K8s系统的应用部署信息。每个应用部署之后会生成一个K8s系统中的服务(service),当然,一个应用可以独立成为一个服务,多个相同或不同的应用也可以共同成为一个服务;服务对应的终端地址(endpoint)为应用实际部署的IP端口。应用所在的边缘节点上会同时部署服务网格技术中的数据面组件,用于代理该应用对应的服务与其它服务进行通信,数据面组件启动后会与网格中心建立长连接,即该连接长期处于连接状态,并通过该连接上报自己的IP地址等信息。
网格中心提供了一些应用程序接口(Application Programming Interface,API),例如用于配置服务端口的第一API、用于配置服务路由规则的第二API、配置目标地址的流量策略的第三API、以及用于配置目标服务相关信息的第四API等,通过K8s系统可以将这几个API透露给服务提供方或系统管理人员,由服务提供方或系统管理人员在创建服务时,通过这些API创建数据面组件的服务端口、服务路由规则、流量策略以及目标服务的相关信息。其中,目标地址是指目标服务的地址。其中,服务网格技术可以有不同的技术实现,例如可以采用开源的Istio实现,以Istio实现为例这些API可以包括但不限于以下:API网关(gateway),可用于配置服务端口,目标规则(destination rule),其中destinationrule是服务网格技术中重要的资源对象之一,它必须跟虚拟服务(Virtual Service)API共同发挥作用,两者配合可以将流量标记分组并路由到具体的目标服务,用于配置服务路由规则和流量策略;以及Service API,用于配置目标服务的相关信息。
在一可选实施例中,服务提供方或系统管理人员通过这些API可以配置数据面组件的服务端口为8080端口,并配置服务路由规则为:将域名b.com的请求转发到服务B对应的终端地址(endpoint),同时还可以配置向服务B转发时使用的负载均衡策略等,并可配置服务B的相关信息,例如名称、IP地址、端口等。其中,服务B对应的endpoint即为上述流量策略对应的目标地址。需要说明的是,根据每个数据面组件所在边缘节点的不同,网格中心将会给不同数据面组件下发不同的代理配置信息;其中,代理配置信息可以包括但不限于:数据面组件的服务端口、服务路由规则以及目标地址的流量策略。
进一步,网格中心还可以监测K8s系统中有关代理配置信息的变化情况,如果出现代理配置信息的增加、删除或改变的情况,网格中心会及时获取新的代理配置信息并会将新的代理配置信息发送给对应的数据面组件,其中,数据面组件和网格中心之间可以通过xDS协议进行通信。在本实施例中,xDS协议被用于在数据面组件和网格中心之间传输代理配置信息。
在各边缘节点中的数据面组件获取到对应的代理配置信息之后,可以代理其所对应的服务与其它服务进行数据传输。具体地,当服务A需要传输数据给服务B时,可以通过服务A对应的数据面组件的服务端口如8080向数据面组件发请求,该请求带有服务A的域名,在该实施例中一个域名唯一对应一条服务路由规则;数据面组件接收到服务A的请求之后,可以按照配置的服务路由规则,找到该请求对应的目标服务如服务B,于是根据该服务路由规则将该请求转发到服务B对应的endpoint,比如假设服务B部署地址为IP2.0.0.0,在该过程中,服务A不需要关注服务B的部署地址信息,只需要通过网格中心提供的API将对应的服务路由规则配置下去即可。进一步,在配置了流量策略的情况下,还可以根据流量策略将请求转发到服务B。
进一步,在图2所示边缘云架构中加入了探测节点(edge-prober)和选路节点(route center)。其中,网格中心可以将每个探测节点需要探测的IP列表同步给选路节点,再由选路节点下发给每个探测节点。对每个探测节点来说,其IP列表中包含部署在其它边缘节点中的其它探测节点的IP地址。每个探测节点探测到IP列表中其它边缘节点中探测节点的网络质量参数,例如网络延迟、发送速率、丢包率等,并将探测到的到其它探测节点的网络质量参数上报给选路节点。探测节点到探测节点之间的网络质量参数一定程度上代表了两个探测节点所在边缘节点之间的网络质量参数。
基于选路节点得到的各边缘节点之间的网络质量参数,网格中心还可以向选路节点发送选路请求,以请求选路节点为有数据传输需求的两个服务(如第一服务和第二服务)所在边缘节点计算出网络通信质量符合设定要求的目标路径信息。为便于描述,将这两个边缘节点称为源节点和目的节点,其中,源节点中的第一服务需要向目的节点中的第二服务进行数据传输。其中,网格中心可以在数据面组件接收到数据传输请求之前,预先向选路节点发送选路请求,或者,也可以在数据面组件接收到数据传输请求之后,根据数据面组件的路径请求,实时向选路节点发送选路请求。对选路节点而言,在接收到网格中心发送的选路请求之后,可以为源节点和目的节点计算网络通信质量符合设定要求的目标路径信息;如果发现从中间节点中转更快,则会向网格中心返回经中间节点进行中转的中转路径信息,该中转路径信息同时包括中间节点和目的节点的IP地址;反之,会向数据中心返回从源节点到目的节点的直达路径信息。网格中心将选路节点返回的目标路径信息下发给对应的数据面组件,以供该数据面组件根据该目标路径信息将第一服务的请求转发给第二服务;在选路节点返回的是中转路径信息的情况下,中间节点上的数据面组件在接收到目的IP地址与自己的IP地址不符合的请求时,会继续向目的IP地址转发。
需要说明的是,本方案采用K8s系统管理服务部署,网格服务经K8s系统将服务的代理配置透露给服务提供方,使得服务端口、服务路由规则等信息可由服务提供方自主配置,使用起来比较灵活。另外,服务提供方在部署自己的服务时不需要感知其它服务的部署地址信息,可支持动态扩缩容,快速迁移等。同时,采用网格服务中的数据面组件代替服务进行数据传输,可以直接点对点传输,具有实时性,传输速度快,可靠性强等优势。进一步,在本申请实施例中还引入了探测节点和选路节点,可以选择通信质量符合设定要求的路径信息,例如可以选择延时较小的路径,在边缘场景下,可以很好地解决点到点链路质量差的问题,更大地发挥边缘节点分布广的优势。
图3a为本申请实施例提供的一种数据传输方法的流程示意图。该方法适用于边缘云系统中的通信管控组件,如图3a所示,该方法包括:
31a、在第一服务被部署到边缘云系统中的情况下,获取代理第一服务进行通信所需的代理配置信息;其中,第一服务是被部署到边缘云系统中的任一服务;
32a、将上述代理配置信息下发给第一服务对应的通信代理组件,以使该通信代理组件根据该代理配置信息代理第一服务与第二边缘节点中的第二服务进行通信,第一服务对应的通信代理组件部署在第一服务所在的第一边缘节点中。
在一可选实施例中,该方法还包括:向边缘云系统中的服务编排节点进行注册,并向服务编排节点提供代理配置描述信息,以供服务编排节点在将第一服务部署到边缘云系统中的情况下根据代理配置描述信息配置代理第一服务进行通信所需的代理配置信息。
在一可选实施例中,在获取代理配置信息之后,还包括:向边缘云系统中的选路节点发送选路请求,以向选路节点请求从第一边缘节点到第二边缘节点的目标路径信息,且目标路径信息的网络通信质量符合设定的要求;将选路节点返回的目标路径信息发送给第一服务对应的通信代理组件,以供通信代理组件根据代理配置信息并沿着目标路径信息代理第一服务与第二边缘节点中的第二服务进行通信。
图3b为本申请实施例提供的另一种数据传输方法的流程示意图。该方法适用于边缘云系统中的通信代理组件,如图3b所示,该方法包括:
31b、接收边缘云系统中的通信管控组件下发的代理配置信息,该代理配置信息是代理被部署到通信代理组件所在第一边缘节点中的第一服务进行通信所需的;
32b、根据通信管控组件下发的代理配置信息,代理第一服务与第二边缘节点中的第二服务进行通信;其中,第一服务是被部署到边缘云系统中的任一服务。
在一可选实施例中,上述代理配置信息至少包括第一服务所需的服务端口和在服务端口上的服务路由规则。基于此,上述根据通信管控组件下发的代理配置信息,代理第一服务与第二边缘节点中的第二服务进行通信,包括:通过服务端口接收第一服务发起的数据传输请求;根据第一服务对应的服务路由规则,确定与第一服务存在通信需求的第二服务;经第二服务对应的通信代理组件将数据传输请求转发至第二服务,第二服务对应的通信代理组件部署在第二服务所在的第二边缘节点中。
进一步可选地,上述代理配置信息还包括:第一服务在服务端口上的流量策略。相应地,经第二边缘节点中的通信代理组件将数据传输请求转发至第二服务,包括:在第二服务被部署在至少两个第二边缘节点中的情况下,从至少两个第二边缘节点中选择目标边缘节点;根据流量策略,经目标边缘节点中与第二服务对应的通信代理组件将数据传输请求转发至第二服务。
进一步可选地,经第二边缘节点中与第二服务对应的通信代理组件将数据传输请求转发至第二服务,包括:按照约定的传输协议对数据传输请求进行加密,经第二边缘节点中与第二服务对应的通信代理组件将加密后的数据传输请求转发至第二服务。
关于上述方法实施例中各步骤的详细描述可参见前述系统实施例,在此不在赘述。
在本申请实施例中,在边缘云系统中增设通信管控组件和通信代理组件,并将通信代理组件部署到边缘云系统中的边缘节点中,在通信管控组件和通信代理组件的配合下,由通信代理组件代理其所在边缘节点中的服务与其它边缘节点中的服务进行通信,从而解决服务之间跨边缘节点进行数据传输的问题;另外,采用通信代理组件代理服务进行跨节点的数据传输,还具有实时性较高、传输速度较快、可靠性较强等优势。
需要说明的是,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如31a、32a等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图4为本申请示例性实施例提供的一种节点设备的结构示意图。该节点设备应用于边缘云系统,该节点设备上部署有通信管控组件,如图4所示,该节点设备包括:存储器41和处理器42。
存储器41,用于存储计算机程序,并可被配置为存储其它各种数据以支持在节点设备上的操作。这些数据的示例包括用于在节点设备上操作的任何应用程序或方法的指令,消息,图片,视频等。其中,存储器41中的计算机程序可以是通信管控组件对应的程序。
处理器42,与存储器41耦合,用于执行存储器41中的计算机程序,以用于:在第一服务被部署到边缘云系统中的情况下,获取代理第一服务进行通信所需的代理配置信息;其中,第一服务是被部署到边缘云系统中的任一服务;将上述代理配置信息下发给第一服务所在第一服务对应的通信代理组件,以使该通信代理组件根据该代理配置信息代理第一服务与第二边缘节点中的第二服务进行通信,第一服务对应的通信代理组件部署在第一服务所在的第一边缘节点中。
在一可选实施例中,处理器42还用于:向边缘云系统中的服务编排节点进行注册,并向服务编排节点提供代理配置描述信息,以供服务编排节点在将第一服务部署到边缘云系统中的情况下根据代理配置描述信息配置代理第一服务进行通信所需的代理配置信息。
在一可选实施例中,处理器42在获取代理配置信息之后,还用于:向边缘云系统中的选路节点发送选路请求,以向选路节点请求从第一边缘节点到第二边缘节点的目标路径信息,且目标路径信息的网络通信质量符合设定的要求;将选路节点返回的目标路径信息发送给第一服务对应的通信代理组件,以供通信代理组件根据代理配置信息并沿着目标路径信息代理第一服务与第二边缘节点中的第二服务进行通信。
进一步,如图4所示,该节点设备还包括:通信组43、电源组件44等其它组件。图4中仅示意性给出部分组件,并不意味着节点设备只包括图4所示组件。
图5为本申请示例性实施例提供的一种节点设备的结构示意图。该节点设备应用于边缘云系统,该节点设备上部署有通信代理组件,如图5所示,该节点设备包括:存储器51和处理器52。
存储器51,用于存储计算机程序,并可被配置为存储其它各种数据以支持在节点设备上的操作。这些数据的示例包括用于在节点设备上操作的任何应用程序或方法的指令,消息,图片,视频等。其中,存储器51中的计算机程序可以是通信代理组件对应的程序。
处理器52,与存储器51耦合,用于执行存储器51中的计算机程序,以用于:接收边缘云系统中的通信管控组件下发的代理配置信息,该代理配置信息是代理被部署到该节点设备所在第一边缘节点中的第一服务进行通信所需的;根据通信管控组件下发的代理配置信息,代理第一服务与第二边缘节点中的第二服务进行通信;其中,第一服务是被部署到边缘云系统中的任一服务。可选地,第一服务可以部署在本实施例的节点设备上,但并不限于此。
在一可选实施例中,上述代理配置信息至少包括第一服务所需的服务端口和在服务端口上的服务路由规则。基于此,处理器52在代理第一服务与第二边缘节点中的第二服务进行通信时,具体用于:通过服务端口接收第一服务发起的数据传输请求;根据第一服务对应的服务路由规则,确定与第一服务存在通信需求的第二服务;经第二边缘节点中与第二服务对应的通信代理组件将数据传输请求转发至第二服务。
进一步可选地,上述代理配置信息还包括:第一服务在服务端口上的流量策略。相应地,处理器52在经第二边缘节点中与第二服务对应的通信代理组件将数据传输请求转发至第二服务时,具体用于:在第二服务被部署在至少两个第二边缘节点中的情况下,从至少两个第二边缘节点中选择目标边缘节点;根据流量策略,经目标边缘节点中与第二服务对应的通信代理组件将数据传输请求转发至第二服务。
进一步可选地,处理器52在经第二边缘节点中与第二服务对应的通信代理组件将数据传输请求转发至第二服务时,具体用于:按照约定的传输协议对数据传输请求进行加密,经第二边缘节点中与第二服务对应的通信代理组件将加密后的数据传输请求转发至第二服务。
进一步,如图5所示,该节点设备还包括:通信组件53、电源组件54等其它组件。图5中仅示意性给出部分组件,并不意味着节点设备只包括图5所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器能够实现上述各方法实施例中的各步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器能够实现上述各方法实施例中的各步骤。
上述实施例中的存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
上述实施例中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述实施例中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。