当前位置: 移动技术网 > 移动技术>移动开发>Android > 阿里云原生编程挑战赛--实现一个 Serverless 计算服务调度系统

阿里云原生编程挑战赛--实现一个 Serverless 计算服务调度系统

2020年07月23日  | 移动技术网移动技术  | 我要评论

题目简介

  1. 一个简化的Faas系统分为APIServer,Scheduler,ResourceManager,NodeService(kubelet),ContainerService(container) 5个组件,系统组建可以类比与k8s。
    APIServer:负责函数库的查询与作业提交
  • ListFunctions:返回所有可调用Function信息
  • InvokeFunction(Function,Event):执行某个Function,传入Event。
    Scheduler:管理容器的组件,APIServer通过Scheduler获得可以执行Function的Container。
  • AcquireContainer(Function):获得一个可以执行Function的Container。如果系统有Container可以运行Function,Scheduler可以直接返回Container,否则Scheduler需要通过ResourceManager获得Node,进而在Node上创建Container。
    简单概括:先通过scheduler调度容器,如果没有合适的container通过resourceManager获得node在node上进行创建。
  • ReturnContainer(Container):归还Container。APIServer在调用Container.InvokeFunction后会调用ReturnContainer归还Container。Scheduler可以利用AcquireContainer和ReturnContainer记录Container的使用情况。
    ResourceManager:ResourceManager管理Node的组件,负责申请和释放。可以认为Node对应于虚拟机,占用虚拟机需要一定的成本,因此Scheduler的一个目标是如何最大化的利用Node,比如尽量创建足够多的Container,不用的Node应该尽快释放。当然申请和释放Node又需要一定的时间,造成延迟增加,Scheduler需要平衡延迟和资源使用时间
  • ReserveNode:申请一个Node,该API返回一个Node地址,使用该地址可以创建Container或者销毁Container。
  • ReleaseNode:释放Node。
    NodeService:NodeService管理单个Node上创建和销毁Container,Node可以认为是一个虚拟机,Scheduler可以在Node上创建用于执行Function的Container
  • CreateContainer(Function):创建Container,该API返回一个Container地址,使用改地址可以InvokeFunction。注意一个Node上能创建的Container使用内存之和受Node规格限制。Scheduler可以通过Node.DestroyContainer销毁Container。
  • RemoveContainer(Container):销毁Container。
  • InvokeFunction(Container, Event):执行Node上的某个Container所加载的函数。
  • GetStats():返回该Node下所有Container和执行环境相关指标,比如CPU,内存。
    ContainerService:ContainerService用于执行函数。
  • InvokeFunction(Event):执行函数。
  1. 需求:实现Scheduler的AcquireContainer和ReturnContainer API
  2. 测试集:由平台提供,可能包含但不局限于函数类型分类:helloworld,CPU intensive,内存intensive,sleep等类型;调用模式包括稀疏调用,密集调用,周期调用等;执行时间包括时长基本固定,和因输入而异等
  3. 测评标准
  • 资源使用时间(ND:Node Duration):Node使用时间。获得Node成功后开始计时,同一Node释放成功后结束计时,其差值为资源使用时间。(即尽量减少空闲node的使用)

  • 调度延迟(SL: Schedule Latency):调用Scheduler.AcquireContainer所需时间。

  • 函数执行时间(FD:Function execution Duration):调用ContainerService.InvokeFunction所需时间。

  • 响应时间(RT:Response Time):调度延迟 + 函数执行时间。

  • 请求成功率:调用APIServer.InvokeFunction成功的次数与APIServer.InvokeFunction调用总次数的比值。
    总结:约束条件其实就是有两个,一个是资源使用时间,一个是相应时间。目标就是在保证请求成功率的前提下,尽量减少这两个数。

本文地址:https://blog.csdn.net/EdiosnMa/article/details/107501825

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网