That's a very clear explanation of how the Buffer Server fits into the
rest of the system.

Thanks Vlad.

Ram

On Sun, Nov 15, 2015 at 7:18 PM, Vlad Rozov <[email protected]> wrote:
> Small correction or clarification - two (or more) operators that are
> connected by a stream that is neither THREAD_LOCAL or CONTAINER_LOCAL pass
> data using a buffer server. Upstream operator (publisher) sends data to the
> buffer server and buffer server sends data to downstream operator(s)
> (subscribers). In the current implementation of the buffer server there is
> no assumption that it resides in the same container as the upstream
> operator, so the communication is implemented using network library
> (Netlet). At the same time to avoid complications with fault tolerance and
> high availability buffer server is always deployed into the same container
> as the upstream operator and lifetime of the buffer server is the same as
> the operator and a fault in the buffer server will cause redeployment of the
> upstream operator and similarly a fault in the upstream operator will cause
> automatic redeploy of the buffer server. This leads to the first
> optimization that is already implemented in the buffer server -
> communication from the publisher (upstream operator) to the buffer server is
> going over local loopback (not an actual network device, but a virtual
> adapter). We are still paying price to pass data over multiple call stacks -
> from the publisher to the AbstractClient in the Netlet (connected using
> CircluarBuffer) and from the Netlet to the kernel TCP/IP stack (requires
> copying data from the JVM heap to direct buffers) and back from TCP/IP stack
> to the Netlet and to the buffer server.
>
> I filed APEX-259 to see how much gain we can get by further leveraging the
> fact that the upstream operator resides in the same container as the buffer
> server so data can be passed within the same process (instead of IPC) with
> BlockingQueue being one of the most efficient in process channel inside JVM.
>
> Thank you,
>
> Vlad
>
>
> On 11/13/15 11:19, Isha Arkatkar wrote:
>>
>> Hi all,
>>
>>     For APEX-259 (https://malhar.atlassian.net/browse/APEX-259), I am
>> exploring option of passing serialized tuples from publisher to buffer
>> server through a blocking queue.
>>
>> Right now, publisher and buffer server reside within the same container,
>> however, communication between the two goes though sockets. We want to
>> check if we get any performance benefit by changing this communication to
>> queue-based one.
>>
>> This is in exploration phase right now, but if we do see improvement, we
>> may want to provide it as a pluggable option.
>>
>> Please let me know your thoughts!
>>
>> Thanks,
>> Isha
>>
>

Reply via email to