有一个业务场景,要在两个系统中同步一个大容量的Map数据(在内存中),大约100兆+,A系统请求B系统使用FeignClient请求,但是耗时有点长,会影响用户体验,另外耗时长在系统上会有什么不好的影响吗,有什么其他方式来应对这种大数据量传输的场景呢?
暂时能想到的办法是将map分成n片小map,然后A系统需要同步时开启n个线程去访问系统B,不过map分片好像不太好分,而且B系统的map数据是在实时变化的,分片再传输有可能造成数据丢失。
有没有一种类似数据库的游标的实现方式,得到一点数据就处理一点数据?
请大佬赐教。🙏
提供一个思路:
ServletOutputStream
ServletInputStream
,手动读流,按服务端分块规则拆分,每次只读一块,边读边处理。这一套操作,虽然比较麻烦,但内存占用低,也实现了增量处理