微服务通信与客户端模式实践
1. 事件驱动的微服务构建
在服务间通信中,以往常见的方式是一个服务直接调用一个或多个其他服务。但当我们需要对系统中的事件做出反应时,比如发送邮件、通知或更新分析存储,采用事件驱动架构更为合适。这种架构下,一个服务向代理发送消息,另一个应用消费该消息并执行操作。它具有解耦发布者和消费者的优点,还能将潜在的高成本操作从用户请求的关键路径中移除,并且具备一定的容错能力。
Apache Kafka 是一个开源的流处理平台,本质上是一个分布式事务日志架构的事件代理。简单来说,Kafka 是一个分布式事件存储,允许我们将消息发布到名为主题的类别中,其他进程可以从主题中消费消息并做出响应。
以一个虚构的消息应用为例,当用户向另一个用户发送消息时,我们希望以多种方式通知接收者。我们将修改消息服务,使其向名为 messages 的 Kafka 主题发布事件,并构建一个消费者应用来监听该主题的事件并发送通知。
以下是具体的操作步骤:
1. 准备环境 :需要运行并可访问 Kafka 和 ZooKeeper。假设 Kafka 在端口 9092 运行单个代理,ZooKeeper 在端口 2181 运行单个实例。
2. 消息生产者配置
- 添加依赖 :打开 message-service 项目,修改 build.gradle 文件,添加 spring-kafka 项目依赖:
<
超级会员免费看
订阅专栏 解锁全文
171万+

被折叠的 条评论
为什么被折叠?



