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

Spring 创建有状态微服务的最佳方法(实践)是什么?,spring,microservices,stateful,Spring,Microservices,Stateful,我需要创建一个食品订购服务,使用微服务,可扩展,集群,几个步骤来订购。需要在步骤/请求之间存储用户数据 保存状态和用户数据的方法是什么?是否将其存储在DB中?隐藏物共享内存? 有关于它的最佳实践的教程吗 (我将使用spring/springboot和modules)任何您无法承受的损失(通常是业务数据)都将存储在数据库中,并可以并行缓存在内存中的数据库中,如内置缓存逐出算法的Redis 任何东西,如果丢失,都不是什么大不了的(通常是与业务数据没有直接联系的技术性东西),只能放在内存数据库中 因为

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

保存状态和用户数据的方法是什么?是否将其存储在DB中?隐藏物共享内存? 有关于它的最佳实践的教程吗


(我将使用spring/springboot和modules)

任何您无法承受的损失(通常是业务数据)都将存储在数据库中,并可以并行缓存在内存中的数据库中,如内置缓存逐出算法的Redis

任何东西,如果丢失,都不是什么大不了的(通常是与业务数据没有直接联系的技术性东西),只能放在内存数据库中


因为您使用的是Spring,所以您可能会在Spring数据Redis中使用类似Redis的东西。如果Redis服务器宕机,已经有一些已知的Spring解决方案(例如)可以依靠api调用从DB获取数据。您还可以在Redis Sentinel后面运行多个Redis实例以提供故障切换。Redis Cluster提供了一种运行Redis安装的方法,其中数据自动在多个Redis节点上分片。此外,您还可以将Redis配置为每天在文件系统中保存数据一次左右,以备份缓存数据进行灾难恢复

如果您正在寻找一个完全管理的服务,AWS提供“步骤功能”来满足您的有状态需求:

这一切都取决于架构师。如果是数据库,所有主机都可以访问吗?还是会有另一个micoservice负责数据库交互?高速缓存/共享内存?其他主机(您所说的salable cluster)如何在不知道信息在哪里的情况下通过网络访问这些信息?是的,这是一个关于架构师的问题,您是对的。如何构建这样的架构师,有什么最佳实践吗?例如,使用zookeeper进行编排