Thrift
  1. Thrift
  2. THRIFT-1915 Multiplexing Services
  3. THRIFT-66

Java: Allow multiplexing multiple services over a single TCP connection

    Details

    • Patch Info:
      Patch Available

      Description

      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.

      1. CalculatorImpl.java
        2 kB
        Johan Stuyts
      2. MultiplexTestClientMain.java
        3 kB
        Johan Stuyts
      3. MultiplexTestServerMain.java
        1 kB
        Johan Stuyts
      4. ReleaseWaitingReplyThreadsOnDisconnect.patch
        2 kB
        James E. King, III
      5. SharedImpl.java
        0.5 kB
        Johan Stuyts
      6. ThriftCSharpEndpointsChannels.zip
        264 kB
        James E. King, III
      7. Thrift Endpoints and Channels.vsd
        141 kB
        James E. King, III
      8. ThriftMultiplexInvocationHandler.java
        2 kB
        Johan Stuyts
      9. TMultiplexServer.java
        3 kB
        Johan Stuyts
      10. TMultiplexServer.py
        14 kB
        ruslan.usifov
      11. TSimpleMultiplexServer.java
        5 kB
        Johan Stuyts

        Issue Links

          Activity

            People

            • Assignee:
              Roger Meier
              Reporter:
              Johan Stuyts
            • Votes:
              13 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development