微服务、缓存和负载平衡设计模式
Posted
技术标签:
【中文标题】微服务、缓存和负载平衡设计模式【英文标题】:microservices, caching and load balancing design patterns 【发布时间】:2021-04-23 11:16:59 【问题描述】:我有一个使用本地应用程序/内存缓存的实时数据密集型应用程序
40,000 辆汽车正在向 1 个服务器发送数据(每 5 秒),我必须计算出之前位置和当前位置之间的行驶距离。
为此,我缓存了每辆车之前的纬度、经度,然后当我看到一些新数据时,我获取新的纬度、经度并计算出两点之间的距离(即 5 英尺),然后添加这个到车辆上的累积里程表(即60,000英里)
我需要开始负载平衡来处理规模, 当它到达 2 个不同的服务器时,使用本地缓存显然会过时。 但是,使用分布式缓存似乎会大大减慢处理速度,因为网络会跳转到共享缓存,尤其是上面提到的数量和频率。
一种解决方案可能是使用粘性会话,因此汽车 A 始终会前往服务器 A,并定期更新内存缓存以防服务器出现故障。
但是我确信这个问题在过去已经解决了, 在这种情况下是否可以使用行业缓存模式?
【问题讨论】:
【参考方案1】:我想知道这是怎么回事。考虑到负载的性质,我会从带有内存缓存选项的粘性会话开始。似乎可以将一辆车分配给单个服务器,并且本地缓存可以跟踪之前的 lat、lng。只有当汽车停止发送数据时,您才需要能够识别并为下一辆车释放服务器。无论如何,很想知道它是如何解决的。有趣的问题。
【讨论】:
嘿,是的,最后我使用粘性会话将那辆车推送到同一台服务器,这工作正常,如果出现故障,我们可能在新服务器上有稍微旧的数据,但是系统仍在运行,当我在新服务器上看到新设备时,它将首先获取最新信息,然后继续处理以上是关于微服务、缓存和负载平衡设计模式的主要内容,如果未能解决你的问题,请参考以下文章