Dapr专题之01简介

微服务架构框架Dapr


文章目录

  • 微服务架构框架Dapr
  • 前言
  • 一、Dapr是什么?
  • 二、Dapr解决了什么?
  • 三、Dapr提供了什么?
  • 总结


前言

Dapr是微软开源的一款微服务应用框架,笔者将会把这款开源微服务应用框架写成一个系列专题,从Dapr的基本概念到环境的部署再到实操落地,有兴趣的朋友欢迎关注收藏。


一、Dapr是什么?

官方解释:Dapr (Distributed Application Runtime)是一个可移植的、事件驱动的运行时。Dapr为开发人员提供一个分布式的程序的开发环境,提供分布式的程序所依赖的功能模块库,提供了分布式程序的运行环境,或者说为分布式的程序提供了一套完整运行方案。

  • 可移植:指与软件从某一环境转移到另一环境下的难易程度。
  • 事件驱动:调用与被调用方解耦

简单来说就是Dapr为任何语言编写的应用程序提供了与环境解耦的功能

二、Dapr解决了什么?

目前微服务架构存在的情况:

  • 服务拓扑复杂,调用方式不尽相同如HTTP,MQ,RPC等等,这就需要开发人员编写不同的Proxy实现
  • 保存状态数据使用不同组件存储如Redis,Mysql等等,这就需要开发人员编写不同的存储类访问类
  • 保存密钥信息也可能用Azure Keyvault或者K8S Secrets等不同密钥存储,这就需要开发人员集成不同SDK
  • 服务监测可能用不同中间件,这也需要开发人员进行侵入式编码

以上的种种情况使得开发人员无法专注于业务,需要花很多时间了解很多的中间件,在实际情况中开发人员并无法成为各个中间件的专家,无法正确搭建、使用所有的中间件,Dapr采用了sidecar架构就很好的解决了上面存在的问题

三、Dapr提供了什么?

Dapr提供了如下七大功能模块

  • 服务调用

    • 提供不同服务调用方式:HTTP 和GRPC
    • 可插拔服务发现组件:mDNS、K8S DNS、Cousul、DNS
    • 服务重试:如服务请求失败会自动发起重试,重试次数为3。
    • 调用安全性:所有调用采用mLTS加密
  • 状态管理

    • 提供了可插拔的存储组件如Mysql、Redis、PostgreSQL、MongoDB等等
    • 并发控制:通过匹配ETag来确认数据是否被修改过
    • 一致性
    • 事务:存储组件必须支持事务
  • 发布/订阅

    • 提供了可插拔的消息队列组件如RabbitMQ、Kafka、MQTT、Redis Streams
  • 绑定:用于内部服务与外部系统的交互

    • 除去连接到消息传递系统 ( 如队列和消息总线 ) 并进行轮询的复杂性
    • 聚焦于业务逻辑,而不是如何与系统交互的实现细节
    • 使代码不受 SDK 或库的跟踪
    • 处理重试和故障恢复
    • 构建具有特定于环境的绑定的可移植应用程序,不需要进行代码更改
  • Actors:单线程的任务

    • 生命周期 通过内部的timers reminders实现
    • 分发与故障转移 通过内部的Palcement service实现
  • 可观测性

    • W3C标准分布式跟踪
    • 健康监测
    • 指标收集
    • 日志收集
  • Secrets

    • 可移植的密钥存储库:服务不用去集成各种SDK

总结

本文给大家介绍了Dapr的一些基本概念,从下篇文章开始,将带领大家从环境搭建开始把Dapr实操起来,欢迎各位朋友的点赞收藏与关注。

你可能感兴趣的:(微服务,.Net,6,微服务,.net)