引入CloudEvents以进行事件驱动的开发

关于云应用程序开发的反复争论表明,“这是其他人的计算机”。 尽管其中存在一个真理的内核,尤其是如果您仅将代码从本地数据中心提升并转移到IaaS公用云 ,这是一种格言,忽略了采用较新的,以云为先的开发模型所带来的经济利益。 精心设计的云应用程序只需几美分即可处理成千上万的交易,即使在最佳的本地数据中心运行中,运营成本也难以匹敌。

[开发人员指南: 无服务器计算:AWS,Google Cloud和Microsoft Azure | 然后学习如何使用Microsoft的Azure功能以及如何使用AWS Lambda进行无服务器计算。 ]

微软一直在通过新的Service Fabric Mesh和其Azure Functions事件驱动的编程平台对无服务器计算模型进行大量投资。 它们是任何新的云开发的关键要素,尤其是在您需要响应来自其他应用程序的事件时。 Azure还包括用于管理这些事件的工具, 我最近写了有关Event Grid的文章 ,该框架是Microsoft用于将事件编组并将事件定向到作为Azure Functions运行的无服务器微服务(或其无服务器托管的低端服务)的发布和订阅框架。代码Azure逻辑应用程序和Azure流)。

对于Microsoft来说,从其自己的第一方服务中获取事件很容易。 将图片放在Azure Blob存储中,Azure函数可以通过Microsoft Cognitive Services或任何其他API触发并处理图像。 但是,当您使用自己的代码或来自其他应用程序和服务的第三方事件源时,事情会变得更加困难。 您可以使用Webhook传递事件,但是需要可处理异步回调的代码,并需要具有监视事件的回调URL所需的计算资源。

挑战在于找到一种描述和传递事件信息的通用方法。 如果可以交付,则不再需要学习使用代码需要使用的每个新事件提供程序的新方法。 可以使用通用库代替自定义代码,并且代码变得更加可移植且更具弹性,从而在发生更改时更容易切换到新的事件提供程序。

CloudEvents简介

包括Microsoft,Red Hat,Serverless,Google和Amazon在内的跨行业小组一直致力于解决此问题已有一段时间,提出了一个名为CloudEvents的事件数据标准。 作为该项目的负责人之一,Microsoft在Azure Event Grid和Azure Functions的支持下Swift采用了自己的工具中的CloudEvents。

涉及众多大型云提供商,CloudEvents需要一个有效的治理框架来交付开发人员所需的解决方案。 因此,很高兴看到它已被Cloud Native Computing Foundation无服务器工作组采用,该团队是 Kubernetes和Helm等项目的所在地。 Azure背后的许多软件基础结构都是开源的,因此与CNCF的合作可确保存在一个开放的设计流程,该流程可支持该标准的多个跨平台实现。 对于像Azure这样的平台,这是一个基本要求,就好像要成为成功的公共云一样,它需要它必须能够支持云到云和服务到云事件。

CloudEvents的核心是描述任何事件JSON模式 。 它包含事件类型,其来源,ID和时间的详细信息。 最重要的是,它具有由用户定义的数据组成的数据块。 在这里,您将定义并交付使用事件发送到应用程序的数据。 如果要开发用于第三方的CloudEvent,则还可以包括指向数据有效负载架构的URL,从而使Azure Event Grid等服务更容易处理不同事件类型之间的转换。 活跃的GitHub存储库可轻松参与开发过程。

Microsoft对CloudEvents的支持目前处于beta版本,并且仅在其Azure区域的一小部分中。 您需要在Azure CLI中显式启用事件网格扩展,然后在为事件创建主题时,将其输入架构设置为使用CloudEvents 。 同样,您可以通过设置适当的交付模式来确保事件网格发出Cloudevents格式的数据。 通过调整输入和交付模式支持,可以使用EventGrid在事件类型之间进行转换。 例如,将所有传入事件作为CloudEvents传递到Azure函数。

CloudEvents尚处于初期阶段,因此,如果您开始使用它,则需要仔细监视事件的交付。 通过事件消息的通用架构,无服务器应用程序现在可以跨云运行,从而利用基于Azure Functions容器的部署选项提供的可移植性。

CloudEvents和gRPC:希望获得的云API组合

诸如CloudEvents之类的开放标准的到来还有另一个方面:开发好的API很难。 RESTful服务很难组成, GraphQL很难版本化; 尽管gRPC发展良好,但在获得广泛采用之前还需要更多的支持。 在CNCF的主持下,由于gRPC和CloudEvents的出现,两者有望成为云服务和应用程序的一组新API标准的基础。

但是它们具有不同的用途:顾名思义,gRPC是一种用于通过HTTP / 2进行远程过程调用的工具,而CloudEvents则提供状态更改通知。 在云托管的无服务器上下文中,您可以使用CloudEvents触发无服务器功能,并将结果通过gRPC传递到后端服务。 或者,您可以通过gRPC调用服务,将结果保存到存储帐户或数据库中,然后使用CloudEvent触发下一个服务。

在这两者之间,您拥有构建服务的一组有效API所需的所有工具,既可以作为输入也可以作为输出。

随着无服务器计算成为现代云体系结构中的关键组成部分,正确实现这一点变得越来越重要。 一套有效的事件和API调用处理标准将使开发人员更容易扩展现有服务以支持无服务器端点。 同样,他们还应减少为无服务器平台提供甚至支持所需的工作量。 无需编写自定义事件处理程序代码,您就可以将架构定义导入到IDE中,编写处理事件数据,构建和部署所需的代码。

From: https://www.infoworld.com/article/3278251/introducing-cloudevents-for-event-driven-development.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值