caching - 微服务、缓存和负载平衡设计模式
问题描述
我有一个使用本地应用程序/内存缓存的实时数据密集型应用程序
40,000 辆汽车正在向 1 台服务器发送数据(每 5 秒),我必须计算出先前位置和当前位置之间的行驶距离。
为此,我缓存每辆车之前的纬度、经度,然后当我看到一些新数据时,我获取新的经度、经度并计算出两点之间的距离(即 5 英尺),然后将其添加到累积中车辆上的里程表(即 60,000 英里)
我需要开始负载平衡来处理规模,使用本地缓存在访问 2 个不同的服务器时显然会过时。但是,由于网络跳转到共享缓存,使用分布式缓存似乎会大大减慢处理速度,尤其是如上所述的卷和频率。
一种解决方案可能是使用粘性会话,因此汽车 A 始终前往服务器 A 并定期更新内存缓存,以防服务器出现故障。
但是我确信这个问题在过去已经解决了,在这种情况下是否有行业缓存模式可以使用?
解决方案
我想知道这是怎么回事。考虑到负载的性质,我会从带有内存缓存选项的粘性会话开始。似乎可以将一辆车分配给单个服务器,并且本地缓存可以跟踪之前的 lat、lng。只有当汽车停止发送数据时,您才需要能够识别并为下一辆车释放服务器。无论如何都很想知道它是如何解决的。有趣的问题。
推荐阅读
- python - 如果满足列中值的范围,则从多个文件中提取整行数据
- python - 在 Django 项目中删除以前发送的通知
- prolog - Prolog 真的基于封闭世界假设吗?
- python - 用索引比较两个列表
- ios - Xcode 12.2 安全密码文本字段不良行为
- c# - 我用 url 替换 base 64 图像
- machine-learning - 它会通过添加恒定的正负损失导致梯度消失吗?
- javascript - 如何防止单击时放大/缩小图像?
- python - “pd.read_csv()”匹配参数没有重载参数类型:(Literal['../cleaned_data.csv.zip'], Literal['zip'])
- ios - nw_connection_receive 仅从 UDP 套接字连接接收 9216 个字节