我们快速看一遍官方文档:https://docs.dapr.io/concepts/service-mesh/#how-dapr-and-service-meshes-compare ,看看 Dapr 的开发团队是如何看待 Dapr 和 Service Mesh 在产品概念上的差异的,从1.5版本之后Dapr 功能的添加正在朝着标准化/增强重试/超时/断路器的实现的方向发展。因此,与 Service Mesh 产品的差异似乎在缩小。
查看Dapr的官方文档中的 FAQ:Dapr 与 Istio、Linkerd 或 OSM 等服务网格相比如何,明确指出网络领域的问题,例如服务网格产品解决的问题,不是主要目标。 Dapr 的目标是为 “开发人员”构建微服务时创建构建块 。
Dapr 不是服务网格。服务网格专注于细粒度的网络控制, 而 Dapr 则专注于帮助开发人员构建分布式应用程序。Dapr 和服务网格都使用 sidecar 模式并与应用程序一起运行。它们确实有一些重叠的功能,但也提供了独特的好处。有关更多信息,请阅读 Dapr 和服务网格概念页面:https://docs.dapr.io/concepts/service-mesh/
Dapr 的“分布式构建块”概念与服务网格处理的问题领域有什么特别不同? 接下来我就详细说说。
理解“ Service Mesh 关注基础设施领域/网络,而 Dapr 强调开发人员体验” 这一点很重要。
虽然 Dapr 和服务网格确实提供了一些重叠的功能,但 Dapr 不是服务网格,服务网格被定义为网络服务网格。与专注于网络问题的服务网格不同,Dapr 专注于提供构建块,使开发人员更容易将应用程序构建为微服务。Dapr 以开发人员为中心,而服务网格则以基础设施为中心。
在大多数情况下,开发人员不需要知道他们正在构建的应用程序将部署在包含服务网格的环境中,因为服务网格会拦截网络流量。服务网格主要由系统操作员管理和部署,而 Dapr 构建块 API 旨在供开发人员在其代码中明确使用。
综上所述,我们可以将这两个产品的特性整理如下。
Dapr 和 Open Service Mesh 功能之间的具体区别官方文档中查看。您可以看到流量路由和流量拆分功能超出了 Dapr 的范围,它属于Open Servvice Mesh的范围。
如何正确使用Dapr 和 服务网格
接下来出现的问题是 “我应该以什么标准正确使用 Dapr 和 Open Service Mesh ?”,具体看这个文档内容: FAQ:何时选择使用 Dapr、服务网格或者两者兼存。
我希望上面这些内容对你有帮助,这些内容都来自官方文档中关于Dapr 和服务网格的内容。 Dapr 的真正价值在于抽象了基础设施层,使源代码和基础设施之间的关系松耦合/可插拔,使得当前的微服务的开发初期和后期开发,在面对基础设施的的可变方面更有弹性。