- 内容提要
- 译者序
- 前言
- 第 1 章 欢迎迈入云世界,Spring
- 第 2 章 使用 Spring Boot 构建微服务
- 第 3 章 使用 Spring Cloud 配置服务器控制配置
- 第 4 章 服务发现
- 第 5 章 使用 Spring Cloud 和 Netflix Hystrix 的客户端弹性模式
- 第 6 章 使用 Spring Cloud 和 Zuul 进行服务路由
- 第 7 章 保护微服务
- 第 8 章 使用 Spring Cloud Stream 的事件驱动架构
- 第 9 章 使用 Spring Cloud Sleuth 和 Zipkin 进行分布式跟踪
- 第 10 章 部署微服务
- 附录 A 在桌面运行云服务
- 附录 B OAuth2 授权类型
第 8 章 使用 Spring Cloud Stream 的事件驱动架构
本章主要内容
- 了解事件驱动的架构处理以及它与微服务的相关性
- 使用 Spring Cloud Stream 简化微服务中的事件处理
- 配置 Spring Cloud Stream
- 使用 Spring Cloud Stream 和 Kafka 发布消息
- 使用 Spring Cloud Stream 和 Kafka 消费消息
- 使用 Spring Cloud Stream、Kafka 和 Redis 实现分布式缓存
还记得最后一次和别人坐下来聊天是什么时候吗?回想一下你是如何与那个人进行互动的。你完全专注于信息交换(就是在你说完之后,在等待对方完全回复之前什么都没有做)吗?当你说话的时候,你完全专注于谈话,而不让外界的东西分散自己的注意力吗?如果这场谈话中有两位以上的参与者,你重复了你对每位对话参与者所说的话,然后依次等待他们的回应吗?如果你对上述问题的回答都是“是”,那就说明你已经得道开悟,超越了我等凡人,那么你应该停止你正在做的事情,因为你现在可以回答这个古老的问题:“一只手鼓掌的声音是什么?”另外,我猜你没有孩子。
事实上,人类总是处于一种运动状态,与周围的环境相互作用,同时发送信息给周围的事物并接收信息。在我家里,一个典型的对话可能是这样的:在和老婆说话的时候我正忙着洗碗,我正在向她描述我的一天,此时,她正玩着她的手机,并聆听着、处理着我说的话,然后偶尔给予回应。当我在洗碗的时候,我听到隔壁房间里有一阵骚动。我停下手头的事情,冲进隔壁房间去看看出了什么问题,然后我就看到我们那只 9 个月大的小狗维德咬住了我 3 岁大的儿子的鞋,像拿着战利品般在客厅里到处跑,而我 3 岁的儿子对此情此景感到不满。我满屋子追狗,直到把鞋子拿回来。然后我回去洗碗,继续和我的老婆聊天。
我跟大家说这件事并不是想告诉大家我生活中普通的一天,而是想要指出我们与世界的互动不是同步的、线性的,不能狭义地定义为一个请求-响应模型。它是消息驱动的,在这里,我们不断地发送和接收消息。当我们收到消息时,我们会对这些消息作出反应,同时经常打断我们正在处理的主要任务。
本章将介绍如何设计和实现基于 Spring 的微服务,以便与其他使用异步消息的微服务进行通信。使用异步消息在应用程序之间进行通信并不新鲜,新鲜的是使用消息实现事件通信的概念,这些事件代表了状态的变化。这个概念称为事件驱动架构(Event Driven Architecture,EDA),也被称为消息驱动架构(Message Driven Architecture,MDA)。基于 EDA 的方法允许开发人员构建高度解耦的系统,它可以对变更作出反应,而不需要与特定的库或服务紧密耦合。当与微服务结合后,EDA 通过仅让服务监听由应用程序发出的事件流(消息)的方式,允许开发人员迅速地向应用程序中添加新功能。
Spring Cloud 项目通过 Spring Cloud Stream 子项目使构建基于消息传递的解决方案变得轻而易举。Spring Cloud Stream 允许开发人员轻松实现消息发布和消费,同时屏蔽与底层消息传递平台相关的实现细节。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论