Discuss / Java / 因为我们要实现的交易引擎是100%全内存交易引擎,因此所有用户资产均存放在内存中,无需访问数据库 ?

因为我们要实现的交易引擎是100%全内存交易引擎,因此所有用户资产均存放在内存中,无需访问数据库 ?

Topic source

老师您好,两个问题想请问下:

1)服务挂了,用户资产 保存在哪里,又该如何恢复到内存? 

2)分布式的情况下,有没有本地缓存一致性问题?我们何如解决。

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

玩过游戏吧,定时存档/恢复存档。定期把内存状态刷到硬盘,崩了重启时读状态。

你需要理解什么是缓存一致性。

final ConcurrentMap<Long, ConcurrentMap<AssetEnum, Asset>> userAssets = new ConcurrentHashMap<>();

主要是咱们针对于资产是在这个内存管理,包括api查询资产 都是从这个内存表查询的。

我主要没有看到在哪里实现内存恢复,也不知道这个资产金额从哪里来? 如何刷到这个内存表!也没有看到相关用户资产的数据表。我不知道我理解对不对。

我理解在系统重启的时候,需要把用户资产表数据,刷到内存表?所有资产运算在内存中实现。在清算的时候定时 再将资产 落库到磁盘?


  • 1

Reply