Dapr初识

2021-11-18  本文已影响0人  梅西爱骑车

Dapr(Distributed Application Runtime)是微软于2019年10月16日首次发布的分布式程序运行时,到现在已经过去2年多,从最初的v0.1.0到现在的v1.0.0-rc2,加入了好多新的功能。支持的中间件越来越多,基本上主流的中间件(本地版和各云提供商的托管版)都可以被支持。Dapr运行时也从原来的只支持单Instance变成了v1.0.0-rc1以后的支持多Instance(HA mode)。让我们一起进入精彩的Dapr的世界。

Dapr是什么?

参考Dapr官方网站,"An event-driven, portable runtime for building microservices on cloud and edge",或者复杂点说,"Dapr is a portable, event-driven runtime that makes it easy for any developer to build resilient, stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks"。翻译过来就是,"Dapr是一个在云和边缘构建微服务用的事件驱动的,可移植的运行时"。更复杂的来说,"Dapr是一个可移植的,事件驱动的运行时,使开发人员可以轻松创建在云和边缘上运行的有弹性,无状态和有状态的应用程序,支持语言和开发人员框架的多样性"。听起来让人一头雾水,让我解释一下它到底是什么意思。

Dapr能为我做什么?

Dapr提供如下的Building blocks:

  1. Service-to-service invocation,服务间调用,指的是一个微服务可以通过Dapr调用另一个微服务。

  2. State management,状态管理,指的是一个微服务通过Dapr把状态数据保存到某个地方(PostgreSQL,Redis,DynamoDB等等)。

  3. Publish and subscribe,就是所谓的消息总线(Message Bus),或者说发布者/订阅者模式。一个微服务把消息通过Dapr发布(Publish)给某个Topic,所有订阅(Subscribe)这个Topic的微服务都能通过Dapr收到这个消息。


  4. Resource bindings,就是所谓的消息队列(Message Queue,或者叫消息代理,Message Broker),分为两种绑定,一种是输出绑定(Output Binding),一种是输入绑定(Input Binding)。出和入是看数据的流向,输出绑定就是作为Producer的App把消息通过Dapr传给消息队列,输入绑定就是作为Consumer的App通过Dapr从消息队列里得到消息。补充一点,这里的消息队列和Pub/Sub里的消息总线有什么区别呢?可以这样理解:一个消息进入消息总线的话,所有订阅者都能得到这个消息。而一个消息进入消息队列的话,由Consumer来取,一次只有一个人能得到。此外,消息总线是不要求处理顺序的,两个消息进入消息总线,谁先被拿到顺序是不一定的,而消息队列可以保证是先入先出的。


    image
  5. Actors,实现了Actor Model

  6. Observability, 可观测性,就是Dapr提供了模板让你方便的进行观测,比如说用Prometheus+Grafana来看系统的Metrics,用Zipkin来进行分布链路追踪,用Elasticsearch+Fluentd+Kibana(俗称EFK)来对日志进行检索。

  7. Secrets,就是密钥,指的是一个微服务通过Dapr从Secret Store取得密钥。

上一篇 下一篇

猜你喜欢

热点阅读