tnblog
首页
视频
资源
登录

Dapr 官方教程第四章(发布订阅)

7709人阅读 2021/9/1 12:01 总访问:3467608 评论:0 收藏:0 手机
分类: 云产品

Dapr 官方教程第四章(发布订阅)


在本快速入门中,您将创建一个发布者微服务和两个订阅者微服务,以演示 Dapr 如何启用发布订阅模式。发布者将生成特定主题的消息,而订阅者将收听特定主题的消息。请参阅Why Pub-Sub以了解此模式何时可能是您的软件架构的不错选择。
本快速入门包括一位出版商:

  • React 前端消息生成器

还有两个订阅者:

  • Node.js 订阅者
  • Python订阅者

Dapr 使用可插入的消息总线来启用发布-订阅,并在符合Cloud Events 的消息信封中将消息传递给订阅者。在这种情况下,您将使用 Redis Streams(在 Redis 版本 => 5 中启用)。以下架构图说明了组件如何在本地互连:

先决条件

本地运行的先决条件


1.Dapr CLI 与 Dapr 初始化
2.Node.js 8 或更高版本和/或Python 3.6 或更高版本:您可以使用一个或两个微服务运行此快速入门

在 Kubernetes 中运行的先决条件


启用 Dapr 的 Kubernetes 集群

在本地运行

  1. # 初始化
  2. dapr init


为了在本地运行发布/订阅快速入门,每个微服务都需要与 Dapr 一起运行。首先运行消息订阅者。

注意:这些说明部署了一个 Node 订阅者和一个 Python 订阅者,但如果您没有 Node 或 Python,请随意运行一个。

克隆快速入门存储库


将此快速入门存储库克隆到您的本地计算机:

  1. git clone https://github.com/dapr/quickstarts.git
  2. cd quickstarts/pub-sub/

使用 Dapr 运行节点消息订阅者


在 CLI 中导航到 Node 订阅者目录:

  1. cd node-subscriber


安装依赖:

  1. npm install


使用 Dapr 运行 Node 订阅者应用程序:

  1. dapr run --app-id node-subscriber --app-port 3000 node app.js


app-id它可以是微服务的任何唯一标识符。app-port, 是运行 Node 应用程序的端口。最后,node app.js传递运行应用程序的命令。

使用 Dapr 运行 Python 消息订阅者

环境最好python3.6+,如果需要升级可以参考这篇:https://www.cnblogs.com/jsdy/p/12694908.html


打开一个新的 CLI 窗口并导航到 CLI 中的 Python 订阅者目录:

  1. cd python-subscriber


安装依赖:

  1. pip3 install -r requirements.txt
  2. # 或者
  3. python -m pip install -r requirements.txt


使用 Dapr 运行 Python 订阅者应用程序:

  1. dapr run --app-id python-subscriber --app-port 5000 python3 app.py

使用 Dapr 运行 React 前端


现在,使用 Dapr 运行 React 前端。前端将发布订阅者将接收的不同类型的消息。
打开一个新的 CLI 窗口并导航到 react-form 目录:

  1. cd react-form


使用 Dapr 运行 React 前端应用程序:

  1. npm run buildclient
  2. npm install
  3. dapr run --app-id react-form --app-port 8080 npm run start


接着我们访问8080端口访问前端


发布多个主题的hello消息,然后在Zipkin查看我这A发到哪儿了


这里我们发现它发送的链接地址为/v1.0/publish/pubsub/{主题名}
格式一般是:http://localhost:<DAPR_URL>/publish/<PUBSUB_NAME>/<TOPIC>
接着我们查看发布的dapr日志记录。

这是(React)前端发送的消息

这是(node)处理的消息

使用 CLI 向订阅者发布消息


Dapr CLI 提供了一种机制来发布用于测试目的的消息。

  1. # 使用 Dapr CLI 发布消息:
  2. dapr publish --publish-app-id react-form --pubsub pubsub --topic A --data-file message_a.json

注意:如果您在无法轻松访问 Web 浏览器的环境中运行,以下 curl 命令将模拟对节点服务器的浏览器请求。

  1. curl -s http://localhost:8080/publish -H Content-Type:application/json --data @message_b.json
  2. curl -s http://localhost:8080/publish -H Content-Type:application/json --data @message_c.json


清理

  1. dapr stop --app-id node-subscriber
  2. dapr stop --app-id python-subscriber
  3. dapr stop --app-id react-form

在 Kubernetes 中运行

  1. dapr init -k
  2. cd deploy/


要在 Kubernetes 中运行相同的代码,首先设置一个 Redis 存储,然后部署微服务。您将使用相同的微服务,但最终架构会有所不同:

设置Redis存储

  1. # 通过 docker 创建 redis
  2. docker pull redis:latest
  3. docker run -itd --name redis-test -p 6379:6379 redis
  4. # 查看ip
  5. ifconfig
  6. vim redis.yaml

部署项目

  1. kubectl apply -f .


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Dapr 安装与介绍

Dapr 安装与介绍[TOC] Dapr 介绍Github: https://github.com/dapr/daprDapr是一种可移植的,事件驱动的,无服务器运行时...

Dapr 简单使用的内置API

Dapr 简单使用的内置API[TOC] 您的本地环境具有 Dapr sidecar 二进制文件以及状态管理和消息代理(均使用 Redis)的默认组...

Dapr 定义一个组件

Dapr 定义一个组件[TOC] 在上一步中,您调用了 Dapr HTTP API 来从 Redis 支持的状态存储中存储和检索状态。Dapr通过初始...

Dapr 官方教程第一章(Hello World)

Dapr 官方教程第一章(Hello World)[TOC] 本教程将演示如何在您的机器上本地运行 Dapr。您将部署一个 Node.js 应用程序,该...

Dapr 官方教程第二章(Hello World Kubernetes)

Dapr 官方教程第二章(Hello World Kubernetes)[TOC] 本教程将帮助您在 Kubernetes 集群中使用 Dapr。您将从Hello World部...

Dapr 官方教程第三章(分布式计算器)

Dapr 官方教程第三章(分布式计算器)[TOC] 本快速入门通过分布式计算器展示了 Dapr 的方法调用和状态持久性功能,其中每个...

Dapr 官方教程第五章(Dapr 绑定kafka)

Dapr 官方教程第五章(Dapr 绑定kafka)[TOC] 在本快速入门中,您将创建两个微服务,一个具有输入绑定,另一个具有输出绑定...

Dapr .netcore与go的方法调用

Dapr .netcore与go的方法调用[TOC] 主要回顾一下dapr是如何调用方法的。这里是通过.netcore程序调用go程序中的方法。本章...

Dapr .NetCore 调用方法

Dapr .NetCore 调用方法[TOC] 创建客户端项目(InvokeMethod) 在Program类中设置日志控制台输出,在 launchSettings.jso...

Dapr .NetCore 状态管理

Dapr .NetCore 状态管理[TOC] 使用状态管理,您的应用程序可以将数据作为键/值对存储在支持的状态存储中。使用状态管理时...

Dapr .NetCore grpc调用

Dapr .NetCore grpc调用[TOC] 本文介绍如何使用 Dapr 连接使用 gRPC 的服务。通过使用 Dapr 的 gRPC 代理功能,您可以使用...

Dapr .NetCore 订阅与发布(上)

Dapr .NetCore 订阅与发布[TOC] 介绍Pub/Sub 是分布式系统中的一种常见模式,具有许多想要利用解耦异步消息传递的服务。使...

Dapr .NetCore 订阅与发布(下)

Dapr .NetCore 订阅与发布(下)[TOC] 解决关于运行是报错问题我们将为InvokeMethodServerAPI项目做一些修改。首先添加一些...

Dapr .NetCore Actor

Dapr .NetCore Actor[TOC] Actor简介简单来讲就是锁的作用,可以用作单线程调用实例,起到加锁的效果。解决了并发抢票的。...

Dapr .NetCore 绑定输入输出

Dapr .NetCore 绑定输入输出[TOC] 输入绑定简单来说通过你的应用所对应的dapr边车绑定队列的消息处理,但是这个消息中间件...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术