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

1982                                                       软件学报  2025  年第  36  卷第  5  期


                 编程语言也适用于不同的用例和需求, 例如              Python  通常用于数据分析和智能化任务, 而         Go  通常用于高性能后端
                 开发. 多语言支持意味着开发者可以根据任务需求选择最合适的语言.
                    对于触发器类型, 4     个平台上的函数都可以通过           HTTP  请求触发. 此外, 这些平台上的函数还可以被各自平台
                 上的云服务触发. 考虑到先前的工作并没有具体指出可触发的云服务类型, 在本文中, 我们列出不同服务器无感知
                 平台目前所支持触发的一些云服务. 在亚马逊              Lambda 上, 函数可以被    API 网关、S3 云存储、DynamoDB     数据库、
                 Kinesis 数据流、SQS  队列、SES   邮件、SNS   通知、CloudFormation  资源管理和更新、CloudFront 内容分发网络、
                 CloudWatch Logs 日志流、CodeCommit 代码托管、CodePipeline    持续交付、Cognito    身份验证、IoT     物联网、
                 Lex  智能语音交付和    MQ  消息代理云服务触发; 在谷歌        Cloud Functions, 函数可以被  Pub/Sub  主题、Storage 存储、
                 Firestore 数据库云服务触发; 在微软     Azure Functions 上, 函数可以被  Blob 存储、Kafka 主题、Cosmos DB  数据库、
                 SQL  关系数据库、事件网格、事件中心、IoT            中心、队列存储、SendGrid      电子邮件、SignalR    实时  Web  和定时
                 器云服务触发; 在阿里巴巴        Function Compute 上, 函数可以被对象存储     OSS、API 网关、定时器、日志        SLS、内
                 容分发   CDN、表格存储     Tablestore、消息  MNS、消息队列    MQ  版、消息队列    Kafka 版、消息队列    MQTT  版和数
                 据流  DTS  云服务触发. 支持多种触发器类型允许开发者根据任务的具体需求选择合适的触发器. 而且, 这些服务
                 器无感知平台支持与特定云服务的集成, 例如存储、数据库、消息队列等, 且这些云服务具有伸缩能力, 适应于服
                 务器无感知计算的关键特性. 这使得开发者可以轻松构建可伸缩的复杂云应用, 且充分利用云计算生态系统的各
                 种功能. 然而, 不同触发器类型和云服务的使用也可能增加开发者的学习负担, 开发者需要进一步了解它们的工作
                 方式和配置.
                    在服务器无感知平台上进行应用开发时, 这              4  个平台都提供了图形化控制台、命令行工具、API 和软件开发
                 工具包   (SDK) 进行应用开发. 此外, 微软     Azure Functions 还可以使用  Visual Studio Code 工具以及  Visual Studio  进
                 行开发. 然而, 先前的研究忽略了         Visual Studio  工具. 通过分析微软  Azure Functions 的更新历史, 我们发现  Visual
                 Studio  和  Visual Studio Code 工具一直以来受到微软  Azure Functions 的积极支持. 提供多种开发工具选项有助于
                 满足不同开发者和团队的偏好. 对于某些团队和开发者, 他们可能已经在使用                        Visual Studio  或  Visual Studio Code
                 等工具. 微软   Azure Functions 的支持使他们能够无缝集成这些工具, 从而提高开发效率. 然而, 针对特定平台的开
                 发工具通常会带来平台依赖性. 这也使得服务器无感知计算社区出现了面向不同平台的编程开发框架, 如
                 Serverless Framework [46] . 在本文后续的运行时性能分析实验中, 我们也将使用命令行工具或软件开发工具包来创
                 建、部署和调用不同的基准测试程序.
                    在工作流支持方面, 4      个云服务提供商都支持基于函数服务的工作流构建. 但是, 每个云服务提供商所使用的
                 工作流服务不同. 亚马逊使用         Step Functions 服务来编排  Lambda 函数, 这个服务自   2016  年  12  月发布以来已得到
                 广泛应用   [47,48] . 谷歌使用  Cloud Workflows 服务来编排  Cloud Functions 函数, 该服务在  2020  年  8  月发布. 微软使
                 用  Azure Durable Functions 来编排  Azure Functions 函数, 该服务自  2018  年  5  月发布以来也变得流行  [49] . 阿里巴
                 巴  Function Compute 使用  Serverless Workflow  服务来编排函数, 该服务自  2019  年  7  月发布以来逐渐崭露头角  [48] .
                 每个工作流服务各自使用特定的语言或形式来完成函数之间的编排. 例如, 亚马逊                         Step Functions 使用状态定义语
                 言, 微软  Azure Durable Functions 使用代码形式的编排函数. 总结来说, 使用工作流服务可以轻松编排和协调多个
                 函数, 使它们在特定顺序和条件下执行. 亚马逊             Step Functions 和阿里巴巴  Serverless Workflow  还提供了可视化界
                 面, 允许用户检查工作流的创建流程.
                    发现: JavaScript、Python  和  Java 是  4  个平台都支持的编程语言. 谷歌   Cloud Functions 增加了对  PHP  语言的
                 支持, 阿里巴巴    Function Compute 增加了对  Go  语言的支持. HTTP  类型的触发器是常见的触发类型, 并且应用中
                 的函数都可以被各自平台上的多种云服务触发, 其中, 亚马逊                  Lambda 支持最多种类的云服务触发. 开发者可以使
                 用各个平台的图形化控制台、命令行工具、API 或软件开发工具包进行应用开发. 另外, 微软                            Azure Functions 还
                 可以利用    Visual Studio Code 和  Visual Studio  工具提高开发效率. 4  个平台都支持基于函数服务的工作流构建过
                 程, 但每个平台的工作流构建过程都需要使用特定的定义方式来完成函数编排.
   77   78   79   80   81   82   83   84   85   86   87