Network IO Interface has been edited by Aidan Skinner (Jun 24, 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 filling up
  4. Specific changes to address those areas
    1. broker does not retain frames outside of the network buffer.
    2. brokers 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. Client side
    1. Define client interface
    2. Replace MINA ByteBuffer with nio ByteBuffer for portability
  2. Broker side
    1. Define broker transport interface
    2. Replace MINA ByteBuffer with nio ByteBuffer for portability

--------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]

Reply via email to