zoukankan      html  css  js  c++  java
  • 分布式应用运行时Dapr

    Dapr为微软开源的一个用于构建分布式应用的框架,Dapr为分布式应用运行时(Distributed Application Runtime)的英文单词缩写;Dapr提供了分布式应用所依赖的执行环境,分布式运行时包括了:服务通讯、数据持久化、资源绑定、pub-sub、Actors、密钥等,通过使用Dapr可以使用任何语言轻松构建与平台无关的微服务应用;

    Dapr通过HTTP/gRPC API与语言无关的暴露了分布式的应用调用,官方提供了主流语言Go、Java、Python、.Net等的SDK使得开发者可以方便Dapr的使用;
      Dapr使用了sidecar模式公开其Api,应用程序无需包含任何的Dapr运行时代码,使得应用逻辑与Dapr运行时分离;

    核心结构

    Dapr核心包括三部分:API、Building Blocks、Components

    Building Blocks(构建块)
    目前Dapr中提供了与分布式应用开发息息相关的下列7种构建块:
      service-to-service invocation 服务间调用
      State management 状态管理
      Publish and subscribe 发布订阅
      Resource bindings 资源绑定
      Actors Actors实现
      Observability 可观测性
      Secrets 密钥

    Components(组件)
      Dapr使用模块化设计将功能作为组件提供,定义组件接口,所有组件都可插拔;构建块也可使用任何组件组合;
      Dapr也提供了多种组件:状态组件、服务发现组件、中间件组件、Pub/Sub代理组件、绑定组件、密钥存储组件;

    Dapr API

    Dapr使用API暴露了分布式能力,将分布式原语映射到API上使之应用可以轻松的的使用成为分布式能力,开发者无需在去引用各种组件;Dapr提供了HTTP1.1/REST 和 HTTP2/gRPC两种API;
      应用只需发起API调用,无论是服务调用、数据存储或是消息发布,存储后端是redis还是Mysql应用完全不用关心,都是相同的API;

    三者的关系:

    API:统一标准暴露组件块
    Building Blocks(组件块):分布式能力的抽象
    Components(组件):分布式能力的具体实现

    Dapr部署模式

    Dapr支持两种部署模式:宿主机模式、Kubernetes容器化部署模式;
      Dapr使用sidecar模式提供Building blocks的能力,当部署模式为宿主机模式时每个应用服务都有一个Dapr运行时进程(sidecar进程)为一个独立的进程,模式为容器化模式时sidecar container将被注入到业务Pod中;

    宿主机模式

    部署默认情况下,也需要使用Docker。
    将在Docker中启动三个容器:placement、zipkin、redis容器;
      Placement容器:用于actor 分布方案和关键范围设置。
      Redis容器:配置为作为状态管理和发布/订阅的默认组件。
      Zipkin容器:用于诊断和跟踪的Zipkin容器。
    使用Dapr slim模式将不依赖于Docker,将启动两个独立进程:Daprd、Placement;

    Dapr安装

    1、下载Dapr cli
    https://github.com/dapr/cli/releases
    2、初始化Dapr
    dapr init

    3、验证Dapr


    Dapr Hello World

    启动 Dapr sidecar,它将在端口 3500 上监听名为 myapp 的空白应用程序:

    dapr run --app-id myapp --dapr-http-port 3500
    

    提交状态数据:

     curl -X POST -H "Content-Type: application/json" -d '[{ "key": "dapr", "value": "Hello World"}]' 
     http://localhost:3500/v1.0/state/statestore
    

    获取状态:

     curl http://localhost:3500/v1.0/state/statestore/dapr  
     Hello World  
    

    查看redis中所存储的数据:

    docker exec -it dapr_redis redis-cli
    hgetall "myapp||dapr"
    

    参考资料
    Dapr | 云原生的抽象与实现(https://mp.weixin.qq.com/s/4HHMVxa3l_gCsltoX4euyg)
    dapr docs(https://docs.dapr.io/)

  • 相关阅读:
    Windows Azure 上的 Symfony,适用于 PHP 开发者的强大组合
    VM Depot 镜像新增系列II – 学习管理系统,内容管理系统以及平台管理工具
    VM Depot 镜像新增系列III – 社交媒体,内容管理 与 项目协同系统
    教程:在 VM Depot 中查找 Azure 可用的虚拟机镜像
    使用 Chef 管理 Azure 资源
    微软开放技术发布开源的微软云服务器底盘管理器 (Chasis Manager) 软件
    使用 Gradle 实现 TFS 构建自动化
    携手 Google 和 Docker 为 Microsoft Azure 带来全新的开源容器技术
    VM Depot 中国上的 Bitnami 镜像更新至 Ubuntu 14.04 LTS
    Windows Azure云服务价格调整通知
  • 原文地址:https://www.cnblogs.com/softlin/p/14774213.html
Copyright © 2011-2022 走看看