spring boot—当json对象(一个时间序列数据)流经物联网平台上的微服务系统时,跟踪/跟踪它的最佳方式

wdebmtf2  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(308)

我们正在一个物联网平台上工作,该平台每秒从多个设备接收多个设备参数值(时间序列)。一旦接收到每个json(在特定示例中捕获的多个参数值的批处理),当json以事件驱动的方式流经许多微服务时,跟踪它的最佳方法是什么?
我们主要使用spring引导技术,所有服务都是容器化的。
例如:选项1-是否将uuid与每个对象关联,然后在redis中随着每个微服务的处理而以幂等方式更新状态?问题是现在每个微服务都将绑定到redis,我们已经看到redis的性能在下降,因为对redis的api调用数量在增加,因为它是单线程的(尽管我们可以扩展)。选项2-zipkin?
注意:我们使用kafka/rabbitmq以分布式方式处理消息,正如您在这里提到的那样。我的问题是关于跟踪每条消息及其状态的策略(如果需要只获得一次传递,则启用重播)。假设服务a、服务b、服务c正在处理消息1。现在,我们有一些问题需要跟踪消息是否在服务b或服务c处处理失败,因为我们收到了很多消息

kcwpcxri

kcwpcxri1#

更好的方法是使用Kafka而不是redis。
为每个微服务创建一个主题&在处理完数据包后,将数据包从一个主题移动到另一个主题。

topic(raw-data) - |MS One| - topic(processed-data-1) - |MS Two| - topic(processed-data-2) ... etc

不断地将结果附加到同一个对象,并不断地向下移动它,直到每个微服务都处理了它。

相关问题