【发布时间】:2012-12-13 18:18:28
【问题描述】:
我有一个服务器应用程序,它在某种程度上简化了,它定期通过 rest-api 从一个不够强大的服务器进行测量。这些值应该在本地缓存(并且带有时间戳/不可变),可能存储为FloatBuffer,其中每个位置对应于一个测量样本。有一个 webbrowser 应用程序会定期发出 ajax 请求以更新网页上的一些简洁统计信息,如下图:
假设服务器已经启动并运行,还有很多地方可能会出错
- REST 测量服务器可能无法访问(服务器只是在本地保存测量值)
- 与测量服务器的网络连接可能已断开
- 存储空间可能已满或以某种方式损坏
- 浏览器可能会失去与服务器的联系并尝试再次使用它
我处理错误的策略一般应该如下:
如果通过 REST 从测量服务获取值时出现问题,则应该每分钟重试一次。如果错误持续超过 30 分钟,则应通知管理员。如果出现磁盘问题,应立即通知管理员,或者最好在磁盘满之前通知管理员。
最终用户体验应尽可能对错误透明,但应用程序仍应尽可能正常运行,通知用户发生错误并显示可用的最新数据.
关于网络问题(使用clj-http,通过ScheduledThreadPoolExecutor 作业触发的代理发出REST 请求)以及尝试刷新FloatBuffer 时的磁盘问题,我如何找到要处理的错误?
什么是实现上述相当有状态但算法策略的明智方法?当agent 报告错误并切换到某种恢复模式作业时,我是否应该简单地处理错误?
【问题讨论】:
-
感谢指点!但是,我意识到我真的在寻找任何类型的 java 服务器实现(我想从头开始制作整个解决方案)。我要去码头和/或Tomcat。再次感谢。
-
同时,我将仔细研究必要的邪恶故障处理:github.com/brehaut/necessary-evil/blob/master/src/…
标签: java exception clojure agents