Page 85 - 《软件学报》2025年第5期
P. 85

温金凤 等: 服务器无感知平台性能度量研究                                                           1985


                 Azure Functions 仅支持  11  个区域, 主要集中在加拿大和美国. 阿里巴巴        Function Compute 支持  20  个区域, 主要在
                 中国, 也有少量服务区域在美国和欧洲等地. 相比较先前工作总结的区域个数, 亚马逊                             Lambda、谷歌   Cloud
                 Functions 和阿里巴巴  Function Compute 所支持的区域个数相差不大, 而微软        Azure Function  所支持的区域个数变
                 少. 然而, 先前工作却没有具体描述区域分布, 我们补充了这一部分内容. 总结来说, 不同平台支持的区域数量和分
                 布反映了他们的市场战略和全球覆盖的目标. 服务器无感知平台将相应的服务节点部署在特定的地理位置以满足
                 它们数据主权和法规要求. 然而, 支持更多区域也意味着平台需要投入更多的资源用于维护, 这可能增加了运营成
                 本, 尤其是在全球范围内提供高质量的服务.
                    发现: 4  个平台在应用部署包大小和任务执行时间上都有不同的限制. 考虑到部署失败或执行失败的可能性,
                 开发者不能忽略这些限制. 除了微软           Azure Functions 采用基于内存消耗的方式执行服务器无感知函数, 其他平台
                 都是根据预先指定的内存大小来执行函数. 由于不同任务对内存和                         CPU 资源的依赖程度不同, 谷歌          Cloud
                 Functions 和阿里巴巴  Function Compute 支持单独配置内存和    CPU  资源的大小. 目前大多数平台还不支持           GPU  实
                 例. 研究的  4  个平台都支持在多个服务区域进行部署.

                 3.3   运行时特点
                    对于应用运行时特点, 在表        5  中总结调用类型、负载大小、输入输出结果存储、运行时系统和付费模型.

                                            表 5 不同服务器无感知平台的运行时特点

                      特点           亚马逊Lambda        谷歌Cloud Functions  微软Azure Functions  阿里巴巴Function Compute
                    调用类型             同步/异步             同步/异步            同步/异步              同步/异步
                    负载大小       6 MB (同步)/256 KB (异步)    10 MB            100 MB      32 MB (同步)/128 KB (异步)
                 输入输出结果存储            S3云存储            Storage云存储        Blob存储           对象存储OSS
                                                      Ubuntu 18.04,                     Debian 9 (Stretch),
                    运行时系统          Linux, Linux 2                     Linux, Windows
                                                      Ubuntu 22.04                      Debian 10 (Buster)
                    付费模型        按照分配内存的使用量         按照分配内存的使用量 按照消耗内存的使用量              按照分配内存的使用量

                    在调用类型方面, 本文所调研的平台主要支持两种调用: 同步和异步. 在同步调用时, 平台会运行该函数并等
                 待响应. 当函数完成时, 平台返回来自函数的响应和相关数据. 而在异步调用时, 无需等待函数的响应, 平台会自动
                 处理剩余代码部分. 本文所调研的          4  个平台都支持同步和异步两种调用类型. 同步调用需要等待函数执行完成, 可
                 能会占用服务器资源并延长时间. 异步调用可以提高性能和资源的利用效率. 但是异步调用可能需要额外的错误
                 处理机制, 以确保任务的正确执行和结果的可靠性.
                    对于负载方面, 不同平台对函数请求的大小也有所不同. 在亚马逊                     Lambda 上, 开发者在请求函数时, 同步调
                 用下的负载大小限制为        6 MB, 异步调用下为     256 KB. 而在阿里巴巴    Function Compute 上, 与先前工作所总结的特
                 征不同的是, 其同步和异步请求下的负载大小分别                 32 MB  和  128 KB. 先前工作报道该平台同步调用的负载大小
                 支持最大为    6 MB. 然而, 目前这一限制提高到        32 MB. 这意味着阿里巴巴      Function Compute 可以用于处理大规模
                 数据和复杂任务, 为同步任务的执行提供了更大的灵活性. 至于谷歌                   Cloud Functions, 它的请求大小的上限为    10 MB.
                 而微软   Azure Functions 的函数请求大小最大可达      100 MB. 负载大小限制的增加可以满足处理不同规模数据的任
                 务. 然而, 需要注意的是, 处理更大的请求负载可能需要更多的资源, 包括内存和计算资源. 开发者需要明确平台是
                 否能够提供足够的资源来处理这些请求. 而且, 更大的请求负载可能需要更长时间的传输, 尤其在慢速或不稳定的
                 网络连接下, 这可能影响应用的性能和响应时间.
                    在输入输出结果存储方面, 可以选择相应平台上的云存储服务. 亚马逊                      Lambda 可使用  S3  云存储, 谷歌  Cloud
                 Functions 可使用  Storage 云存储, 微软  Azure Functions 可使用  Blob  存储, 阿里巴巴函数计算可使用对象存储      OSS.
                 总体来说, 每个平台都可以选择特定的存储服务来保存输入输出数据. 这些云存储服务可以确保数据的持久性, 即
                 使函数执行结束后, 数据仍然可用, 这有助于数据的长期保存和后续分析. 同时, 这些云存储服务具备一定的可扩展
                 性, 这对于处理大规模的数据非常重要. 另外, 这些云存储在一定的权限设置下可以让多个函数或应用访问特定数
   80   81   82   83   84   85   86   87   88   89   90