本地使用 Docker Compose 与 Nestjs 快速构建基于 Dapr 的 Redis 发布/订阅分布式应用

本文介绍了如何利用Dapr构建基于Redis的发布/订阅分布式应用。通过Dapr的 Placement服务、Redis Publish服务以及NestJS Server实现订阅功能,详细讲解了每个步骤,包括Dapr组件配置、Dapr Sidecar的创建和NestJS服务器的Dapr订阅设置。
摘要由CSDN通过智能技术生成

Dapr(分布式应用程序运行时)介绍

Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。

Dapr 官网:https://dapr.io/

实战 Dapr 的 Redis 发布/订阅应用

1. 创建项目

首先,我们将创建我们的项目根文件夹来托管我们将在后续步骤中创建的所有服务。

mkdir dapr-nestjs-redis-pub-sub

2. 创建 Dapr Placement 服务

由于我们将创建多个服务,我们将使用 docker-compose 来运行这些服务。

让我们在项目的根文件夹中创建 docker-compose.yml 文件

cd dapr-nestjs-redis-pub-sub
touch docker-compose.yml
version: "3.5"


services:
  dapr-placement:
    image: "daprio/dapr"
    command: ["./placement", "-port", "50006"]

Dapr placement​ 服务将负责管理 Dapr actors(我们的服务)之间的所有通信。

简单来说,它负责将所有通信路由到假设接收通信的相应 actor​。它充当 message broker(消息代理)。

3. 创建 Redis Publish 服务

让我们继续通过添加我们的 Redis​ 服务来修改我们的 docker-compose.yml 文件。

将以下代码添加到 docker-compose.yml 的服务部分:

redis-publisher: 
    image: redis
    restart: always
    depends_on:
      - dapr-placement

4. 创建 Dapr Pub-Sub 组件

创建一个 dapr/components​ 文件夹。然后创建组件文件 redis-pubsub.yaml。

mkdir -p dapr/components
cd dapr/components
touch redis-pubsub.yaml

然后打开文件并插入我们的 Dapr pub/sub 组件的详细信息

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: redis-pubsub
  namespace: default
spec:
  type: pubsub.redis
  version: v1
  metadata:
    - name: redisHost
      value: redis-publisher:6379
    - name: redisPassword
      value: ""

redisHost​ 是我们的 Redis​ 服务 redis-pub​ 的名称,默认 Redis​ 端口为 6379。

5. 创建 Redis Dapr Sidecar

正如前面部分反复提到的,服务直接与 Dapr​ 通信,而不是直接与其他服务通信。Dapr 充当所有服务的中间人。

服务通过它们自己的 Dapr sidecar​ 直接与 Dapr​ 通信,Dapr sidecar​ 将通信传递给 Dapr placement​,该 placement​ 再次将其传递给假设接收通信的服务的 Dapr sidecar。

将 redis-dapr-sidecar​ 服务添加到我们的 docker-compose.yml

redis-dapr-sidecar:
    image: "daprio/daprd:edge"
    command: [
        "./daprd"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值