Allow multiplexing multiple services over a single TCP connection
-----------------------------------------------------------------

                 Key: THRIFT-66
                 URL: https://issues.apache.org/jira/browse/THRIFT-66
             Project: Thrift
          Issue Type: New Feature
          Components: Library (C#), Library (C++), Library (Cocoa), Library 
(Erlang), Library (Java), Library (Perl), Library (Python), Library (Ruby)
            Reporter: Johan Stuyts


The current {{TServer}} implementations expose a single service on a port. If 
an application has many services many ports have to be opened. This is 
cumbersome because:
- you have to document which service is available on which port, and 
remembering the port numbers is difficult
- to prevent the overhead of connection setup on each call, a client has to 
maintain to many connections: at least one to each port
- it requires opening many ports on a firewall if one is between the client and 
the server.

By multiplexing multiple services on a single port the problems above are 
resolved:
- instead of a port number a symbolic name can be assigned to a service
- a client can maintain a small pool of connections to a single port
- only one port has to be opened on the firewall

The attached Java implementation simply wraps a normal {{CALL}} message with a 
(new) {{SERVICE_SELECTION}} message. It is not necessary to modify or wrap the 
response. No changes are needed to the generated classes. Only a new type of 
server is introduced, and an invocation handler for a dynamic proxy around the 
{{Client}} classes of services is provided for the client side. The 
implementation does not handle communication errors (invalid data, timeouts, 
etc.) yet.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to