分布式跟踪在dapr里是开箱即用的,不需要对应用作任何一丁点的侵入式编程。之前的开发,如果想实现分式跟踪,就得在应用中埋点,这是一个与业务无关系的动作。dpar通过sidecar可以轻松做到这点,从而让程序员更多精力投入到业务中,又让运维得到可观测性能数据,对服务运维保驾护航。从此以后,开发和运维再没有爱恨情愁,可以友好的做朋友。

接上一篇的docker-compose部署,在docker-compose.yam中只需要增加zipkin在的节点,并且每个服务的sidecar启动时指定zipkin配置即可。

version: '3.4'
services:#┌────────────────────────────────┐#│ ordersystem app + Dapr sidecar │#└────────────────────────────────┘ordersystem:image: ${DOCKER_REGISTRY-}ordersystemdepends_on:- redis- placement - rabbitmq         - zipkin       build:context: ../dockerfile: OrderSystem/Dockerfileports:- "3500:3500"    volumes:   - ../OrderSystem:/OrderSystem  networks:- b2c-daprordersystem-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "order", "-app-port", "80","-placement-host-address", "placement:50006","-components-path","/components","-config","/home/nonroot/.dapr/config.yaml" ]depends_on:- ordersystemnetwork_mode: "service:ordersystem"volumes:   - ../components:/components - ../:/home/nonroot/.dapr        #┌───────────────────────────────────┐#│ paymentsystem1 app + Dapr sidecar │#└───────────────────────────────────┘  paymentsystem1:image: ${DOCKER_REGISTRY-}paymentsystemdepends_on:- redis- placement - rabbitmq   - zipkin      build:context: ../dockerfile: PaymentSystem/Dockerfileports:- "3601:3500"volumes:   - ../PaymentSystem:/PaymentSystem      networks:- b2c-dapr      paymentsystem1-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "pay", "-app-port", "80","-placement-host-address", "placement:50006","-components-path","/components","-config","/home/nonroot/.dapr/config.yaml" ]depends_on:- paymentsystem1network_mode: "service:paymentsystem1"volumes:   - ../components:/components - ../:/home/nonroot/.dapr     #┌───────────────────────────────────┐#│ paymentsystem2 app + Dapr sidecar │#└───────────────────────────────────┘   paymentsystem2:image: ${DOCKER_REGISTRY-}paymentsystemdepends_on:- redis- placement   - rabbitmq   - zipkin        build:context: ../dockerfile: PaymentSystem/Dockerfilevolumes:   - ../PaymentSystem:/PaymentSystem            ports:- "3602:3500"networks:- b2c-dapr      paymentsystem2-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "pay", "-app-port", "80" ,"-placement-host-address", "placement:50006","-components-path","/components","-config","/home/nonroot/.dapr/config.yaml"]depends_on:- paymentsystem2network_mode: "service:paymentsystem2"volumes:   - ../components:/components       - ../:/home/nonroot/.dapr     #┌───────────────────────────────────┐#│ noticesystem1 app + Dapr sidecar  │#└───────────────────────────────────┘  noticesystem1:image: ${DOCKER_REGISTRY-}noticesystemdepends_on:- redis- placement  - rabbitmq  - zipkin         build:context: ../dockerfile: NoticeSystem/Dockerfileports:- "3701:3500"volumes:   - ../NoticeSystem:/NoticeSystem      networks:- b2c-dapr      noticesystem1-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "notice", "-app-port", "80","-placement-host-address", "placement:50006","-components-path","/components","-config","/home/nonroot/.dapr/config.yaml" ]depends_on:- noticesystem1network_mode: "service:noticesystem1"volumes:   - ../components:/components - ../:/home/nonroot/.dapr     #┌───────────────────────────────────┐#│ noticesystem2 app + Dapr sidecar  │#└───────────────────────────────────┘  noticesystem2:image: ${DOCKER_REGISTRY-}noticesystemdepends_on:- redis- placement    - rabbitmq  - zipkin         build:context: ../dockerfile: NoticeSystem/Dockerfileports:- "3702:3500"volumes:   - ../NoticeSystem:/NoticeSystem      networks:- b2c-dapr      noticesystem2-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "notice", "-app-port", "80","-placement-host-address", "placement:50006","-components-path","/components" ,"-config","/home/nonroot/.dapr/config.yaml"]depends_on:- noticesystem2network_mode: "service:noticesystem2"volumes:   - ../components:/components - ../:/home/nonroot/.dapr     #┌────────────────────────┐#│ Dapr placement service │#└────────────────────────┘  placement:image: "daprio/dapr"command: ["./placement", "-port", "50006"]ports:- "50006:50006"networks:- b2c-dapr#┌──────────────────────────┐#│ Zipkin  service          │#└──────────────────────────┘ zipkin:image: "openzipkin/zipkin"ports:- "9411:9411"networks:- b2c-dapr#┌───────────────────┐#│ Redis state store │#└───────────────────┘  redis:image: "redis:latest"ports:- "6379:6379"networks:- b2c-dapr#┌──────────────────────┐#│ RabbitMQ             │#└──────────────────────┘  rabbitmq:image: "rabbitmq:management"ports:- "15672:15672"- "5672:5672" environment:- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=!2021que networks:- b2c-dapr  networks:b2c-dapr:

config.yaml,指定了tracing的配置,zipkin的地址是:http://zipkin:9411/api/v2/spans

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:name: daprConfig
spec:tracing:samplingRate: "1"zipkin:endpointAddress: http://zipkin:9411/api/v2/spans

这是一个调用的跟踪结果(一)

这是一个调用的跟踪结果(二)

这是一个调用的跟踪结果(三)

这是一个发布订阅的跟踪结果(一)

这是一个发布订阅的跟踪结果(一)

Dapr牵手.NET学习笔记:可观测性-分布式跟踪相关推荐

  1. Dapr牵手.NET学习笔记:开篇

    dapr,一个为分布式应用程序的运行时,为开发者在对接分布式组件时,提供了便利.使用dapr带来的好处可扩展性,因为它是通过sidecar的理概念来集成其他运行时的.同时dapr还提供了多种语言的SD ...

  2. Dapr牵手.NET学习笔记:状态管理之docker-compose发布

    Dapr牵手.NET学习笔记:想入非非的服务调用 Dapr牵手.NET学习笔记:跨物理机负载均衡服务调用 Dapr牵手.NET学习笔记:用docker-compose部署服务 说明:为了给出demo的 ...

  3. Dapr牵手.NET学习笔记:想入非非的服务调用

    demo运行环境:Windows10,Docker(dapr_zipkin,dapr_redid,dapr_placement) 安装:dapr init 卸载:dapr uninstall,然后删除 ...

  4. Dapr牵手.NET学习笔记:Actor一个场景

    接上一篇最后的场景,为了解决相同帐户并发引起的数据库行级锁,可以引入Actor的串机制,相同ActorID的实例,串行,这样就能在应用层把读取余额的资源争抢解决掉,剩下的工作就是一定时间间隔,把内存中 ...

  5. Dapr牵手.NET学习笔记:Actor小试

    Actor模型是一种避免线程共享数据,相同Actor实体串行化的方案,所以不便dapr的其他功能,几乎都是非编程入侵的,相反,Dapr Acror深度定制的,关于Actor,.net中有一些通用框架, ...

  6. Dapr牵手.NET学习笔记:绑定

    绑定有点像订阅发布,但又不一样,绑定更简单,绑定输出(调用方)-绑定输入(被调用方). 本例是用docker compose编排,并且用rabbitMQ来支持,因为rabbitMQ支持输入和输出绑定. ...

  7. Dapr牵手.NET学习笔记:发布-订阅

    queue,是很好的削峰填谷工具,在业内也是主流:发布订阅,可以有效的解耦两个应用,所以dapr把他们进行了有效的封装,我们使用起来更简单高效. 本篇的案例是下完订单后,会把消息发布到redis(当然 ...

  8. Dapr牵手.NET学习笔记:状态管理进阶(二)

    为了防止并发对数据修改造成差异,dapr使用了etag标签来作为版本号,对数据修改进行验证. 下面是对etag的一个demo appsettings.json中的url配置 "StateUr ...

  9. Dapr牵手.NET学习笔记:状态管理进阶(一)

    在上一篇文章中说到,dapr默认的状态是不可能跨appid的,也就是只能在相同的应用内访问自己设置的状态数据,dapr支持三种状态的共享配置:appid,nam,none,是通过修改component ...

最新文章

  1. golang中的http服务器
  2. 1.1计算机系统简介
  3. 中国SaaS死或生之四:卧榻之侧,是谁在捅刀 SaaS?
  4. 惩罚、补偿、正则化、约束的联系和区别
  5. min max rand repmat 函数
  6. Kitten编程猫里如何先后播放不同的背景音乐
  7. 洛谷 P1352 没有上司的舞会
  8. jboss调jvm参数_在同一台机器上启动多个JBoss A-MQ JVM
  9. Java 算法 找素数
  10. Arthas : 在线分析诊断工具Arthas(阿尔萨斯)
  11. JEESITE快速开发平台(二)环境搭建
  12. LINUX下载编译libtheora
  13. 叶脊网络拓扑(leaf-spine)
  14. 全国计算机化学年会,第15届全国计算(机)化学学术会议第一轮通知
  15. 看漫画学python 电子书_看漫画学Python电子版(mobi azw3 epub)
  16. 支持超过4000字节的varchar2类型
  17. Clark变换与Park变换
  18. excel冻结窗格参与排序_冻结窗格在Excel中消失
  19. C#调用Onnx模型
  20. [Mysql] MOD函数

热门文章

  1. wpf: DataGridTextColumn 数字格式显示,编辑时取消格式(StringFormat)
  2. 通过java类的反射机制获取类的属性类型
  3. Sql—表格的建立,删除,数据的建立与删除-总结篇
  4. luogu4389 付公主的背包
  5. 安装SQLserver2008
  6. LightOJ - 1027 A Dangerous Maze —— 期望
  7. 关于bedtools merge 功能中sort 命令的解释
  8. 利用html5看雪花飘落的效果
  9. StackExchange.Redis 使用 (一)
  10. ubuntu make menuconfig error