Dapr简介

dapr 简介

Dapr(Distributed Application Runtime)

分布式应用运行时

Dapr简介_第1张图片


  1. Dapr是什么?
  2. Dapr能为我做什么?
  3. 展望!

1 Dapr 是什么?

Dapr is a portable, event-driven runtime that makes it easy for developers to build resilient, microservice stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks.

Dapr是一个可移植的,由事件驱动的 运行时,使开发人员可以轻松构建在云和边缘上运行并包含多种语言和开发人员框架的弹性,微服务无状态和有状态应用程序。


  • 分布式程序(Distributed Application)指的是什么?

和微服务是一个意思。大的系统分成彼此独立的小的模块,模块和模块之间通过API互相通信,这样每个模块可以用不同的语言开发,一个模块升级的时候不会影响到别的模块。


  • 云和边缘(cloud and edge)指的是什么?

这里的云和边缘指的是DaprApp可以跑在AWS,Azure,GCP等云服务器上,也可以跑在本地的服务器和远端的物联网终端。


事件驱动(event-driven)指的是什么?


可以理解成Dapr在没有监听(Listening)到请求到来的时候会一直处于待机的状态,什么也不做,只有监听到请求事件来了才开始处理。


可移植(portable)指的是什么?


指程序和运行的环境,用的中间件无关。

比如说原来跑在AWS上,现在想跑在Azure上,Nosql数据库原来用redis,现在想用etcd,消息中间件原来用rocketMQ,现在想用kafka,没问题,只要在Dapr设定这边做一下切换,程序无需改动。


运行时(runtime)指的是什么?


运行时指的是Dapr的运行环境。

Dapr的控制平面(control panel)会单独启动,同时你的程序在启动的时候Dapr会在你的程序上挂一个Sidecar(所谓的边车模式,daprd,runtime),你的程序就可以通过SidecarDapr的控制面。所有挂有Dapr Sidecar的各个微服务之间就可以互相调用了,也可以通过Dapr调用各种中间件。

Note:


有弹性(resilient)指的是什么?


指的是可以从故障中自动恢复的能力,比如说超时,重试等。不会卡住或陷入一种死循环。


无状态和有状态(stateless and stateful)指的是什么?


无状态指的是一个微服务经过计算得到结果,返回给调用者以后这个值在微服务这边是不保存的(DB,内存等)。有状态指的是在微服务这边要把这个结果保存起来。


支持语言的多样性(the diversity of languages)指的是什么?


Repo Description
Go-sdk Dapr SDK for Go
Java-sdk Dapr SDK for Java
JS-sdk Dapr SDK for JavaScript
Python-sdk Dapr SDK for Python
Dotnet-sdk Dapr SDK for .NET Core
Rust-sdk Dapr SDK for Rust
Cpp-sdk Dapr SDK for C++
PHP-sdk Dapr SDK for PHP

开发人员框架(developer frameworks)指的是什么?


指的是Dapr跟框架无关,你可以把各种语言的各种框架(比如java的spring boot框架)和Dapr(API或者SDK)混合使用。

开发人员可以对dapr中的功能进行选择,比如:可以选使用dapr的状态存储,但是不使用dapr的发布订阅.


1.1 Dapr 的目标

  • 使开发人员可以使用任何语言或框架来编写分布式应用程序
  • 通过提供最佳实践构建块来解决开发人员构建微服务应用程序时遇到的难题
  • 通过开放的API提供一致性和可移植性
  • 跨云和边缘与平台无关
  • 拥抱可扩展性并提供可插入组件,无需供应商锁定
  • 通过高性能和轻量级实现物联网和边缘场景
  • 可从现有代码中逐步采用,无运行时依赖性

1.2 Dapr 的工作原理

Dapr向每个计算单元注入一个边车(容器或进程)。边车与事件触发器进行交互,并通过标准的HTTP或gRPC协议与计算单元通信。这使得Dapr能够支持所有现有和未来的编程语言,而不需要导入框架或库。


Dapr简介_第2张图片


Dapr通过标准的HTTP或gRPC接口提供内置的状态管理、可靠的消息传递(至少一次交付)、触发器和绑定。这使得您可以按照相同的编程模式编写无状态、有状态和类似Actor模式的服务。也可以自由选择一致性模型、线程模型和消息传递模式。

Dapr原生运行在Kubernetes上,在你的机器上以自托管二进制的形式运行,在物联网设备上运行,或者以容器的形式运行,可以注入到云端或企业内部的任何系统中。


Dapr使用可插拔的组件状态存储和消息总线(如Redis以及gRPC)来提供广泛的通信方法,包括使用gRPC直接dapr到dapr,以及具有保证交付和至少一次语义的异步Pub-Sub。


任何语言,任何框架,任何地方

Dapr简介_第3张图片


2. Dapr能为我做什么?微服务构件

Dapr简介_第4张图片


Dapr简介_第5张图片


Dapr简介_第6张图片


Dapr简介_第7张图片


Dapr简介_第8张图片


Dapr简介_第9张图片


Dapr简介_第10张图片


Dapr简介_第11张图片


Dapr简介_第12张图片


Dapr简介_第13张图片


Dapr简介_第14张图片


3. 展望!

  1. 服务调用
  2. 中间件组件
  3. Functions and Actor

你可能感兴趣的:(微服务,分布式,开发语言,.netcore,Darp)