Page 290 - 《软件学报》2021年第12期
P. 290
3954 Journal of Software 软件学报 Vol.32, No.12, December 2021
基于贪心策略的启发式容器编排算法能够充分考虑容器间的数据依赖关系以及每个容器的计算延迟和计
算需求,为任务运行提供合理的容器编排顺序,是一种简单易用并且高效的编排算法,并且将控制器的计算负载
维持在一个较低的水平,以适应大规模的用户数量.算法的时间复杂度为 O(n|E|),即使在稠密图的情况下,算法
2
的时间复杂度为 O(nm ).因此,随着用户数量和边缘服务器数量的增长,算法的执行时间也呈多项式时间增长的
速度,具有较强的扩展性,能够很好地保证大规模用户下容器的编排效率和算法执行时间.
算法将运行在 FDN 控制器中.每当有用户提交任务请求时,FDN 控制器会先收集任务、集群和网络等重要
信息,再执行容器优先级计算过程和集群选择阶段.它会将容器编排策略放进分发器,并按规则编排到目标边缘
计算集群.DNS 也会根据编排策略,将用户与集群进行映射绑定.经过以上过程,用户提交的计算任务能够更合
理地部署到边缘计算集群进行计算,优化任务的计算延迟,提高系统的计算效率.
4 FDN 系统实现、部署与测试
4.1 FDN实现细节
我们实现了 FDN 系统,包括了 FDN 控制器和各个边缘计算集群,系统架构如图 3 所示.对于 FDN 控制器,
我们实现了客户管理后台(FDN-WEB)、FDN 分发器、中心网关和费用中心等功能,每部分的功能也如第 2 节
描述.其中,我们使用了 RabbitMQ 作为消息队列代理软件,用于处理网络中用户发出的计算请求;同时,用户和容
器等信息也都存放在数据库中,以进行费用和其他用户信息的统一管理.当消息队列不为空时,FDN 分发器就会
依次处理队列中的消息,并找到代码库中对应的代码、容器等信息,进而将容器分发到对应的边缘计算集群上.
对于 FDN 网关,我们也使用了 Nginx 作为服务器代理软件,用于进行负载均衡、安全管理和流量监控等网络状
态管理.另外,我们在 FDN 系统中也部署了一系列高性能的边缘计算集群(我们以 3 个为例,如图 3 所示).对于系
统中的边缘计算集群,我们安装了 K8S 和 Openwhisk 并进行了一定的改进,作为底层的容器编排工具,实现系统
的容器化管理和基于函数的计算功能.每个边缘计算集群内部也会实现边缘网关,功能与控制器网关类似,用于
维护边缘集群内部的正常运转.我们也使用并改进了 Prometheus 软件,将其作为分布式集群的管理工具,让多个
边缘计算集群间协同工作.
Fig.3 Implementation of FDN system
图 3 FDN 系统实现