创建有状态微服务的最佳方法(实践)是什么?

时间:2018-07-31 23:07:41

标签: spring microservices stateful

我需要使用微服务,可扩展的,集群以及几个订购步骤来创建食品订购服务。需要在步骤/请求之间存储用户数据。

保存状态和用户数据的方法是什么?将其存储在数据库中?缓存?共享内存? 有最佳实践的任何教程吗?

(我将使用spring / springboot和模块)

2 个答案:

答案 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