建立微服务?尝试Dapr

微软的开源,跨平台微服务框架终于可以在黄金时间准备好了。

建立微服务?尝试Dapr
thinkstock

微服务是许多云原生架构的核心,它使用诸如Kubernetes之类的工具来按需管理服务扩展。微软一直走在这一运动的最前沿,它对Cloud Native Computing Foundation有着坚定的承诺,并通过使用Kubernetes支持其超大规模Azure及其本地混合Azure Stack。

该承诺的一部分来自其工具,该工具具有一系列支持云原生微服务开发的不同平台和服务。这些工具之一是 达普, 这 分布式应用程序运行时,一个事件驱动的运行时,它支持使用最佳实践创建和管理服务元素。它的设计与平台无关,因此您可以使用目标环境(本地,Kubernetes或其他任何具有Dapr支持的环境)的选择,以及语言和框架的选择。

[ 同样在InfoWorld上:针对每个开发人员的17种聪明的API ]

达普尔接近1.0

已经有一段时间了 达普 2019年秋季公告,但在过去的一年中,开发工作仍在继续,目前有第二个候选版本可用, 达普 1.0版本并不遥远。该开发过程包括开发工具和Dapr CLI,用于设置开发环境并帮助应用程序脚手架,随时为您添加代码。

至少还会有一个候选发布版本,但是如果您还没有看过Dapr,那么现在正是开始看看它是否可以帮助您更快地构建服务的好时机。 Dapr CLI是一个不错的起点,它可与本地Docker安装一起使用。它适用于Linux,macOS和Windows,并提供主要版本的安装说明。 Windows开发人员可以选择使用WSL的Linux说明在WSL或Windows中安装。您可以安装 当前的候选版本 CLI或最新的稳定开发版本0.11。

安装完成后 达普 CLI和Docker桌面,使用使用Linux容器的Docker Desktop,您就可以开始以自托管模式开始使用了。我建议使用最新版本的Docker Desktop,因为它可以直接与WSL 2配合使用,从而使在开发PC上运行和管理Dapr容器更加容易。运行Dapr会在开发系统上下载并安装核心Dapr容器,以供使用。 自托管Dapr 允许您在不使用Kubernetes的情况下尝试使用它,同时仍然使用其所有开发工具。

需要注意的一点是:我的主要开发PC上确实存在端口保留方面的问题,这阻止了关键的Dapr容器之一的启动。这是固定的 通过停止Windows NAT服务,这阻止了Dapr需要使用的端口的访问。

通过以自托管模式在本地运行Dapr,您可以测试是否安装并运行了正确的版本以及三个Dapr容器是否正在运行。完成后,您可以使用Dapr的卸载命令删除容器(使用–all选项删除所有内容)。

如果您喜欢从Kubernetes开始,可以通过Helm或通过Dapr CLI使用Dapr。这将安装构建和运行Dapr应用程序所需的一组Pod。尽管CLI方法可行,但最好使用Helm图表安装Dapr,因为这会将您的安装链接到Dapr Helm存储库并设置适当的名称空间,从而允许您自动执行安装并确保始终运行最新版本,支持的版本。

配置Dapr组件并构建您的第一个代码

有了基本的Dapr容器后,接下来您需要在Redis中建立一个状态存储和一个发布/订阅消息代理。使用yaml配置状态存储,为存储设置密钥和元数据。消息代理也在Redis中运行,并在其Yaml配置中使用相同的密钥。将密码硬编码到您的环境中不是一个好主意,尽管这样做可以使自托管开发更容易。如果您对密码进行硬编码,则在移至共享开发环境或在git或其他源代码管理平台中存储配置时,准备将其从配置中删除。

安装并配置Dapr环境后, 您已准备好构建开发平台。显然,我们仍处于云原生软件开发的早期,因为没有单个安装程序可以将您需要的一切整合到一个地方。这与在Visual Studio中使用.NET甚至使用Visual Studio Code的Azure平台工具都不一样,因为您需要查找和下载SDK并配置IDE。

达普目前拥有SDK 适用于.NET,Java,Go,Python,JavaScript和PHP。每个都有一个单独的GitHub存储库,因此找到您要使用的存储库并从那里安装它。这些SDK提供了一些工具,可通过API将您的代码链接到Dapr的构建基块。由于它们使用gRPC或HTTP,因此您不限于使用SDK来处理语言,因为您可以使用熟悉的HTTP POST和GET构造来建立自己的连接。因此,例如,如果您想从WebAssembly前端利用Rust,则您的代码只需与计划使用的Dapr端点一起使用。

达普构建块实现了常见的微服务设计模式,重点放在诸如管理状态或处理和管理事件之类的任务上。现在,您可以使用Dapr来管理那些功能,而不必为每个新应用程序编写新的实现,从而使您可以专注于代码逻辑。 Dapr提供了用于管理服务端点以及通过其Redis缓存管理状态的工具。它还将为您管理路由,将消息发送到适当的应用程序端点。您所需要的只是设置Dapr呼叫的端点名称。

使用IDE和应用程序框架

您可以选择代码使用的框架,因此,如果要构建要在node.js实例上运行的JavaScript应用程序,则可以与Express一起使用,或者可以围绕ASP.NET MVC构建.NET应用程序。最重要的是,Dapr提供了一个微服务平台,可以与您当前的工具集和您选择的开发流程愉快地共存。

IntelliJ和IDE的IDE扩展 Visual Studio程式码 帮助加快Dapr应用程序的开发。它们都是预览版,因此您不应该期望它们支持所有构件。它们确实与本地Dapr安装进行了集成,以显示当前运行的Dapr端点进行调试和测试,并提供支架以围绕Dapr构建块快速构建自己的代码。您甚至可以使用Visual Studio Code的远程处理功能从您的桌面环境中使用Dapr Docker容器。

云原生的微服务在任何现代应用程序堆栈中都变得越来越重要,因此选择正确的开发环境和工具至关重要。随着Dapr接近其1.0版本,它开始履行其最初的诺言,它提供了一组构建块和支持工具,可帮助您以易于部署和可重复的方式实现关键的微服务设计模式。对通用语言的支持和与框架无关的方法确保了花几天时间评估Dapr候选发布者是值得的。

版权© 2021 IDG通讯,Inc.