摄影系统应该在哪里出现扇出?

时间:2017-08-01 16:51:54

标签: rabbitmq apache-kafka publish-subscribe google-cloud-pubsub

我试图设计一个物联网系统,该系统将有许多物联网设备向前端负载均衡服务器发送不同类型的传感器数据,然后将消息发送到摄取系统(目前正在考虑使用Google Cloud PubSub) 。然后有消费者使用消息并将其写入不同的数据库和表。每种传感器数据类型都有自己的数据库。

扇出会发生在哪里?

  1. 在pubsub系统之前:如果前端进行扇出,那么它必须缩放到足以具有足够的处理能力来查看每条消息的内容以确定将其发送到哪个主题。然后,我将为每个消息和每个主题的消费者分别提供一个主题。

  2. 在pubsub系统之后:如果我只有一个主题,即前端只是将所有消息推送到其中,而不管其类型如何,那么该主题的消费者需要缩放以便能够使用和处理每个消息。用于确定要写入哪个数据库的消息。这也意味着这一个消费者代码需要访问所有数据库。

  3. INSIDE pubsub系统:让pubsub执行扇出,这样即使发布者只发布到一个主题,该主题也有几个订阅(每个数据类型一个),每个消费者都使用自己的订阅并删除它们要使用的数据类型的所有消息。看起来Kafka可能更适合用于此。

1 个答案:

答案 0 :(得分:0)

通过Pub / Sub连接设备和路由数据,IoT Core可以更好地为您提供服务,它还可以处理设备连接,身份验证和监控。由于配置设备连接更复杂,因此最好在服务器上扇出。现在,您最好的选择是让Pub / Sub系统的消费者写入每个存储。如果您想要解耦消费者,每个存储可以有多个消费者,但您需要“删除”不需要的消息。使用Dataflow可以使用Apache Beam I/O Transforms