You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Arpit Agarwal (JIRA)" <ji...@apache.org> on 2014/06/16 22:50:03 UTC
[jira] [Commented] (HADOOP-10282) Create a FairCallQueue: a
multi-level call queue which schedules incoming calls and multiplexes
outgoing calls
[ https://issues.apache.org/jira/browse/HADOOP-10282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14032924#comment-14032924 ]
Arpit Agarwal commented on HADOOP-10282:
----------------------------------------
Hi Chris, all the Jiras HADOOP-10279, HADOOP-10281 and HADOOP-10282 just add new files.
How are they meant to plugin to the existing code? Perhaps I forgot some context on the changes so if this is described elsewhere, can you just give me a pointer?
Thanks!
> Create a FairCallQueue: a multi-level call queue which schedules incoming calls and multiplexes outgoing calls
> --------------------------------------------------------------------------------------------------------------
>
> Key: HADOOP-10282
> URL: https://issues.apache.org/jira/browse/HADOOP-10282
> Project: Hadoop Common
> Issue Type: Sub-task
> Reporter: Chris Li
> Assignee: Chris Li
> Attachments: HADOOP-10282.patch
>
>
> The FairCallQueue ensures quality of service by altering the order of RPC calls internally.
> It consists of three parts:
> 1. a Scheduler (`HistoryRpcScheduler` is provided) which provides a priority number from 0 to N (0 being highest priority)
> 2. a Multi-level queue (residing in `FairCallQueue`) which provides a way to keep calls in priority order internally
> 3. a Multiplexer (`WeightedRoundRobinMultiplexer` is provided) which provides logic to control which queue to take from
> Currently the Mux and Scheduler are not pluggable, but they probably should be (up for discussion).
> This is how it is used:
> // Production
> 1. Call is created and given to the CallQueueManager
> 2. CallQueueManager requests a `put(T call)` into the `FairCallQueue` which implements `BlockingQueue`
> 3. `FairCallQueue` asks its scheduler for a scheduling decision, which is an integer e.g. 12
> 4. `FairCallQueue` inserts Call into the 12th queue: `queues.get(12).put(call)`
> // Consumption
> 1. CallQueueManager requests `take()` or `poll()` on FairCallQueue
> 2. `FairCallQueue` asks its multiplexer for which queue to draw from, which will also be an integer e.g. 2
> 3. `FairCallQueue` draws from this queue if it has an available call (or tries other queues if it is empty)
> Additional information is available in the linked JIRAs regarding the Scheduler and Multiplexer's roles.
--
This message was sent by Atlassian JIRA
(v6.2#6252)