前面我们了解了如果在 Dapr 下面进行服务调用,以及最简单的状态管理,本节我们来了解如何启用 Dapr 的发布/订阅模式,发布者将生成特定主题的消息,而订阅者将监听特定主题的信息。
- 使用发布服务,开发人员可以重复发布消息到一个主题上。
- Pub/sub 组件对这些消息进行排队处理。
- 该主题订阅者将从队列中获取到消息并处理他们。
接下来我们使用的这个示例包含一个发布者:
- React 前端消息生成器
包含另外 3 个消息订阅者:
- Node.js 订阅者
- Python 订阅者
- C# 订阅者
Dapr 使用可插拔的消息总线来支持发布-订阅,并将消息传递给 CloudEvents(一个 CNCF 项目) 作为通用的事件信封格式,以提高连接服务的互操作性。
我们这里将使用 Redis Streams(在 Redis version = > 5 中启用),当然也可以使用 RabbitMQ、Kafka 等中间件。下图是用来说明组件之间是如何在本地模式下互相连接的。
dapr pub/sub
本地初始化
Dapr 允许你将相同的微服务从本地机器部署到云环境中去,这里为了和大家说明这种便利性,我们先在本地部署这个实例项目,然后再将其部署到 Kubernetes 环境中去。
要在本地使用 Dapr 服务,需要先在本地初始化 Dapr:
代码语言:javascript复制$ dapr init
由于某些网络原因使用上面的命令可能并不能初始化成功,我们可以使用离线的方式进行安装,前往 https://github.com/dapr/installer-bundle/releases
下载对应系统的 Bundle