前后端的数据如何实时对接?

用户通过前端不断的添加任务,这些任务被压到数据库;然后,后端程序从数据库获取这些任务并执行。但是因为后端每次遍历数据库之间有个时差,导致有些任务创建后并不能立马被后端获取到,该任务也就不能立马执行了。如何让后端获取任务的过程中是实时的?

阅读 10.2k
4 个回答

只要是轮循就一定会有这个时间间隔。
mysql好像没有监听数据机制
你可以在前面加一层redis或者mq
1.前端添加任务
2.任务写入redis/mq,写入mysql
3.后端监听redis/mq,获取到任务执行,执行完成后更新mysql

mq就不用说了,都是监听
redis的用pubsub 来做
redis pubsub 用起来很简单。http://redis.cn/commands/pubs...
这样子后端执行任务的也可以搞并发

前端应该不能直接写数据库吧,前端应该是发送的请求,后端执行前端的请求,那么后端在完成写入数据库操作后,直接再发送一条请求执行任务的消息就行了。
当然这条消息也可以在前端收到写入成功消息后,再由前端发起,只是这么做显得不太合理,也浪费服务器资源。
这样后端执行任务的方式也不该是轮询,而应该改成监听响应。当监听到新任务的执行请求时,从数据库取数据,并添加到务队列中。

新手上路,请多包涵

前端应该不能直接写数据库吧,前端应该是发送的请求,后端执行前端的请求,那么后端在完成写入数据库操作后,直接再发送一条请求执行任务的消息就行了。
当然这条消息也可以在前端收到写入成功消息后,再由前端发起,只是这么做显得不太合理,也浪费服务器资源。
这样后端执行任务的方式也不该是轮询,而应该改成监听响应。当监听到新任务的执行请求时,从数据库取数据,并添加到务队列中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题