首页
视频
资源
登录
原
Dapr 官方教程第五章(Dapr 绑定kafka)
6541
人阅读
2021/9/4 15:54
总访问:
2972206
评论:
0
收藏:
0
手机
分类:
云产品
![](https://img.tnblog.net/arcimg/hb/896fd38e95b346f9a0d98c54b135bb94.jpg) >#Dapr 官方教程第五章(Dapr 绑定kafka) [TOC] tn2>在本快速入门中,您将创建两个微服务,一个具有输入绑定,另一个具有输出绑定。您将绑定到 Kafka,但请注意,Dapr 可以绑定无数组件(请参阅 Dapr 组件)。 本快速入门包括两个微服务: ——使用输入绑定的 Node.js 微服务 ——使用输出绑定的 Python 微服务 这些绑定连接到 Kafka,允许我们将消息推送到 Kafka 实例(来自 Python 微服务)并从该实例(来自 Node 微服务)接收消息,而无需知道该实例的托管位置。相反,使用 Dapr API 通过 sidecar 进行连接。查看架构图以了解组件如何在本地互连: ![](https://img.tnblog.net/arcimg/hb/5c102938226243299fcca8ed4657386c.png) 先决条件 ------------ >### 在本地运行的先决条件 tn2>Dapr CLI 与 Dapr 初始化 Node.js 8 或更高版本 Python 3.4 或更高版本 ![](https://img.tnblog.net/arcimg/hb/ead0e91e20e545cbb36fae0f0f5f2657.png) >### 在 Kubernetes 中运行的先决条件 tn2>有dapr的k8s集群环境即可 本地运行 ------------ tn2>将此快速入门存储库克隆到您的本地计算机: ```bash git clone https://github.com/dapr/quickstarts.git cd quickstarts/bindings/ ``` 在本地运行 Kafka Docker 容器 ------------ tn2>为了在本地运行 Kafka 绑定快速入门,您将在机器上的 docker 容器中运行Kafka 代理服务器。 ```bash docker-compose -f ./docker-compose-single-kafka.yml up -d docker ps ``` ![](https://img.tnblog.net/arcimg/hb/8a47c33e6b4a41d8811b657fa02fa4a1.png) 使用输入绑定运行Node微服务 ------------ tn2>现在您的机器上本地运行了 Kafka,您需要运行微服务。您将首先运行使用输入绑定的 Node 微服务: ```bash # 在 CLI 中导航到 Node 订阅者目录 cd nodeapp/ # 安装依赖 npm install # 使用 Dapr 运行 Node 应用 dapr run --app-id bindings-nodeapp --app-port 3000 node app.js --components-path ../components ``` 使用输出绑定运行 Python 微服务 ------------ tn2>接下来,运行使用输出绑定的 Python 微服务 ```bash # 打开一个新的 CLI 窗口并导航到 CLI 中的 Python 订阅者目录 cd pythonapp/ # 安装依赖 pip3 install requests # 使用 Dapr 运行 Python 应用程序 dapr run --app-id bindings-pythonapp python3 app.py --components-path ../components ``` 观察日志 ------------ tn2>观察 Python 日志,其中显示了与 Kafka 的成功输出绑定: ![](https://img.tnblog.net/arcimg/hb/2bfa8cd29749474984eb6819d812a874.png) tn2>观察 Node 日志,其中显示了与 Kafka 的成功输入绑定: ![](https://img.tnblog.net/arcimg/hb/e6eacd284d934ed4b18e18c8f48744ee.png) 清理 ------------ tn2>要彻底停止 dapr 微服务,请运行: ```bash dapr stop --app-id bindings-nodeapp dapr stop --app-id bindings-pythonapp ``` ![](https://img.tnblog.net/arcimg/hb/24d57a75d4b0466c9f0326f0d9ee5a7a.png) tn2>完成后,您可以通过运行以下命令来关闭本地 Kafka Docker 容器: ```bash docker-compose -f ./docker-compose-single-kafka.yml down ``` ![](https://img.tnblog.net/arcimg/hb/06e84b6ad2a0408cb7df6e62605fa8a8.png) 在 Kubernetes 中运行 ------------ >### 在 Kubernetes 中设置 Kafka tn2>通过bitnami/kafka安装 Kafka ```bash helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update kubectl create ns kafka helm install dapr-kafka bitnami/kafka --wait --namespace kafka -f ./kafka-non-persistence.yaml ``` tn2>等待 kafka pod 运行 ```bash kubectl -n kafka get pods -w ``` ![](https://img.tnblog.net/arcimg/hb/3f60709e197a4e9d81818e5d232365b8.png) k8s部署应用 ------------ tn2>现在 Kafka 绑定已设置,马上部署应用。 ```bash # 在您的 CLI 窗口中,在 bindings 目录中运行 kubectl apply -f ./deploy ``` tn2>这将部署 bindings-nodeapp 和 bindings-pythonapp 微服务。它还将应用您在上一步中设置的 Kafka 绑定组件配置。 Kubernetes 部署是异步的。这意味着您需要等待部署完成,然后才能继续下一步。您可以使用以下命令执行此操作: ```bash kubectl rollout status deploy/bindings-nodeapp kubectl rollout status deploy/bindings-pythonapp ``` ![](https://img.tnblog.net/arcimg/hb/d646a98cf133419c8f4fdd95240882b4.png) 观察日志 ------------ tn2>观察 Python 应用程序日志,其中显示了与 Kafka 的成功输出绑定: ```bash kubectl get pods ``` tn2>运行以下命令查看 Python 应用程序日志: ```bash kubectl logs --selector app=bindingspythonapp -c python --tail=-1 ``` ![](https://img.tnblog.net/arcimg/hb/a4ee8230fd994f1a9b1d1a1958961738.png) tn2>观察 Node 应用程序日志,其中显示了与 Kafka 的成功输入合并: ```bash kubectl logs --selector app=bindingsnodeapp -c node --tail=-1 ``` ![](https://img.tnblog.net/arcimg/hb/88d24eb6e57f445ab888085f294f6a70.png) 清理 ------------ tn2>完成后,您可以通过运行以下命令来减少 Kubernetes 删除: ```bash kubectl delete -f ./deploy ``` tn2>这将删除deploy目录中.yaml 文件定义的每个资源,包括 kafka 组件。 删除所有快速入门应用程序后,请删除集群中的 Kafka ```bash helm uninstall dapr-kafka --namespace kafka ``` tn2>最后,您可以删除 kafka 命名空间 ```bash kubectl delete ns kafka ``` 这个怎么运作 ------------ tn2>现在您已经在本地和/或 Kubernetes 中运行了快速入门,让我们解开这一切的工作原理。该应用程序分为输入绑定应用程序和输出绑定应用程序。 >### Kafka 绑定 yaml tn2>看应用程序代码之前,让我们看到了 kafka 绑定组件yamls(本地和Kubernetes)。 ——其中`brokers`规定了 kafka 的连接 ——topics并`consumerGroup`为消费者 ——`publishTopic`发行商的话题。 tn>看到HOWTO文档引用了输入和输出绑定的细节 此配置 yaml 创建`sample-topic`组件以通过 Kafkasample主题设置 Kafka 输入和输出绑定。 ```yaml apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: sample-topic spec: type: bindings.kafka version: v1 metadata: # Kafka代理连接设置 - name: brokers value: [kafka broker address] # 消费者配置:主题和消费者组 - name: topics value: sample - name: consumerGroup value: group1 # 发布服务器配置:主题 - name: publishTopic value: sample - name: authRequired value: "false" ``` >### Node输入绑定应用 tn2>导航到该nodeapp目录并打开app.jsNode.js 输入绑定示例应用程序的代码。在这里,您使用 公开了一个 API 端点express。API 名称必须与 Kafka 绑定组件 yaml 中指定的组件名称相同。然后 Dapr 运行时将使用来自sample主题的事件,然后将带有事件负载的 POST 请求发送到 Node 应用程序。 ![](https://img.tnblog.net/arcimg/hb/45b08ffbad714b71ae6c49e5a73c7f82.png) >### Python 输出绑定应用程序 tn2>导航到`pythonapp`目录并打开`app.py`输出绑定示例应用程序的代码。这将每秒向 Dapr http 端点发送`http://localhost:3500/v1.0/bindings/<output_bindings_name>`带有事件负载的POST 请求。此应用程序使用`sample-topic`绑定组件名称作为`<output_bindings_name>`. 然后 Dapr 运行时将事件发送到sample上述 Kafka 绑定组件 yaml 中指定的主题。 ![](https://img.tnblog.net/arcimg/hb/57ae665c4eb2495aaf43c793dcaa07b5.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
177篇
linux
18篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
5篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
19篇
threejs
2篇
人物
1篇
嵌入式
20篇
python
20篇
HuggingFace
8篇
pytorch
10篇
opencv
6篇
Halcon
5篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术