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/)

  • 相关阅读:
    VysorPro助手
    Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
    Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
    Native SBS for Android
    ADB和Fastboot最新版的谷歌官方下载链接
    How do I install Daydream on my phone?
    Daydream Controller手柄数据的解析
    蓝牙BLE传输性能及延迟分析
    VR(虚拟现实)开发资源汇总
    Android(Java)控制GPIO的方法及耗时分析
  • 原文地址:https://www.cnblogs.com/softlin/p/14774213.html
Copyright © 2011-2022 走看看