并发队列实现

文章目录

每次提交的任务先走到内部队列,在livy执行完成后有资源的情况下将队列的任务提交到livy

同时使用future等待的特性,最大增加并发能力

使用的算法是 令牌桶来实现 还有漏桶的算法也一起介绍

异步队列

  1. 特定节点的阻塞等待,因为是基于Servlet ,目前阻塞但是不用一直去轮询可以等待回调结果

​ 如果是reactio下的springflux 的异步的容器应该效率可以提高更快

  1. 同时对于队列的任务执行依赖于 caffine或者其他的管理
  2. 对于实际执行的livy的任务时间执行情况依赖于定时轮询这个需要优化为回调或者勾着函数来拿到对应结果

a服务调用B服务需要阻塞等待拿到结果有几种方式来实现

  1. 同步阻塞调用 (Synchronous Blocking) 调用接口阻塞等待返回结果 调用方调用接口实时返回
  2. 异步**回调** (Asynchronous with Callback**)** 阻塞轮询拉到结果后执行 ,接口能有注册回调的的函数或者接口
  3. 阻塞**轮询** (Blocking Polling**)** 触发后异步等待回调后触发后续的计算和执行,需要额外的状态接口
  4. 基于**消息队列**的请求/响应模式 (Request/Reply over Message Queue**)**
  5. Future/Promise 的异步阻塞 (Asynchronous Blocking with Future/Promise) 拿到Future后 执行其他任务需要结果的时候 future.get()等待结果

img