我有一个服务器应用程序,它稍微简化了,它定期通过一个不够强大的服务器的 rest-api 进行测量。这些值应该在本地缓存(并且带有时间戳/不可变),可以存储为FloatBuffer,其中每个位置对应于一个测量样本。有一个 webbrowser 应用程序会定期发出 ajax 请求来更新网页上的一些整洁的统计信息,如下图所示:
假设服务器已经启动并运行,还有很多地方可能会出现错误
- REST 测量服务器可能无法访问(服务器只是在本地存储测量值)
- 与测量服务器的网络连接可能已断开
- 存储可能已满或以某种方式损坏
- 浏览器可能会失去与服务器的联系并尝试再次使用它
我处理错误的一般策略应该如下:
如果通过 REST 从测量服务获取值时出现问题,则应该每分钟重试一次。如果错误持续超过 30 分钟,则应通知管理员。如果出现磁盘问题,应立即通知管理员,或者最好在磁盘变满之前通知管理员。
最终用户体验应尽可能对错误透明,但应用程序仍应尽可能正常运行,通过通知用户发生错误并显示可用的最新数据。
关于网络问题(通过由作业触发的代理使用clj-httpScheduledThreadPoolExecutor
发出 REST 请求)以及尝试刷新磁盘时的磁盘问题,我如何找到要处理的错误FloatBuffer
?
什么是实现上述相当有状态但算法策略的明智方法?我应该在报告错误时简单地处理错误agent
并切换到某种恢复模式作业吗?