FAQ

[Thrift-user] Multiple interfaces handled by the same TServer

Nevo Hed
Mar 10, 2011 at 7:36 pm
*Is the one port essential or is the desire just to run in a single thread?
*

THRIFT-563 looks like a great idea, but requires mods to clients

a few days ago I realized that I may need to use a similar solution soon,
so I looked at TNonblockingServer (uses libevent)

I figured one could create a server that can create multiple TNBS instances
and link them to this server.

This new server's 'serve' method would share a single eventBase_ (from
libevent).

Yes, I would have multiple ports, but a single threaded

Did I miss anything?

Thanks
-Nevo



On Mon, Feb 28, 2011 at 6:06 PM, Marlene Marques
wrote:
Hi,

I went through the issues in the project and found a ticket about
multiplexing services [1], that looks like one of my approaches. I was
curious why it wasn't committed. Is it for lack of support in other
languages or you think the feature isn't worthy.

[1] - https://issues.apache.org/jira/browse/THRIFT-563

On Mon, Feb 14, 2011 at 5:24 PM, Tony Kinnis wrote:
This is not exactly what you were looking for but as an alternative you can
emulate this over HTTP by mapping your different services to URLs. Of course,
you'll have additional overhead with HTTP but you can support many different
services on a single server:port. I am currently doing this using Netty as my
http server and it works very well.


----- Original Message ----
From: Bryan Duxbury <bryan@rapleaf.com>
To: user@thrift.apache.org
Sent: Mon, February 14, 2011 8:25:39 AM
Subject: Re: Multiple interfaces handled by the same TServer

There's currently no clean way to do this. A while back, there were some
proposals on how we could support this directly, but they did not get fully
implemented. I think it was James King and his "channels" proposal that you
might want to look for in the mailing list archive.

On Mon, Feb 14, 2011 at 5:05 AM, Marlene Marques
wrote:
Hi,

Can I have more than one interface being served by the same TServer?

I'm using a TServerSocket and wanted to have more than one interface
being served in the same port.
I started to implement a TProcessor that has a processMap with the
methods of all the interfaces, but now I have a naming collision and
can no longer use this approach.

To get things going I had a prefix to the operations of each
interface, but that feels like a really bad hack.
I also went to change the generated code to have the prefix only in
the process map and the TMessage, but this is not a better hack, since
now I can't give my idl to someone to implement a client that works
with my service.

Thanks,

Marlene




--
Nevo Hed

nhed@bamboo-entertainment.com
617-302-6175
reply

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 5 of 6 | next ›