概述

我们快速看一遍官方文档:https://docs.dapr.io/concepts/service-mesh/#how-dapr-and-service-meshes-compare ,看看 Dapr 的开发团队是如何看待 Dapr 和 Service Mesh 在产品概念上的差异的,从1.5版本之后Dapr 功能的添加正在朝着标准化/增强重试/超时/断路器的实现的方向发展。因此,与 Service Mesh 产品的差异似乎在缩小。

  • Dapr 是一种旨在“促进微服务本身的开发”的产品,而不是 Service Mesh。
    • 但是,Dapr 有一些类似于服务网格的特性,例如分布式跟踪。
  • 由于上述原因,有些用例无法单独由 Dapr 实现。具体来说,如果你想要A/B测试等的Traffic Splitting功能,你需要配合Service Mesh产品使用。
当我们在Azure 的 AKS 上构建微服务的解决方案时,我们经常会看到关键字 Dapr 和 Open Service Mesh(Open Service Mesh是微软开源的Service Mesh产品) 。两者都采用了边车模式, 并且两者似乎正试图接近技术上相似的领域。 那么Dapr 和 Open Service Mesh 的产品理念有何不同?
Dapr 不是Service Mesh 产品

查看Dapr的官方文档中的 FAQ:Dapr 与 Istio、Linkerd 或 OSM 等服务网格相比如何,明确指出网络领域的问题,例如服务网格产品解决的问题,不是主要目标。 Dapr 的目标是为 “开发人员”构建微服务时创建构建块

Dapr 不是服务网格。服务网格专注于细粒度的网络控制, 而 Dapr 则专注于帮助开发人员构建分布式应用程序。Dapr 和服务网格都使用 sidecar 模式并与应用程序一起运行。它们确实有一些重叠的功能,但也提供了独特的好处。有关更多信息,请阅读 Dapr 和服务网格概念页面:https://docs.dapr.io/concepts/service-mesh/

Dapr 的“分布式构建块”概念与服务网格处理的问题领域有什么特别不同? 接下来我就详细说说。

Dapr 文档 : Dapr 和服务网格如何比较

理解“ Service Mesh 关注基础设施领域/网络,而 Dapr 强调开发人员体验” 这一点很重要。

  • Service Mesh 感兴趣的主要是基础设施工程,尤其是网络层的通信管理/操作。
  • Dapr 目标是在解决更多的软件工程问题。因此,Dapr 的 API 也被设计成可以直接从 应用代码中操作,而无需 系统管理员干预。

虽然 Dapr 和服务网格确实提供了一些重叠的功能,但 Dapr 不是服务网格,服务网格被定义为网络服务网格。与专注于网络问题的服务网格不同,Dapr 专注于提供构建块,使开发人员更容易将应用程序构建为微服务。Dapr 以开发人员为中心,而服务网格则以基础设施为中心。
在大多数情况下,开发人员不需要知道他们正在构建的应用程序将部署在包含服务网格的环境中,因为服务网格会拦截网络流量。服务网格主要由系统操作员管理和部署,而 Dapr 构建块 API 旨在供开发人员在其代码中明确使用。

Dapr 文档:  Dapr 和 服务网格如何比较

Dapr 和Open Service Mesh 具体功能差异

综上所述,我们可以将这两个产品的特性整理如下。

  • Open Service Mesh是一个有Service Mesh 形态的产品。因此,主要兴趣是从基础设施的角度来运营网络。
  • Dapr 旨在使微服务对开发人员来说尽可能简单,并且只涵盖从软件开发角度实现它所需的功能。

Dapr 和 Open Service Mesh 功能之间的具体区别官方文档中查看。您可以看到流量路由和流量拆分功能超出了 Dapr 的范围,它属于Open Servvice Mesh的范围。

如何正确使用Dapr 和 服务网格

接下来出现的问题是 “我应该以什么标准正确使用 Dapr 和 Open Service Mesh ?”,具体看这个文档内容: FAQ:何时选择使用 Dapr、服务网格或者两者兼存

  • 如果您想使用 Dapr 提供的构建块开发微服务,我们建议仅使用 Dapr。Dapr 也支持分布式跟踪。
  • 对于“我要加密微服务之间的通信”的用例, Dapr 只可以处理所有微服务都有 Dapr sidecar 的情况。但是,如果您想加密没有 Dapr sidecar 的微服务或其他组件,您还需要使用 Service Mesh 产品。
  • 此外,如果你想为 A/B 测试等进行流量拆分,你需要与 Service Mesh 产品集成。
    • 例如,如果您希望使用 Dapr 的一个或多个构建块,例如状态管理或发布/订阅,并且您正在考虑仅将服务网格用于网络安全或者可观察性,您可能会发现 Dapr 非常适合并不需要服务网格。
    • 通常,您会使用带有 Dapr 的服务网格,即必须为所有应用程序加密网络上的流量。例如,您可能在应用程序中仅使用 Dapr 的一部分,而在您的应用程序中未使用 Dapr 的其他服务和进程也需要对其流量进行加密。在这种情况下,服务网格是更好的选择,很可能您应该在服务网格上使用 mTLS 和分布式跟踪,并在 Dapr 上禁用它。
    • 如果您需要 A/B 测试场景的流量拆分,您将从使用服务网格中受益,因为 Dapr 不提供这些功能。
      常见问题解答:何时选择使用 Dapr、服务网格或两者兼存
总结

我希望上面这些内容对你有帮助,这些内容都来自官方文档中关于Dapr 和服务网格的内容。 Dapr 的真正价值在于抽象了基础设施层,使源代码和基础设施之间的关系松耦合/可插拔,使得当前的微服务的开发初期和后期开发,在面对基础设施的的可变方面更有弹性。

Dapr 不是服务网格,只是我长的和他很像的更多相关文章

  1. 初识 Istio - 服务网格管理工具

    What is a service mesh(服务网格)? 微服务在国内流行已经多年了,大多数公司选择了基于容器化技术( Docker )以及容器编排管理平台 ( Kubernetes )落地微服务 ...

  2. 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格

    多运行时是一个非常新的概念.在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华.那到 ...

  3. 通过Dapr实现一个简单的基于.net的微服务电商系统(十三)——istio+dapr构建多运行时服务网格之生产环境部署

    之前所有的演示都是在docker for windows上进行部署的,没有真正模拟生产环境,今天我们模拟真实环境在公有云上用linux操作如何实现istio+dapr+电商demo的部署. 目录:一. ...

  4. Service Mesh服务网格:是什么和为什么

    Service Mesh服务网格:是什么和为什么 - 好雨云帮 CSDN 博客 - CSDN博客 https://blog.csdn.net/zyqduron/article/details/8043 ...

  5. Service Mesh服务网格新生代--Istio(转)

    万字解读:Service Mesh服务网格新生代--Istio  官网地址:https://preliminary.istio.io/zh/docs/concepts/security/ Servic ...

  6. 【译文连载】 理解Istio服务网格(第七章 安全)

    全书目录 第一章 概述 第二章 安装 第三章 流控 第四章 服务弹性 第五章 混沌测试 第六章 可观测性 本文目录 第7章 安全 7.1 身份认证 7.1.1 Kubernetes上的Istio的身份 ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务

    我个人认为Actor应该是Dapr里比较重头的部分也是Dapr一直在讲的所谓"stateful applications"真正具体的一个实现(个人认为),上一章讲到有状态服务可能很 ...

  8. 精彩分享 | 欢乐游戏 Istio 云原生服务网格三年实践思考

    作者 吴连火,腾讯游戏专家开发工程师,负责欢乐游戏大规模分布式服务器架构.有十余年微服务架构经验,擅长分布式系统领域,有丰富的高性能高可用实践经验,目前正带领团队完成云原生技术栈的全面转型. 导语 欢 ...

  9. 揭开服务网格~Istio Service Mesh神秘的面纱

    目录 一.写在前面 二.微服务与K8S 三.服务网格与K8S 四.常见的产品 五.Istio架构 六.Istio的核心资源介绍 6.1.VirtualService 6.2.Destination R ...

随机推荐

  1. 什么是 bean 装配?

    装配,或 bean 装配是指在 Spring 容器中把 bean 组装到一起,前提是容器需要 知道 bean 的依赖关系,如何通过依赖注入来把它们装配到一起.

  2. 学习Apache(三)

    对某个目录开启验证登录 <Directory /var/www/html/admin > AllowOverride All Order allow,deny Allow from all ...

  3. 云计算:Ubuntu下Vue+Springboot前后端分离项目部署(多节点)

    一.机器准备 首先准备三台机器: 我是一台WINDOWS系统主机,在WINDOWS里的 VMware 中安装两台Ubuntu系统虚拟机 如果你的虚拟机只有 CentOS,可以参考这篇文章:https: ...

  4. CommonCollection1反序列化学系

    CommonsCollection1 1.前置知识 1.1.反射基础知识 1.1.1. 对象与类的基础知识 类(class),对象(object) 对象是类的实例化,中华田园犬(object)是狗(c ...

  5. Leetcode刷题之链表增加头结点的前缀节点

    链表之增加头结点的前缀节点 在许多链表题中往往需要在题目给的头结点之前增加一个前缀节点 通常在删除链表和头结点需要交换时需要用到这一操作 因为增加这个节点就避免了对删除头结点这种特殊情况的特殊处理 而 ...

  6. 排序 | 冒泡排序的优化与qsort快速排序

    冒泡排序 冒泡排序 Bubble_Sort,是极为简单的一种排序算法.虽然效率差一点,但好在具有结构简单,容易理解,易于操作等优点.冒泡排序就是把小的元素往前调或者把大的元素往后调.在相邻的两个元素间 ...

  7. MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)

    CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...

  8. python-正整数的因子展开式

    [题目描述]编写程序,输出一个给定正整数x(x>1)的质因子展开式. [输入格式]请在一行中输入整数x的值. [输出格式]对每一组输入的x,按以下格式输出x的质因子展开式(假如x的质因子分别为a ...

  9. C++:Abstract class : invalid abstract return type for member function ‘virtual...’

    #include <iostream> #include <cmath> #include <sstream> using namespace std; class ...

  10. PAT B1086 就不告诉你

    题目描述: 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三."本题就要求你,对任何一对给定的正整数,倒着输出它们的 ...