发送更新的消息总线最佳实践

Message bus best practices to send updates

我想了解使用消息总线更新多个服务时的最佳实践是什么。

基本展示案例是通过总线发送完整的对象,每个收听的人都可以立即获取数据并进行处理。

其他选项是通过总线发送最少的必要数据,3/4 字段,然后每个侦听服务应请求主应用程序获取所需数据以进行处理。

主应用程序不等待任何人完成他们的工作,我们谈论的对象具有 30 到 40 个字段且不超过 10kb,通常小于 5kb。

使用第二种方法是否有架构优势?

设计总是关于选项之间的权衡。

Option-1:首选,实现简单,真正与生产者解耦。如果需要,可以启用压缩以减小大小,尽管压缩可以略微降低整体吞吐量。 此方法将需要更多磁盘 space 和应用程序内存。 例如:Json 负载。 您的示例似乎更适合选项 1。

Option-2:如果 kafka 消息的目的是使用最少的信息进行通知,并且附加详细信息可以是文件或独立的 object/multimedia urls,则可以使用此选项。 一种参考实现是在 AWS S3 事件流中,其中 S3 发布消息到达信息(例如:某人上传的文件)和 S3 url,然后消费者可以使用此信息进行处理。此方法需要对象存储或多媒体主机以允许消费者连接和 download/process 特定事件。