Dapr的云计算设计模式(1)

简介: Dapr实际上是把分布式系统 与微服务架构实践的挑战以及k8s 这三个主题的全方位的设计组合,特别是《Kubernetes设计模式》一书作者Bilgin Ibryam提出的Multi-Runtime Microservices Architecture这一概念。分布式系统 和微服务架构实践的核心问题就是要解决系统复杂性这个难题,降低复杂性的通常做法就是分而治之。

Dapr实际上是把分布式系统与微服务架构实践的挑战以及k8s 这三个主题的全方位的设计组合,特别是《Kubernetes设计模式》一书作者Bilgin Ibryam提出的Multi-Runtime Microservices Architecture这一概念。

分布式系统 和微服务架构实践的核心问题就是要解决系统复杂性这个难题,降低复杂性的通常做法就是分而治之,Dapr的最核心的设计就是Sidecar Pattern + Building Block,如下图:

image.png

Kubernetes 託管的側車架構

Sidecar Pattern: 通过职责分离与容器的隔离特性,降低应用程式的复杂度。
Building Block: 类似于乐高搭积木方法,通过Dapr 提供的核心组件(Component),分离与抽象化系统架构。
Dapr 设计上几乎和Bilgin Ibryam 提出的Multi-Runtime Microservices Architecture 不谋而合,它有几个核心的设计点:

  • Sidecar
  • Building Block & Component
  • Service Invocation
  • Middleware
  • State

基于上面的这些核心设计,Dapr 有了多运行时微服务架构 的特性,以此延伸出底下的重要功能,或者说设计模式:

  • Security
  • Observability: tracing, metrics, logs and health
  • Pub / Sub / Batch Process
  • Actors
  • Secret Management
  • Config Management
  • Sidecar

Sidecar是非常重要的云计算设计模式,下面这张图是 Sidecar 与Microservice 之间搭配后形成多个服务的关系图,这样的结构形成了服务网格的概念, Dapr 通过配置的方式,动态生成Sidecar ,随后伴随着App,一组Dapr Sidecar + App 的组合称为Dapr App

image.png

服务网格

Dapr App 在K8s 里面的形态就是 Pod = (App_Container + Sidecar_Container)

image.png

Kubernetes 托管的 sidecar 体系结构

同样的概念,如果Dapr App跑在k8s外面,也就是自承载模式。 在自承载模式下,微服务和 Dapr sidecar 在没有容器业务流程协调程序(如 Kubernetes)的单独本地进程中运行。

image.png

自承载 sidecar 体系结构

每个Dapr App 都通过Sidecar 沟通,在通信之前,Dapr App 要知道的是对方在哪?所以服务发现和服务调用是Dapr App 要解决的第一个问题,知道彼此在哪了,然后就是通信模式,Dapr 支持HTTP / gRPC 两种通信模式。 Dapr App 之间的默认的通信模式使用gRPC,也就是如果使用HTTP调用Dapr API,内部服务之间的通信也会转成gRPC。

gRPC 是一种新式的高性能框架,它通过 RPC (远程过程调用) 改进。 gRPC 使用 HTTP/2 作为传输协议,该协议通过 HTTP RESTFul 服务提供显著的性能增强,包括:

对通过同一连接发送多个并行请求的多路复用支持 - HTTP 1.1 将处理限制为一次处理一个请求/响应消息。
双向全双工通信,用于同时发送客户端请求和服务器响应。
内置流式处理,支持对大型数据集进行异步流式处理的请求和响应。
若要了解有关详细信息,请查看适用于 Azure 电子书的.NET Cloud-Native中的 gRPC概述。

Dapr Sidecar 有了服务调用、服务发现和通信模式之后,定义出来了一个Building Block (构建块)的概念,使用声明的方式,定义多个组件Component 扩展Sidecar的能力,这些能力正是分布式系统需要面对的问题。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
设计模式 运维 Cloud Native
Dapr的云计算设计模式(4)
Actor 模型 起源于Carl Hewitt 在 1973 年提出的作为并发计算的概念模型,这种形式的计算会同时执行多个计算。 当时并没有高度并行的计算机,但多核 Cpu 和分布式系统的最新进步使得Actor 模型 变得流行。在Actor 模型中,Actor 是一个计算和状态独立的单元。 Actors 完全彼此隔离,它们永远不会共享内存。 Actors 使用消息相互通信。
512 0
Dapr的云计算设计模式(4)
|
设计模式 开发框架 Kubernetes
Dapr的云计算设计模式(3)
这就是我们在微服务里面常说的服务治理,Dapr 作为一个分布式系统,多个Dapr app怎么知道彼此的存在,通过什么方式进行沟通,这就是Dapr的服务治理要解决的问题,Dapr的服务发现机制,按照架构的不同方式(k8s还是自托管)有不同的实现。
434 0
Dapr的云计算设计模式(3)
|
设计模式 中间件 API
Dapr的云计算设计模式(2)
基于这样的设计,Dapr 把最核心的Component 提供了基于分布式系统的 最佳实践 (Best Practice)和 设计模式(Design Patterns)。
281 0
Dapr的云计算设计模式(2)
|
存储 缓存 API
云计算设计模式(一)——缓存预留模式
云计算设计模式(一)——缓存预留模式 根据需求从数据存储缓存加载数据。这种模式可以提高性能,并有助于维持在基础数据存储在高速缓存中保持的数据和数据之间的一致性。
1220 0
|
云计算 设计模式 负载均衡
云计算设计模式(二)——断路器模式
云计算设计模式(二)——断路器模式处理故障连接到远程服务或资源时,可能需要耗费大量的时间。这种模式可以提高应用程序的稳定性和灵活性。 背景和问题 在分布式环境中,如在云,其中,应用程序执行访问远程资源和服务的操作,有可能对这些操作的失败是由于瞬时故障,如慢的网络连接,超时,或者被过度使用的资源或暂时不可用。
1084 0
|
存储 云计算
云计算设计模式(三)——补偿交易模式
云计算设计模式(三)——补偿交易模式 撤消由一系列步骤,它们共同限定了最终一致性操作中,如果一个或多个步骤失败执行的工作。按照最终一致性模型,业务实现复杂的业务流程和工作流的云托管的应用程序中很常见。
1478 0
|
人工智能 运维 安全
中企出海大会|打造全球化云计算一张网,云网络助力中企出海和AI创新
阿里云网络作为全球化战略的重要组成部分,致力于打造具备AI技术服务能力和全球竞争力的云计算网络。通过高质量互联网服务、全球化网络覆盖等措施,支持企业高效出海。过去一年,阿里云持续加大基础设施投入,优化海外EIP、GA产品,强化金融科技与AI场景支持。例如,携程、美的等企业借助阿里云实现业务全球化;同时,阿里云网络在弹性、安全及性能方面不断升级,推动中企迎接AI浪潮并服务全球用户。
2183 8
|
监控 安全 网络安全
云计算与网络安全:技术挑战与解决方案
随着云计算技术的飞速发展,其在各行各业的应用越来越广泛。然而,随之而来的网络安全问题也日益凸显。本文将从云服务、网络安全和信息安全等技术领域出发,探讨云计算面临的安全挑战及相应的解决方案。通过实例分析和代码示例,旨在帮助读者更好地理解云计算与网络安全的关系,提高网络安全防护意识。
472 56
|
存储 安全 网络安全
云计算与网络安全的深度探讨###
本文旨在全面解析云计算环境下的网络安全挑战,涵盖云服务模型、数据安全、身份与访问管理等关键技术领域。通过剖析云计算对网络安全格局的影响,探讨如何构建和维护坚实的安全防护体系,确保云环境中的数据安全、隐私保护及业务连续性。 ###
|
存储 安全 网络安全
云计算与网络安全:技术融合的双刃剑
在数字化浪潮中,云计算如同一股不可阻挡的力量,推动着企业和个人用户步入一个高效、便捷的新时代。然而,随之而来的网络安全问题也如影随形,成为制约云计算发展的阿喀琉斯之踵。本文将探讨云计算服务中的网络安全挑战,揭示信息保护的重要性,并提供实用的安全策略,旨在为读者呈现一场技术与安全的较量,同时指出如何在享受云服务带来的便利的同时,确保数据的安全和隐私。
376 6