应用之间的通信遵循发布订阅模式,其中通过共享主题广播数据。这可以在下图中看到,它显示了一组交互式的Spring Cloud Stream应用程序的典型部署。
图6. Spring Cloud Stream Publish-Subscribe
传感器向HTTP端点报告的数据将发送到名为raw-sensor-data
的公共目标。从目的地,它由微服务应用程序独立处理,该应用程序计算时间窗口平均值,以及另一个将原始数据导入HDFS的微服务应用程序。为了处理数据,两个应用程序在运行时将主题声明为它们的输入。
发布订阅通信模型降低了生产者和消费者的复杂性,并允许将新应用程序添加到拓扑中,而不会中断现有流。例如,在平均计算应用程序的下游,您可以添加一个计算显示和监视的最高温度值的应用程序。然后,您可以添加另一个解释相同的故障检测平均流程的应用程序。通过共享主题而不是点对点队列进行所有通信可以减少微服务之间的耦合。
虽然发布订阅消息的概念不是新的,但是Spring Cloud Stream需要额外的步骤才能使其成为其应用模型的一个有意义的选择。通过使用本地中间件支持,Spring Cloud Stream还简化了在不同平台上使用发布订阅模型。