Dapr使微服务变得轻松

曾新
2023-12-01

如果您想充分利用云原生应用程序,则需要以不同的方式思考如何构建代码。 扩展取决于无状态微服务,该服务使用API​​进行服务间通信。 Kubernetes等技术可通过监视资源或使用KEDA(基于Kubernetes的事件驱动的自动缩放)来触发基于事件的缩放来帮助管理微服务扩展,而基于HTTP的技术(例如gRPC)则是将API视为方法和函数调用的基础。

构建分布式应用程序似乎常常像在重新发明轮子,构建新工具一次又一次地做同样的事情。 终于开始改变了。 作为一个行业,我们正在为分布式应用程序提供一种模式语言,以及利用这些模式和实践的第一代工具。 Dapr分布式应用程序运行时 )与OAM(开放应用程序模型)和Rudr同时发布 ,是一种用于构建和运行基于微服务的分布式系统的工具。

[了解什么是微服务 •然后学习如何构建微服务应用程序 •最后,学习如何为您的微服务选择数据库 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

介绍Dapr

Dapr 可在GitHub上使用并开放给社区参与,它是一个与语言无关且与供应商无关的框架, 专注于构建事件驱动的微服务 ,因此您可以将其与您选择的语言一起使用,甚至可以混合使用多种语言。 它作为辅助工具运行,因此您无需在应用程序中包含任何Dapr库或运行时。 您只需要一个API。

这种方法简化了Dapr的安装,因为从逻辑上讲,它是与应用程序分离的过程。 如果您正在使用Kubernetes,则只需在单个pod中将Dapr容器与应用程序容器一起安装即可。 您可以从其自己的CLI部署它,选择部署类型。 当前,您仅限于本地和Kubernetes部署,但是开发团队的路线图包括其他分布式应用程序框架,例如Azure的Service Fabric。

安装脚本适用于Windows,Mac OS和Linux。 安装引导程序工具后,请使用Dapr CLI在开发计算机上初始化本地副本,下载框架二进制文件并运行服务。

实施设计模式构建块

Dapr的第一个版本支持六个关键的微服务设计模式, Dapr将其实现为“构建块”。 这些API与您的代码一起使用,以提供现代云应用程序所需的核心服务。 除了编写自定义状态管理或服务调用代码外,您所需要做的就是使用其对所需功能的实现来调用Dapr。 它为您提供了标准的API,因此无论Dapr的托管方式以及使用哪种应用程序或服务来交付关键微服务行为,您都可以通过一种方法来调用特定的函数。

您的微服务本来应该是无状态的,但是您的应用程序将需要管理其状态。 通常,这需要选择一个存储平台,通常是某种形式的键/值NoSQL数据库,然后将状态信息写入存储,以便在发生服务故障时可以恢复用户事务。 使用Dapr,一个API可以管理整个应用程序状态,可以将其连接到您选择的受支持组件。

如果您更喜欢使用Redis等跨平台存储,请使用其Redis插件配置Dapr。 或者,如果仅打算使用Azure服务,则可以选择Cosmos DB插件。 开发人员无需了解所使用服务的任何信息,只需了解Dapr API。 随着添加更多组件,您可以使用包含AWS DynamoDB之类的工具的全面路线图,将它们切换为运行云的更合适工具。

许多云应用程序采用事件驱动的架构,采用松散耦合的方法,其中处理来自应用程序内部和外部的消息,从而生成响应。 Dapr支持三种不同的方法来驱动事件驱动的应用程序:与Azure EventGrid使用的发布和订阅系统一样; 一种将事件绑定到特定资源的方法,例如Azure的IoT中心或Apache Kafka; 虚拟角色模型类似于Microsoft的Service Fabric和Microsoft Research的Orleans。

最后,Dapr添加了用于分布式跟踪的工具,可帮助您调试和管理正在运行的分布式应用程序。 它使用了熟悉的W3C跟踪API,因此您可以将Dapr应用程序与选择的监视工具(包括性能分析系统)挂钩。 分布式跟踪是一个重要的工具,因为在微服务架构中,复合应用程序可以共享服务,因此您可以将跟踪绑定到应用程序,从而可以查看哪些应用程序影响了哪些服务。

云应用程序变得可移植

Dapr的便携式应用程序模型有很多优点 。 您可以选择合适的微服务架构,并使用Dapr将其与托管服务方法调用或通过发布和订阅消息传递连接在一起。 如果您需要从Azure Service Fabric迁移到Kubernetes,您所需要做的就是设置一组新的组件,然后重新部署您的应用程序。 开发人员不再需要成为特定应用程序框架中的主题专家; 相反,您使用与OAM类似的模型(开发人员,应用程序操作和云基础架构操作之间进行了分离)来建立一整套跨云框架操作技能。

拥有标准的API是关键,Dapr提供HTTP或gRPC API 。 您可能会使用HTTP传递事件,并使用gRPC调用服务方法。 生成的代码清晰易读,具有Dapr API的逻辑结构。 要将事件发布到订阅服务,只需调用相应的Dapr端点,它将把消息传递给所有订户。

除了HTTP或gRPC API外,还有适用于大多数常见开发人员平台的特定语言的SDK ,包括JavaScript,.Net,Python和Go。 将Dapr与您最可能使用的语言相集成可以帮助您在其他开发框架中利用它,从而使您可以选择和混合代码中使用的服务和功能。 例如,使用ASP.Net Core中的.Net SDK,Dapr可以将前端代码和服务与Dapr托管的事件和消息集成在一起。

迁移到公共云,尤其是迁移到Azure之类的服务,并不是提升和转移现有应用程序的问题。 如果您想获得云的好处,特别是云的可扩展性和可靠性,那么您需要开发云原生的应用程序。 这意味着使用事件驱动的微服务和事件驱动的可伸缩性。 Dapr和类似的工具旨在降低与开发微服务以及在流行的分布式计算平台上使用微服务相关的复杂性。 如果您还没有开始研究它们,那么您应该尽快开始-在竞争对手取得领先之前。

From: https://www.infoworld.com/article/3449237/microservices-made-easy-with-dapr.html

 类似资料: