[JDEV] im unified
Thomas Charron
tcharron at ductape.net
Fri Sep 1 09:58:04 CDT 2000
Quoting Thomas Muldowney <temas at box5.net>:
> This disbelief in TCP/IP just doesn't make sense. I'm very aware of the
> scaling issues surrounding TCP, but moving to UDP is almost a fundamental
> flaw
> for an IM system. IM needs the ability to gurantee delivery, and keep it
> real
> time. UDP can't intrinsically give this, and therefore, in my opinion, is
> flawed.
Technically, TCP doesn't provide this either. It *LOOKS* and *FEELS* like it
is, but it doesn't. It merely serves as a buffer to put the data back in the
right order, and rerequest packets when needed, and after a given timeout,
closing the socket for one of several reasons. This is an IP limitation, *NOT*
a TCP vs UDP limitation. ATM provides these capabilities. TCP looks and
feels, but isn't. That's the basic counter. Basically, if you implement code
the keep track of packets and delivery, or the TCP stack does it, the end
result is the same. The catch is, if you can manage to handle the UDP packets
better (with faster speed, and less memory) then the TCP stack can. In some
cases, yes, you can, in others, well, let's not talk about them, they're
scary. ;-P Doing so in an efficient manner also pretty much requires that you
also have the capabilities of an SMP based machine. No arguments that on a
single processor machine, TCP is a better way to go, becouse you *WILL* run out
of resources before TCP connections. But on a Sun Enterprise 6500, the inverse
is true.
> Wehn you start writing this ability on to UDP your just creating
> a slower system, and then start to mess with that real time nature. The
> other
> major item of interest is that we're not even limited by the socket count,
> in general your going to find RAM and CPU issues before you find conn limits.
> I'd be happy to discuss scaling further, as I'm working on scaling the
> server to 10million users.
See above. To serve up 10 million users, you'd have to anticipate in the
internet world that perhaps 5-10% of your users will be on concurrently. This
brings you between 500,000 - 1,000,000 simo connections. On a TCP, non SMP
based platform, this would require 42-84 farmed machines, without even taking
into consideration reduncy, and having 12,000 users per machine.
Now, with a UDP based implementation, you could easily scale this to 3
Enterprise 6500's. Base cost wise, more money will be spent on the E 6500's,
hands down. Based equiped, that's gonna run 300,000 - 400,000 $$, which could
easily buy you 150 Intel Linux boxes. The issue then becouse support costs,
administration, repair, cool, electrical consuption, etc. Overall, the same
cost is used for either solution. The only issue is, 150 machines takes up
alot more space then 3 E6500's.
Basically, both sides are right. It just depends on the approach you take.
Big boxes = UDP can handle more. Many small boxes = TCP.
---
Thomas Charron
<< Wanted: One decent sig >>
<< Preferably litle used >>
<< and stored in garage. ?>>
More information about the JDev
mailing list