在计划构建分布式应用程序时,开发人员经常发现除了应用程序的业务逻辑之外还有很多需要考虑的问题。例如,如何确保多个微服务彼此通信、与外部系统集成,以及如果微服务是有状态的,如何以一种有弹性的方式保存它们的状态,使它们能够从潜在的故障中恢复。

当然,有多种模式可以解决这些问题,而且开源或特定于云提供商的技术可以帮助您实现它们。服务内通信方法的示例包括通过HTTP或gRPC发布/订阅使用消息代理,如Kafka或RabbitMQ。状态存储是保持应用状态解耦的好方法,常见的状态存储包括Redis这样的内存存储和MongoDB这样的数据库。再加上获取连接字符串和证书在秘密商店如HashiCorp拱顶和云提供商提供类似的服务解决方案的细节在Azure, AWS,和质量,很明显,有很多甚至在你到达的具体逻辑你试图建立。188bet亚洲体育

顶部的选择、提高和集成不同的sdk代码,你还需要记住,您的应用程序可能需要部署到不同的环境(例如,当地dev盒子,on-prem,多重云),所以你可能需要更换一些这些解决方案的部署,根据主机的基础设施。188bet亚洲体育

最后也是最重要的一点是,您和您的开发团队需要安全地构建这些分布式应用程序(例如,加密通信、实现访问控制),并将它们仪表化,以便能够观察到它们。这里,特定的云基础设施细节增加了复杂性。

Dapr是什么?

分布式应用程序运行时(Dapr)开源项目旨在帮助开发人员解决构建分布式应用程序所带来的挑战。Dapr定义了一组映射到特定功能的构建块,比如服务到服务方法调用、状态管理、秘密存储和发布/订阅消息传递。这些构建块提供了抽象特定实现(称为组件)的api,使您不必向代码中添加sdk和/或库,甚至不必知道实现该功能的技术细节。设置双轮马车的模式并且作为一个独立的进程运行,所以它与语言无关,允许你的应用程序通过HTTP或gRPC进行所有API调用(尽管有特定的语言sdk)。

Dapr v1.0的发布现在,Dapr已经可以投入生产了,一些大大小小的公司已经在使用它来构建业务关键型的应用程序。你可以自己用这个试试Dapr入门指南

在分布式应用程序中使用Dapr的一些好处包括:

  • 简单代码:您不再需要集成各种sdk或以自定义的方式直接与组件交互(创建客户端、管理连接等),也不需要考虑如果相同的代码部署在其他地方,则使用不同的实现的情况。
  • 语言不可知:Dapr API使用HTTP / gRPC,所以用任何语言编写的应用程序都可以使用它而不存在依赖关系。如果你想使用。net, Java, Go, Python, Javascript等等,Dapr确实提供了sdk。
  • 高便携性:代码不依赖底层托管技术。当您切换云提供商或迁移到可能使用不同状态存储、秘密存储、消息代理或绑定的环境时,您不需要更改代码,只需要更改配置Dapr的组件文件。
  • 安全:Dapr提供侧车之间的安全通信通过mtl身份验证还包括名称空间和作用域,允许对秘密、服务调用和发布/订阅主题进行访问控制。
  • 可观测性:可以将Dapr sidecar配置为发送跟踪数据,因此只需使用Dapr,您就已经在检测应用程序了。

Dapr分布式应用程序运行时的截图

Dapr可观测性是如何工作的?

许多Dapr用户发现它提供的可观察性功能是一个真正的游戏规则改变者。将Dapr API用于所有的服务到服务调用和发布/订阅消息传递,您将获得自动感知应用程序的检测。Dapr sidecar负责基于配置文件进行跟踪,因此插装不需要任何额外代码。因为Dapr符合标准,例如W3C跟踪上下文OpenTelemetry并使用Zipkin协议发出跟踪,它可以与支持它的任何工具集成。或者,您可以使用OpenTelemetry Collector将其与任何其他监控工具集成。

与它的W3C跟踪上下文兼容性,Dapr为您提供了跟踪上下文管理的灵活性;您可以让Dapr自动生成和传播跟踪上下文,或者自己生成或传播。这允许您使用在应用程序外部生成的跟踪上下文,或在其他自定义流中传播它。

配置dpr用于跟踪

Dapr配置是使用YAML配置文件定义的,该配置文件设置跟踪采样率(Dapr使用概率抽样)和追踪收集的端点URL:

apiVersion: dapr。配置元数据:name: myconfig命名空间:default spec: tracing: samplingRate: "1" zipkin: endpointAddress: "http://..."

当您部署一个Dapr应用程序时,它将使用上述配置。例如,在Kubernetes部署中,Dapr注释dapr.io /配置定义要与应用程序关联的配置(了解更多有关将Dapr应用程序部署到Kubernetes)。

在New Relic One上使用Dapr

因为New Relic One支持Zipkin,所以您可以使用它作为在Dapr应用程序中进行跟踪的端点,而不需要在代码中添加任何内容。这使得使用New Relic One作为跟踪的后端非常容易,并充分利用跟踪可视化、洞察力等。

所需要做的就是将配置文件中的端点设置为指向新的遗迹追踪API:

apiVersion: dapr。io/v1alpha1 kind:配置元数据:名称:appconfig命名空间:默认规格:跟踪:samplingRate: "1" zipkin: endpointAddress: "https://trace-api.newrelic.com/trace/v1?Api-Key=< r - insights - insert -api - key >&Data-Format=zipkin&Data-Format- version =2"

注意,这里需要包含API键。此外,URL包含一个参数,用于定义Zipkin的数据格式(因为这是Dapr将要使用的协议)。

分布式跟踪截图

下一个步骤

注册New Relic的免费层和探索如何配置它与Dapr一起工作

Ori Zohar是微软Azure孵化团队的高级程序经理,目前致力于分布式应用运行时(Distributed Application Runtime, Dapr)。Ori在构建嵌入式和云解决方案方面有多年的经验,担任过工程、布道和产品营销等多种角色。188bet亚洲体育查看贴子

有兴趣为New Relic博客写作吗?188博彩体育网址给我们一个推介!