我需要使用微服务,可扩展的,集群以及几个订购步骤来创建食品订购服务。需要在步骤/请求之间存储用户数据。
保存状态和用户数据的方法是什么?将其存储在数据库中?缓存?共享内存? 有最佳实践的任何教程吗?
(我将使用spring / springboot和模块)
答案 0 :(得分:2)
任何您无法承受的丢失(通常是业务数据)都将进入数据库,并且可以并行存储在内存DB中,例如Redis,其中内置了缓存逐出算法。
如果丢失的话,没什么大不了的(通常是不与业务数据直接关联的技术方面的东西)只能在内存数据库中进行。
由于您使用的是Spring,因此您可能会在Spring Data Redis中使用类似Redis的东西。如果Redis服务器出现故障,已经有已知的Spring解决方案(例如this)可以依靠api调用从数据库获取数据。您还可以在Redis Sentinel后面运行多个Redis实例以提供故障转移。 Redis Cluster提供了一种运行Redis安装的方法,在该安装中,数据会在多个Redis节点之间自动分片。此外,您可以将Redis配置为每天一次将数据持久保存在文件系统中,以便备份缓存数据以进行灾难恢复。
答案 1 :(得分:1)
如果您正在寻找完全托管的服务,则AWS提供“ Step Functions”来满足您的有状态要求:https://stackoverflow.com/questions/tagged/aws-step-functions