科普 | 近距离了解木兰开源社区项目——HCloud

项目简介

如今,包括亚马逊,谷歌和微软在内的大多数云提供商通常提供虚拟机(VM)作为计算资源。尽管这些公共云共享相似的基础架构,但它们为用户提供了不同的服务质量标准和价格模型,并可能随着资源用量而波动。云际计算(JointCloud)可实现多个公有云之间的动态协作,以合理的价格为用户提供更好的服务质量。与此同时,无服务计算服务变得越来越流行,并且已经得到了国内外主要云厂商的支持。无服务计算允许用户以函数为单位将其计算任务上传到云中。此后用户无需考虑繁琐的虚拟机管理工作,而是由云根据实际请求创建函数实例,并动态处理传入的请求。

HCloud是一个基于无服务计算模型实现的云际计算平台,它可以细粒度地为用户管理多个云的计算资源,以最优的性能、最实惠的价格为用户提供无服务计算的服务。以函数为粒度使得HCloud能够在云之间灵活地迁移工作负载,从而带来更好的服务质量和更低的价格。在HCloud中,用户能够管理的部分只有函数的管理与调用,而HCloud负责函数的运行态,隐藏多云细节,提供统一服务。


核心功能介绍

一、统一的函数服务接口。用户不用关心HCloud中到底有哪些云,编写的函数只要遵守HCloud的统一格式,使用HCloud提供的统一接口即可。

二、动态资源调度。无服务计算的核心理念之一就是按需调度,按量付费。HCloud里的大部分资源都会根据请求的数量进行扩容缩容,以减少不必要的开销。这主要依靠Manager来实现,Manager会监控云内所有资源的使用状况,在资源使用率较高时分配更多资源,在使用率较低时释放一些资源。在无服务计算中,资源的粒度很小,分配释放都很快,这也是Manager能够快速响应调整,尽量不影响性能表现的前提。

三、多云后端,跨云迁移。对用户来说,他可以在几乎无感知的状态下,使用到多个云的资源。Client会结合函数使用状况、各个云的资源使用状况,调整流量的分配,目标是让用户侧的性能更优,HCloud整体的费用更低。这也要求用户的服务能够跨云迁移。对于无状态的应用,这一点比较好实现。对于有状态的应用,HCloud提供多种存储方式供用户在不同场景下使用。比如,需要支持在任何时刻都可以切换机器执行的函数,就使用跨云存储,以保证函数迁移不受影响。在有限时间段支持迁移的函数,如数据来源是用户侧,中间数据存放在云内存储,不需要和其他应用共享,结果也直接返回给用户。这类函数在中间数据产生之后,不支持换云执行。但是两个不同的请求,可以被分配给不同云执行。也就是说,这类函数不能在运行时终止,但支持将后续的流量都转移。

四、与公有云无服务计算结合。无服务计算的冷启动时间是一个衡量服务质量的重要指标,除了使用虚拟机资源提供函数服务,保证较好的兼容性之外,HCloud也会使用公有云的无服务计算平台来提升性能,主要有两个场景。

(一)冷启动:当某个函数被调用,联合云平台先检查是否有正在运行的函数实例如果有就交给函数实例处理,如果没有就先转发给公有云的无服务计算平台处理,然后去启动一个虚拟机上的函数实例。

(二)过量服务:当某个函数的调用量突然猛增,HCloud会增加函数实例来应对。这一步也有可能需要增加虚拟机的数量,然而虚拟机的启动相对缓慢,为了掩盖这一部分延时,HCloud也会尝试将部分流量转发给公有云的无服务计算平台。


项目优势特点

一、更细的资源粒度:无服务计算的单个资源是函数,几乎不会需要考虑函数的热迁移,如果函数足够小巧,中止后重新启动即可。同时,细粒度的资源提供了更多的调度可能,将一个传统的应用进程拆分成多个函数后,就有可能运行在多个机器,乃至多个云上,最后再组合成最终结果返回。

二、更少的细节暴露:对于用户来说,传统的云服务器包含操作系统、网络设置、运行状态等细节,而无服务计算最简化的情况下就只有函数编程语言是用户所知的。而其他一些用户不可见的部分,开发者就有了更多的实现空间,比如,网络结构不需要满足每一个机器之间都是联通的,因为这些机器对用户来说并不可见,只要它们能协作完成函数服务即可。

三、宽泛的应用支持:选取FaaS作为唯一资源使得资源多样性不足,但FaaS有其独特性:它支持用户自定义代码,并不像SaaS一般提供特定应用。联合云Serverless平台有潜力支撑各种应用,包括图片处理、网页服务、音视频处理、API集成等。


项目原型实现

HCloud实现了四个主要部分:Manager、Worker、Storage Center以及Client。

科普 | 近距离了解木兰开源社区项目——HCloud

如图所示,用户通过Client Library来管理函数,调用函数。Manager负责管理某个云的资源,接收请求后,转发给Worker处理,当资源不足时,Manager还会动态请求更多的资源来应对流量高峰。

Client Library封装了多云调度的策略,它会从Manager处获取各个云的资源统计数据,包括资源余量、资源价格等。此外,它还会测量到各个云的延迟,评估各个云的性能。综合上述信息,再根据用户设定的策略方案,动态地转发每个函数请求到合适的Manager。


项目初步评测的性能

我们基于Python的PIL实现了一个对图片进行裁剪、旋转、加水印等操作的无服务计算函数。在此初步测试中,我们模拟三个不同的私有云,在其上运行HCloud的组件。每个云的资源限制不同,会随着时间动态变化。总共设计了三种变化方式:

一、正弦,性能表现呈现规律性地波动,符合正弦曲线。

二、泊松分布,性能参数满足泊松分布。

三、随机,在一定范围内随机变化。

为了保证公平性,三种变化具有相同的期望值。因此,如果只选用其中一个云,将会得到一个接近期望值的表现。

科普 | 近距离了解木兰开源社区项目——HCloud

科普 | 近距离了解木兰开源社区项目——HCloud

HCloud的Client会根据云的性能表现来动态选择一个云使用,如图所示,分别使用单个云和动态选择的平均延时有明显差异。HCloud采用多云架构,有更大资源余量,能够更好地应对性能波动。同时,Serverless是按量付费,不会因为要维护资源池而产生浪费。


【背景资料】

木兰开源社区(https://mulanos.cn/)是2018年国家重点研发计划“云计算和大数据开源社区生态系统”项目重点成果,由中国电子技术标准化研究院牵头,联合北京大学、国防科大、联想、腾讯云,以及开源中国、北航、中科院软件所、西南大学、华为、阿里云、浪潮、新华三、中电标协、中科院东莞育成中心、湖南酷得共16家单位共同承担。木兰开源社区立足中国,面向国际,联合汇聚国内开源生态圈相关方,共同打造国内开源生态,推动本土开源项目孵化,在推动培育开源贡献文化的同时,与国内外各开源社区融合发展。


分享到:


相關文章: