不断更改数据和缓存?

问题描述

目前我有一台带有 C# 网络核心控制台应用程序的服务器,它接收传入的 TCP IOT 数据。 每台设备每 5 秒报告一次,有 30,000 台设备

我现在需要转向分布式模型,其中 HAProxy 使用最少连接模型(长时间运行的 TCP 连接)将数据分发到多个服务器 我遇到的问题是来自 IOT 设备的每个新信息都与其“最后一条记录”进行比较,如果状态发生变化等,逻辑会触发

由于物联网设备有 SIM 卡,我看到 TCP 连接被中断,下次连接时它被路由到不同的服务器,它的“最后一条记录”很旧,而不是实际的最后一条记录 这会导致明显的数据一致性问题。 我可以接受“最后一条记录”是 1 分钟的数据,但仅此而已

我已经开始研究使用 redis 和 memcached 进行缓存,但从我读到的内容来看,您应该将缓存用于不经常更改的数据,而我的每 5 秒更改一次

据我所知,我有以下选择

  1. 将 haproxy 配置为从 IP 地址到特定服务器的粘性会话 - 不完美并且会导致负载不平衡,因为每个 IOT 设备都可以报告相同的 IP/不同端口。
  2. 在 mem 缓存和分布式缓存中使用本地,然后每 1 分钟将最近的数据广播到主缓存,并在所有服务器上每 1 分钟从主缓存拉取数据

还有什么我没有考虑的吗?

有哪些软件工程模式可以解决这个问题? 缓存不适合这种情况吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)