java 对于一些数据的持久化

发布于 2021-11-30 10:33:37 字数 341 浏览 783 评论 11

程序流程是这样的:

socket客户端接收一批报文, 调用某个接口对这些消息进行处理

要求接收报文后,所有数据在异常情况下保存,例如 memory mapped file 

当我服务器挂掉时,这部分已接收但是没有被处理的数据,能在重启后,接着被处理,而不是重新请求数据再次接收 ,各位大神,这个功能怎么实现 


客户端接收一批报文, 调用某个接口对这些消息进行处理
服务器挂掉时,这部分已接收但是没有被处理的数据,能在重启后,接着被处理,而不是重新请求数据再次接收   此处不用数据库 数据不容易丢失的方法才行

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

把回忆走一遍 2021-12-01 06:23:31

不知道你这个错误率是多大的,写磁盘频率有多高。如果频率不是很高,写磁盘对性能并不会造成很大的影响。除非你的应用并发很高,出错率也很高,那你倒是可以考虑消息队列。要不然成本有点高。

冷弦 2021-12-01 06:23:31

接收消息为实时,如果实时操作文件IO的话 我个人感觉 为了这么个预防的功能,拖低了整体的运行效率了吧?

无声静候 2021-12-01 06:23:30

你说的服务器挂了是指接口的服务器吗。

其实你可以把报文的消息写文件到你的本地磁盘,在发生异常的时候。在判断接口服务是否恢复,在读取本地磁盘的未被处理的报文数据,在重新执行接口调用。执行成功后在把文件删除。

巡山小妖精 2021-12-01 06:23:25

谢了 我自己考虑的也是使用中间件存储

情场扛把子 2021-12-01 06:22:56

引入中间件吧,比如消息队列,在收到请求后,先将报文放入中间件,并持久化,后面的根据你的业务可以任意变化

毁梦 2021-12-01 06:22:10

例如存放于磁盘吗? 现不考虑database 实时的话 是不是有点消耗性能了?

冷弦 2021-12-01 06:19:24

这个看自己业务,还有实现方式吧

傾城如夢未必闌珊 2021-12-01 05:37:14

是指? 类似于jms吗?

半世蒼涼 2021-12-01 05:23:05

是否可以做一个节点来专门保存用户发过来的报文,这个节点只是起到数据恢复作用。

够钟 2021-12-01 05:17:37

谢了 我自己考虑的也是使用中间件存储

醉生梦死 2021-12-01 00:15:45

消息中间件持久化存储,这个是比较成熟的业务方案

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文