3年前 (2021-07-11)  Serverless |   抢沙发  527 
文章评分 0 次,平均分 0.0

我们生活在这样一个世界,每隔一天我们就会看到一项新的技术创新。对我们大多数人来说,仅仅是凡人,很难很快弄清楚这项技术是否值得我们花时间。理解新的技术创新是我当前角色的核心方面之一,因此,通过承受写这一系列文章的痛苦,我也会帮助自己。

在这篇文章中,Dapr代表分布式应用程序运行时。

分布式应用程序运行时意味着什么?

现在我们大多数人都在开发分布式系统。如果您正在构建一个使用微服务体系结构的应用程序,那么您正在构建一个分布式系统。

分布式系统是一个自治计算元素的集合,在用户看来,它是一个单一的连贯系统。

分布式应用程序运行时为您提供了可用于构建分布式系统的工具。这些设施包括:

  • 状态管理。大多数应用程序需要与数据存储对话来存储状态。常见的例子有PostgreSQL、Redis等。
  • 用于不同组件和服务之间通信的发布/订阅。
  • 服务对服务通信。这还包括重试、断路。
  • 可观察性。使系统具有可见性。
  • 秘密管理。用于存储密码和密钥。
  • 许多其他

需要注意的一点是,这些都是应用程序级别的问题。分布式应用程序运行时本身并不关心基础设施或网络级别的问题。

什么是Dapr

Dapr是微软的一个开源项目:https://github.com/dapr。该网站将其描述为一个事件驱动的、可移植的运行时,使得构建无状态和有状态的基于微服务的应用程序变得容易。

Dapr是分布式应用程序运行时的一个实现。它的主要目标是通过将构建分布式应用程序的所有最佳实践编成一个运行时来简化构建分布式应用程序。

Microsoft的分布式应用程序运行时(Dapr)

以上是我从Dapr文档中获取的图像。这张照片清楚地说明了Dapr的适用范围。它位于基础设施层之上,提供服务到服务调用、状态管理、发布和订阅、参与者、秘密等功能。最好的部分是它是可扩展的,因此您可以编写自己的插件。当Dapr在2019年启动时,它只支持不到5个数据库,而今天,它支持超过15个数据库。您可以参考Dapr文档来查看支持的数据库列表。

它和Kubernetes有什么不同?

从上图可以清楚地看出,Dapr是比Kubernetes更高的抽象。Kubernetes没有任何应用的概念。

您可以使用Dapr作为sidecar容器,应用程序容器在Kubernetes中运行。您也可以将Dapr用作传统部署的流程。

Dapr能在容器外运行吗?

我在上一个问题中回答了这个问题,但让我重申一下。Dapr既可以在自托管的more中运行,也可以作为Kubernetes pod中的sidecar进程运行。

Dapr的默认安装需要Docker容器。当您使用dapr init安装dapr时,它运行的服务很少,比如Redis和daprd。这些是运行dapr所必需的。因此,为了使其易于运行,dapr使用Docker容器。

但是您可以通过运行以下命令在自托管模式下运行dapr。

dapr init --slim

以上不需要Docker。

Dapr不是service mesh吗?

我很高兴你这么问。我也很难理解两者之间的区别。dapr文件写道:

Dapr可以与任何服务网(如Istio和linker)一起使用。服务网格是一个专用的网络基础设施层,旨在将服务彼此连接起来并提供有见地的遥测。服务网格不会向应用程序引入新功能。

Dapr为应用程序的运行时引入了新功能。服务网格和Dapr都作为应用程序的侧车服务运行,一个提供网络功能,另一个提供分布式应用程序功能。

Istio不是一个编程模型,也不关注应用程序级特性,如状态管理、发布订阅、绑定等,这正是Dapr的用武之地。

所以,两者有一些相似之处。但是,正如dapr文档所建议的,我们也可以一起使用它们。Dapr将不关注网络问题,如流量路由、A/B测试等。这是像Istio这样的服务网格将提供价值的地方。Dapr将更加以应用程序为中心。

原文地址:https://shekhargulati.com/2020/08/25/cut-the-clutter-1-distributed-application-runtime-dapr/

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2103.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册