tnblog
首页
视频
资源
登录

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

7637人阅读 2021/9/4 15:54 总访问:3659838 评论:0 收藏:0 手机
分类: 云产品

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


在本快速入门中,您将创建两个微服务,一个具有输入绑定,另一个具有输出绑定。您将绑定到 Kafka,但请注意,Dapr 可以绑定无数组件(请参阅 Dapr 组件)。
本快速入门包括两个微服务:
——使用输入绑定的 Node.js 微服务
——使用输出绑定的 Python 微服务
这些绑定连接到 Kafka,允许我们将消息推送到 Kafka 实例(来自 Python 微服务)并从该实例(来自 Node 微服务)接收消息,而无需知道该实例的托管位置。相反,使用 Dapr API 通过 sidecar 进行连接。查看架构图以了解组件如何在本地互连:

先决条件

在本地运行的先决条件


Dapr CLI 与 Dapr 初始化
Node.js 8 或更高版本
Python 3.4 或更高版本

在 Kubernetes 中运行的先决条件


有dapr的k8s集群环境即可

本地运行


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

  1. git clone https://github.com/dapr/quickstarts.git
  2. cd quickstarts/bindings/

在本地运行 Kafka Docker 容器


为了在本地运行 Kafka 绑定快速入门,您将在机器上的 docker 容器中运行Kafka 代理服务器。

  1. docker-compose -f ./docker-compose-single-kafka.yml up -d
  2. docker ps

使用输入绑定运行Node微服务


现在您的机器上本地运行了 Kafka,您需要运行微服务。您将首先运行使用输入绑定的 Node 微服务:

  1. # 在 CLI 中导航到 Node 订阅者目录
  2. cd nodeapp/
  3. # 安装依赖
  4. npm install
  5. # 使用 Dapr 运行 Node 应用
  6. dapr run --app-id bindings-nodeapp --app-port 3000 node app.js --components-path ../components

使用输出绑定运行 Python 微服务


接下来,运行使用输出绑定的 Python 微服务

  1. # 打开一个新的 CLI 窗口并导航到 CLI 中的 Python 订阅者目录
  2. cd pythonapp/
  3. # 安装依赖
  4. pip3 install requests
  5. # 使用 Dapr 运行 Python 应用程序
  6. dapr run --app-id bindings-pythonapp python3 app.py --components-path ../components

观察日志


观察 Python 日志,其中显示了与 Kafka 的成功输出绑定:


观察 Node 日志,其中显示了与 Kafka 的成功输入绑定:

清理


要彻底停止 dapr 微服务,请运行:

  1. dapr stop --app-id bindings-nodeapp
  2. dapr stop --app-id bindings-pythonapp


完成后,您可以通过运行以下命令来关闭本地 Kafka Docker 容器:

  1. docker-compose -f ./docker-compose-single-kafka.yml down

在 Kubernetes 中运行

在 Kubernetes 中设置 Kafka


通过bitnami/kafka安装 Kafka

  1. helm repo add bitnami https://charts.bitnami.com/bitnami
  2. helm repo update
  3. kubectl create ns kafka
  4. helm install dapr-kafka bitnami/kafka --wait --namespace kafka -f ./kafka-non-persistence.yaml


等待 kafka pod 运行

  1. kubectl -n kafka get pods -w

k8s部署应用


现在 Kafka 绑定已设置,马上部署应用。

  1. # 在您的 CLI 窗口中,在 bindings 目录中运行
  2. kubectl apply -f ./deploy


这将部署 bindings-nodeapp 和 bindings-pythonapp 微服务。它还将应用您在上一步中设置的 Kafka 绑定组件配置。
Kubernetes 部署是异步的。这意味着您需要等待部署完成,然后才能继续下一步。您可以使用以下命令执行此操作:

  1. kubectl rollout status deploy/bindings-nodeapp
  2. kubectl rollout status deploy/bindings-pythonapp

观察日志


观察 Python 应用程序日志,其中显示了与 Kafka 的成功输出绑定:

  1. kubectl get pods


运行以下命令查看 Python 应用程序日志:

  1. kubectl logs --selector app=bindingspythonapp -c python --tail=-1


观察 Node 应用程序日志,其中显示了与 Kafka 的成功输入合并:

  1. kubectl logs --selector app=bindingsnodeapp -c node --tail=-1

清理


完成后,您可以通过运行以下命令来减少 Kubernetes 删除:

  1. kubectl delete -f ./deploy


这将删除deploy目录中.yaml 文件定义的每个资源,包括 kafka 组件。
删除所有快速入门应用程序后,请删除集群中的 Kafka

  1. helm uninstall dapr-kafka --namespace kafka


最后,您可以删除 kafka 命名空间

  1. kubectl delete ns kafka

这个怎么运作


现在您已经在本地和/或 Kubernetes 中运行了快速入门,让我们解开这一切的工作原理。该应用程序分为输入绑定应用程序和输出绑定应用程序。

Kafka 绑定 yaml


看应用程序代码之前,让我们看到了 kafka 绑定组件yamls(本地和Kubernetes)。
——其中brokers规定了 kafka 的连接
——topics并consumerGroup为消费者
——publishTopic发行商的话题。

看到HOWTO文档引用了输入和输出绑定的细节
此配置 yaml 创建sample-topic组件以通过 Kafkasample主题设置 Kafka 输入和输出绑定。

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: sample-topic
  5. spec:
  6. type: bindings.kafka
  7. version: v1
  8. metadata:
  9. # Kafka代理连接设置
  10. - name: brokers
  11. value: [kafka broker address]
  12. # 消费者配置:主题和消费者组
  13. - name: topics
  14. value: sample
  15. - name: consumerGroup
  16. value: group1
  17. # 发布服务器配置:主题
  18. - name: publishTopic
  19. value: sample
  20. - name: authRequired
  21. value: "false"

Node输入绑定应用


导航到该nodeapp目录并打开app.jsNode.js 输入绑定示例应用程序的代码。在这里,您使用 公开了一个 API 端点express。API 名称必须与 Kafka 绑定组件 yaml 中指定的组件名称相同。然后 Dapr 运行时将使用来自sample主题的事件,然后将带有事件负载的 POST 请求发送到 Node 应用程序。

Python 输出绑定应用程序


导航到pythonapp目录并打开app.py输出绑定示例应用程序的代码。这将每秒向 Dapr http 端点发送http://localhost:3500/v1.0/bindings/<output_bindings_name>带有事件负载的POST 请求。此应用程序使用sample-topic绑定组件名称作为<output_bindings_name>. 然后 Dapr 运行时将事件发送到sample上述 Kafka 绑定组件 yaml 中指定的主题。


欢迎加群讨论技术,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 官方教程第四章(发布订阅)[TOC] 在本快速入门中,您将创建一个发布者微服务和两个订阅者微服务,以演示 Dapr 如...

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
文章
657
粉丝
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
欢迎加群交流技术