Network IO Interface has been edited by Aidan Skinner (Jun 25, 2009).

(View changes)

Content:
  1. Problem statement
    1. memory usage - unbounded Mina buffers
  2. Overall solution
    1. fix buffer sizes
    2. unprocessed frames in one location only
    3. full network buffers on server use tcp flow control to prevent client writing more
  3. Areas which need to be addressed
    1. one heap per session vs total job heap
    2. push back on processing network traffic to client
    3. client needs to handle pause in network processing without OOM
  4. Specific changes to address those areas
    1. broker does not retain frames outside of the network buffer.
    2. network buffers are of a fixed, configurable, size.
    3. client does not retain frames outside of the network buffer
    4. client network writes block if the buffer is full
    5. see Producer flow control for more details of the higher level aspects of this, IO work is purely focussed on the network layer, not the AMQP semantics.
  5. Current requirements which need to be carried forward
    1. Buffer size tuning
    2. TCP nodelay toggle
    3. SSL - link level encryption, what about cert validation etc?
    4. Protect-io
    5. Multi-io
    6. Write biasing
  6. Plugability
    1. Define interface
      1. Decouple protocol handling from transport
      2. Allow arbitrary plugins to be loaded at runtime ?

Tasks

  1. Common
    1. Define common transport interface
  2. Client side
    1. Port to new common interface
    2. Replace MINA ByteBuffer with nio ByteBuffer for portability
  3. Broker side
    1. Port to new common interface
    2. Replace MINA ByteBuffer with nio ByteBuffer for portability

--------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to