Server clustering.
Hi, all, I guess this is a common problem, but I can not find any thread from the FAQ or the forum. It's: how to cluter physical servers so that they appear to be a single "logic" server that is visible from outside. I know there are some solutions for this, like LVS. But few discussions are found on this topic. Does anyone have any good ideas or any good resource for this? Thanks. Gangcai
Do you want a truly NUMA system (non-uniform memory architecture)? Or do you just want a single IP address to load-share onto multiple servers?
NUMA is pretty hard to program for good performance on high-end back-bone servers; it gets even harder to program if the nodes are just Ethernet connected. There are some applications where it makes sense, but most of the time, it's easier and cheaper to just treat the separate machines as separate machines.
For load sharing, there's lots of routers or gateway servers that can do that for you.
NUMA is pretty hard to program for good performance on high-end back-bone servers; it gets even harder to program if the nodes are just Ethernet connected. There are some applications where it makes sense, but most of the time, it's easier and cheaper to just treat the separate machines as separate machines.
For load sharing, there's lots of routers or gateway servers that can do that for you.
enum Bool { True, False, FileNotFound };
Thanks for the reply.
I mean that there is only one "instance" of the world at any time. Any player in the world can communicate with anybody else in the world (if permitted). There is no seperated game worlds, no migration of characters among servers. No matter how may servers are required to support the world, the client only sees a single consistent world, since mechanisms like load balancing are totally transparent to the clients.
I mean that there is only one "instance" of the world at any time. Any player in the world can communicate with anybody else in the world (if permitted). There is no seperated game worlds, no migration of characters among servers. No matter how may servers are required to support the world, the client only sees a single consistent world, since mechanisms like load balancing are totally transparent to the clients.
There are many ways to cluster computers, the way I'm designing my cluster is to have one machine be what users initially connect to, this computer will do the authentication for the product, and the login, then the user will get passed off to another node of the cluster, and this is where all the packet forwarding gets handled. The zones in your game world should be small enough so that each node can handle several zones. Then nodes should be able to pass around zones to balance the load so that each node has relatively equal share of the work.
In a client/server game, you've got control of the client as well as the server. So you can make it do whatever you need to, to load-balance over servers, use fail-over, or whatever.
So you don't actually need to make it appear "as a single server" at all, as long as the players don't have to physically do anything for it to work.
Mark
So you don't actually need to make it appear "as a single server" at all, as long as the players don't have to physically do anything for it to work.
Mark
There are significant system-level hurdles to trying to make a distributed cluster of servers look like a "single system" to the software. After all, things in local memory are 1,000,000 faster to access than things in remote memory. Thus, most implementations that achieve high performance pay the price of deriving code structure based on locality. To the user, it still seems like a single server, but in the software, you deal explicitly with the fact that you're distributed.
enum Bool { True, False, FileNotFound };
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement