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

Dapr 的体系结构对于开发人员来说非常迷人,尤其是那些熟悉 20 世纪 90 年代 COM 或 EJB 的开发人员。与 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 年代的数据驱动的客户端/服务器应用程序的操作,用于 现代云原生应用程序所需的最常见服务。

相关文章:

  • Dapr 已在塔架就位 将发射新一代微服务

  • 牛年 dotnet云原生技术趋势

Dapr是如何简化微服务的开发和部署相关推荐

  1. Dapr微服务应用开发系列5:发布订阅构建块

    题记:这篇介绍发布订阅构建块,这是对事件驱动架构设计的一种实现落地. 注:对于"Building Blocks"这个词组的翻译,我之前使用了"构件块",现在和官 ...

  2. 微软开源 Tye 项目,可简化微服务开发

    微软近期开源了一款开发人员工具 Tye,能够用于简化微服务以及分布式应用程序的开发.测试以及部署过程.项目地址:https://github.com/dotnet/tye. 该项目负责人 Amiee  ...

  3. Dapr微服务应用开发系列4:状态管理构件块

    Dapr微服务应用开发系列0:概述 Dapr微服务应用开发系列1:环境配置 Dapr微服务应用开发系列2:Hello World与SDK初接触 Dapr微服务应用开发系列3:服务调用构件块 题记:这篇 ...

  4. Dapr微服务应用开发系列2:Hello World与SDK初接触

    题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...

  5. Dapr微服务应用开发系列0:概述

    题记:Dapr是什么,Dapr包含什么,为什么要用Dapr. Dapr是什么 Dapr(Distributed Application Runtime),是微软Azure内部创新孵化团队的一个开源项目 ...

  6. Service Mesh服务网格:8种方式简化微服务部署

    Robert Whiteley translate by Grace 基于微服务的架构是未来的趋势,但是实现这种架构会面临许多困难.现代应用架构远比过去的架构复杂,因此实现微服务架构将会带来了一系列特 ...

  7. gradle 指定springcloud 版本_SpringCloud微服务架构开发实战:实现服务注册与发现

    实现服务的注册与发现 在前面分别用Eureka Server和Eureka Client来搭建了一台注册服务器,以及多个Eureka Client客户端.Eureka Client在启动后,就会将自己 ...

  8. Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建

    为什么80%的码农都做不了架构师?>>>    一.关于框架更名的一点说明 最近在做年终总结.明年规划.还有几个项目需要了结.出解决方案,事情还比较多,死了不少脑细胞,距离上一篇文章 ...

  9. 微服务架构开发实战:如何实现微服务的自动扩展?

    微服务架构开发实战:如何实现微服务的自动扩展? 程序员高级码农II 2020-09-25 07:25:00 如何实现微服务的自动扩展 前面讲了一些关于自动扩展的理论知识,但如何实现自动扩展,并不是三言 ...

最新文章

  1. MVCC(Multi-version Cocurrent Control)
  2. JAVA web 会话技术CookieSession
  3. iOS开发Swift篇—(七)函数(1)
  4. 【数据结构与算法】【算法思想】动态规划
  5. Android 系统(82)---ART 和 Dalvik
  6. 最聪明的如何成为优秀的——微软高管指点成材路
  7. 一个极简版本的 VUE SSR demo
  8. win10 电脑触摸板不能滑动_用好笔记本的触摸板(win10小技巧)
  9. Springboot之添加本地模块依赖
  10. 李宏毅自然语言处理——BERT和它的家族
  11. html文本框(input)不保存缓存记录
  12. 测试视频软件支持的格式,支持82种视频格式!电视平台最强的本地播放器!
  13. matlab模拟静电场边值,静电场边值问题有限差分法的仿真分析
  14. 超融合基础架构(HCI)之深信服信服云aCloud方案的虚拟存储(VS,Virtual Storage)技术概览
  15. Mathematica图片裁切
  16. Paper翻译:《A Novel Convolutional Neural Network Based Model for Recognition and Classification of App》
  17. OSChina 周日乱弹 ——程序员在家的地位
  18. 20.EC实战 笔记本电脑的休眠唤醒是如何实现的
  19. 【BI学习心得15-数据分析思维】
  20. 怎么用计算机实现复数开平方,用你手中的计算器进行复数运算

热门文章

  1. python list元素合并_python list 合并连接字符串的方法
  2. office 2007图标_微软Office 365桌面版新图标开始测试
  3. MybatisPlus 通用枚举无法正确取值
  4. linux 去掉 ^M 的方法
  5. BZOJ4314 倍数?倍数!
  6. 前端JavaScript规范
  7. 关于使用indexedDB的本地存储(2)
  8. AsyncHttpClient的连接池使用逻辑
  9. sql里如何for循环
  10. 【HDU】2795 Billboard