在计划构建分布式应用程序时,开发人员通常会发现超越应用程序的业务逻辑。例如,如何确保多个微服务彼此通信,与外部系统集成,如果微服务是有状态,如何以弹性方式保存其状态,允许它们从潜在故障中恢复。

当然,有多种模式解决这些问题以及可帮助您实现它们的开源或云提供商的特定技术。内部服务通信方法的示例包括通过HTTP或通过HTTP的服务到服务调用grpc.发布/订阅使用诸如Kafka或RabbitMQ等消息经纪人。状态商店是保持应用解耦的应用状态的好方法,常见的内容包括内存存储,如redis和mongodb等数据库。添加到秘密商店中的确保连接字符串和证书,例如Hashicorp拱顶和云提供商服务的细节,提供Azure,AWS和GCP的类似解决方案,并且很清楚甚至在您到达之前要做很多事情亚博直播平台您尝试构建的特定逻辑。

On top of having to choose, ramp up, and integrate various SDKs into the code, you also need to keep in mind that your application may need to be deployed to different environments (e.g., local dev box, on-prem, multi-cloud), so you may need to replace some of these solutions on deployment, depending on the hosting infrastructure.

最后,也可以说是最重要的,您和您的开发团队需要安全地构建这些分布式应用程序(例如,加密通信,实现访问控制),并对它们进行检测,以便它们可以被观察到。在这里,特定的云基础设施细节增加了复杂性。

什么是dapr?

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

与之释放DAPR v1.0dpr现在已经可以用于生产,一些大公司和小公司已经在使用它来构建业务关键型应用程序。你可以自己试试这个入门指南

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

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

DAPR分布式应用程序运行时的屏幕截图

DAPR可观察性如何工作?

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

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

配置DAPR进行跟踪

DAPR.配置使用YAML配置文件定义,该配置文件设置跟踪采样率(dpr使用概率抽样)追踪集合的端点URL:

apiersion:dapr.io/v1alpha1种类:配置元数据:name:myconfig命名空间:默认规格:跟踪:samplingrate:“1”zipkin:endpointaddress:“http:// ...”

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

使用Dapr和New Relic One

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

您所需要做的就是将配置文件中的端点设置为指向新文物溯源API:

apiersion:dapr.io/v1alpha1种类:配置元数据:名称:appconfig命名空间:默认规格:跟踪:samplingrate:“1”zipkin:endpointaddress:“https://trace-api.newrelic.com/trace/v1?api-key = &Data-Format = Zipkin&Data-Format-Version = 2“

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

分布式跟踪截图

下一步

注册New Relic的免费等级和探索如何配置它以使用DAPR

ori zohar是Microsoft Azure孵化团队的高级计划经理,目前正在研究分布式应用程序运行时,DAPR。ORI在各种角色建立嵌入式和云解决方案的多年经验,包括工程,传福音和产品营销。亚博直播平台查看帖子

对新遗物博客的写作有兴趣吗?亚搏体育登入网给我们发一份建议书!