云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_图书馆管理系统数据库_新注册优惠

小七 141 0

简介

在最近的SAP TechEd活动中,SAP Cloud Platform Functions(SCP Functions)服务的测试版已经发布,我们已经可以阅读描述该服务的博客(例如,Joerg Singler和Karsten Strothmann撰写的博客)以及Hemchander S撰写的包含如何使用此服务实现功能的演示的博客,此外,我们还可以按照Elisabeth Riemann在其博客中描述的说明,在SCP租户中启用该服务并获得实践经验。

本博客不涉及使用SCP功能服务实现自定义功能的详细信息–如上所述,关于这个主题,已经有了内容丰富的博客,万云,SAP帮助包含了针对开发人员的编程模型文档和如何使用服务的示例。相反,我想分享一些观察和想法,比如是什么推动了服务,在应用程序运行时级别使用了哪些框架组件,以及我们如何获得函数使用情况的统计数据和使用内置计量功能。人们可能会质疑这种分析背后的基本原理。总而言之,无服务器体系结构和功能即服务(FaaS)模型的基本原则之一不是更高级别的开发人员抽象,并侧重于特定实现的功能,而不是整个构建的应用程序和应用程序运行时,应用程序在其中部署和执行吗?这是真的,毫无疑问,开发人员的注意力和努力应该集中在开发功能上,而不是担心运行时和它们的配置,以符合FaaS模型的思想和原则。支持我写这篇博客动机的论据很简单——人类的好奇心和试图更好地了解背后的工具。其目的不是要打破FaaS模型的原则或偏离这些原则,而是为了更好地了解一些底层——在分析某些类型的技术问题(例如,异常和意外的请求处理行为)和收集与之相关的基本统计数据和计量信息时,这可能会非常有用使用已部署的函数来了解函数的运行状况和性能。

在这个博客中,我对已部署的函数使用HTTP触发器,并以这样一种方式实现一个函数:它将收集到的执行详细信息返回给使用者(我不使用登录函数,尽管这是一个合理的选择)–这样做,使用HTTP客户机(这里,我使用Postman)触发函数并直接分析其输出对我来说很方便。对于稍后在博客中的一个演示案例,当我需要在短时间内产生一些负载并多次触发函数来说明计量功能时,服务器云服务器,我使用apachejmeter.

应用程序运行时组件

当前SCP函数服务支持节点.js运行时,因此,让我们从收集有关运行时和环境的非常一般的数据开始,并检查节点.js为已部署函数启动并在其中执行函数的进程。在节点.js,我们可以通过访问全局对象"process"的各种属性和方法来获得详细信息,企业软件平台,实现:

一个过程对象的内容给了我们很多思考和分析的食物:

虽然我们可以从一个过程对象得到很多附加信息,我想提请大家注意几个对我们进一步分析很重要的属性–'process.Main模块'和'进程.argv':

一处房产'process.Main模块'包含有关由启动的入口脚本的信息节点.js运行时。脚本名称存储在属性的process.mainModule.filename文件名’. 同时,检查属性的属性也很有用进程.argv'包含在节点.js进程启动。这两个例子证明了底层的无服务器功能是使用Kubeless–Kubernetes本机无服务器框架提供的。Kubeless支持的运行时之一是节点.js–关于它的文档可以在Kubeless站点上找到,实现可以在GitHub的Kubeless存储库中找到节点.js基于expressweb框架的使用。这也可以通过更精确地检查HTTP响应中返回的头来得出结论——其中一个响应头是"X-Powered-by",它的值是"Express",在响应中创建此头是Express框架的默认行为:

如本博客简介中所述,有关使用的框架的知识对于解决与这些框架的细节或其使用方式相关的一些问题非常有用,网站建站平台,例如,Express如何处理和处理请求,或者Kubeless如何使用Express。让我举一个例子来支持这一说法,并使之更具说明性。为了演示,我创建了一个echo函数——它通过在响应消息中将主体发送回调用者,从而对接收到的主体进行回声。为了简单起见,该函数仅限于处理文本内容,因此我们将不检查处理二进制内容的情况,尽管它们受到服务的良好支持(SCP函数服务与内容负载无关),并且可以在实际场景中使用:

现在我们对该函数进行了测试。首先,让我们发送一个JSON消息(内容类型"application/JSON")。

接下来,让我们发送一个其他内容类型的消息–让它成为一个XML消息(内容类型"application/XML"),尽管其他内容类型也会面临类似的行为: