Dapr是如何来简化微服务的开发和部署——大揭秘

举报
小云悠悠zZ 发表于 2023/01/30 16:48:44 2023/01/30
【摘要】 基于微服务设计模式的现代应用程序面临着一系列挑战。微服务需要有一个强大的服务发现机制来实现动态连接。它们需要松散耦合,实现自主性和独立缩放。微服务需要支持多种语言,其中每个服务都是以最合适的语言、框架和运行时实现的。尽管采用容器和编排引擎(如 Kubernetes)可以应对打包、部署和扩展方面的挑战,但开发过程仍然很复杂。

Dapr是如何来简化微服务的开发和部署的?

基于微服务设计模式的现代应用程序面临着一系列挑战。微服务需要有一个强大的服务发现机制来实现动态连接。它们需要松散耦合,实现自主性和独立缩放。微服务需要支持多种语言,其中每个服务都是以最合适的语言、框架和运行时实现的。尽管采用容器和编排引擎(如 Kubernetes)可以应对打包、部署和扩展方面的挑战,但开发过程仍然很复杂。微软发布的分布式应用程序运行时 (Dapr) 开发现代应用程序的新方法来应对微服务开发的复杂性,这是微服务和云原生应用程序的一个平台和语言无关的运行时。

Dapr 的体系结构与 COM/DCOM 和 EJB 为在 Windows 和 Java 上运行的分布式应用程序提供管道的方式类似,Dapr 基于容器化、云原生、微服务的应用程序所需的繁重工作。Dapr 有三大元素:运行时、 服务构建块和SDK

Dapr 运行时可以安装在任何可以运行 Docker 的计算机上。核心运行时是容器化的,可以部署在运行 Linux、Windows 或 Mac 操作系统的 x86/ARM 处理器上。它也可以安装在多节点 Kubernetes 群集中,也可以安装在资源受限的边缘设备(如树莓派)上。唯一的要求是主机环境 能够运行 Docker。

Dapr 使得使用在同一主机、内部或外部数据服务以及基于 pub/sub 模式的消息传递服务中运行的其他微服务变得非常简单。由于 Dapr 使用Sidecar 模式,因此可以轻松地集成在 Kubernetes 上运行的微服务,以利用构建基块。Dapr 构建基块充当配置为组件的内部/外部服务提供商和内部使用者之间的中间层。由于每个服务的使用者始终与一个众所周知的终结点通信,Dapr 只需将调用重定向到当前配置的组件。

上图是状态构建基块组件封装构建基块 API 的实现。状态构建基块的实现可能包括 Redis、etcd、MongoDB、Amazon DynamoDB 和 Azure CosmosDB。许多组件是可插拔的,因此一个实现可以很容易地换换到另一个实现。

为了使不同语言使用 Dapr 更自然,它还包括用于 Go、Java、JavaScript、.NET 和 Python 的语言特定 SDK。这些 SDK 通过语言封装的 API 而不是调用标准 http/gRPC API 公开 Dapr 构建基块中的功能,例如保存状态、发布事件或创建Actor。这使开发人员能够用自己选择的语言编写无状态和有状态函数和参Actor的组合。

Dapr 将一些经过验证的技术和最佳实践带到微服务开发中。它通过即插即用模型将90 年代的数据驱动的客户端/服务器应用程序的操作,应用于现代云原生应用程序所需的最常见服务。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。