Presentation Title

Communication Method
Group Name: ARC
Source: Jiaxin Yin, Huawei Technologies Co., Ltd. , [email protected]
Meeting Date: 2015-8-12
Agenda Item: TBD
Background
• Currently we support three modes of communication
– blocking synchronous
– non-blocking synchronous
– non-blocking asynchronous
• Determined by the ORIGINATOR by setting the Response
type parameter in the Request.
blocking-synchronous
Originator
non-blocking synchronous
Receiver
Request
Originator
Receiver
Request
Handling
non-blocking asynchronous
Originator
Receiver
Request
Response (ACK)
Response (ACK)
Handling
Response (result)
Request(Retrieve result)
Response (result)
Handling
Notify(result)
Response
• Case 1:
Issue
– The originator initiates blocking request, but it takes longer than usual
for the receiver to respond.
– The originator has to terminate the connection after all the time
waiting without any result
• Case 2:
– The originator expects the request may take long time, thus initiates
the request using non-blocking.
– However the receiver happens to be quite efficient, the result is ready
almost immediately
– Instead of piggyback the result, the originator has to start an
ADDITIONAL request to retrieve the result
• Case 3:
– Part of the result is available immediately.
– It takes longer to wait for the other parts of the result.
– The value of the margin result become less and less, however, time
spent on those result is still growing.
Cause of the issue
• The information between the client and the
server is asymmetrical
– Client never know if the server is heavily loaded or not
– The server is unable to guess the intention of the
client
– The server itself is hard to tell how long it will take to
handle this request.
• Current communication method only provides
solution at the two end points.
– Either blocking or non-blocking
– Either prepare the whole result or nothing
Proposal
• Besides the current mechanism
• Introduce one mode between blocking and nonblocking: flex
– If the server finds himself heavy loaded, ACK the request
and deal with the request at some other time.
– If the server is OK at the moment, piggyback the result
directly.
• Introduce one mode between whole resource and
nothing: partial
– Piggyback the quickest result in blocking mode but also let
the originator know how to retrieve the other following
result
– The retrieval of the other result is in non-blocking mode.
Questions and comments?