Architecture 具有计划任务的可伸缩中间件?
我们正在设计一个中间件,它接受来自客户端的请求。这个中间件应该是可伸缩的,并且在负载平衡器后面 我们的中间件的主要工作是处理请求,并将其转发到外部服务器进行额外处理Architecture 具有计划任务的可伸缩中间件?,architecture,scheduled-tasks,middleware,Architecture,Scheduled Tasks,Middleware,我们正在设计一个中间件,它接受来自客户端的请求。这个中间件应该是可伸缩的,并且在负载平衡器后面 我们的中间件的主要工作是处理请求,并将其转发到外部服务器进行额外处理 我们需要考虑的是计划处理< /强>;例如,可以将特定请求安排为仅在将来的特定时间(例如,3小时后)转发 因此,它引入了持久化计划作业的需求;需要处理一台服务器宕机的情况,然后其他服务器仍然可以接收它 我们考虑过这一方法: 使用数据库存储来持久化计划作业 中间件有后台作业,定期查询数据库是否有任何挂起的作业需要发送 使用某种DB并发性
我们需要考虑的是<强>计划处理< /强>;例如,可以将特定请求安排为仅在将来的特定时间(例如,3小时后)转发
因此,它引入了持久化计划作业的需求;需要处理一台服务器宕机的情况,然后其他服务器仍然可以接收它 我们考虑过这一方法:公共作废执行(请求r){
睡眠时间(3小时);
活动。转发请求(r);
}
时态保留函数的完整状态。因此,即使在存在流程和其他基础设施故障的情况下,代码也可以保证执行。因此,任何一段时间(甚至几个月)的同步睡眠都是可以的
与这个问题没有直接关系,但我仍然认为值得一提的是,Temporal已经是一个中间件,它具有比您尝试实现的中间件更多的特性。所以我相信您实际上不需要实现自己的:)。我建议将应用程序设计为直接使用时态SDK