Join the ranks of soldiers in the American Army or the German Wehrmacht. Fight online with your friends and against your foes. Fight to become a war hero or rise through the ranks to command the armies of nations. Every man's actions has consequences for the outcome of the war.
So, it’s another happy day in the land of the Backend Programming Tyrannosaurus. I’ve made peace with the sheep; We were just too different, I suppose, but I’ll miss the wool. Anyhow, let’s talk about my other project, Y’know that game thing? We have servers! In fact we have lots of servers, that do different stuff, and I thought you might like to know what the hell that stuff is. Let’s have a look at a pretty picture, shall we?
Posted by Reto.KenSolo on Sep 12th, 2012

By Reto.masterdisaster17, Server Programmer
So, it’s another happy day in the land of the Backend Programming Tyrannosaurus. I’ve made peace with the sheep; We were just too different, I suppose, but I’ll miss the wool.
Anyhow, let’s talk about my other project, Y’know that game thing? We have servers! In fact we have lots of servers, that do different stuff, and I thought you might like to know what the hell that stuff is. Let’s have a look at a pretty picture, shall we?
What we’ve got here is… failure to communicate a server architecture. It’s designed to keep you, the players, happy. And when are you happy? You’re happy (or we hope you’re happy) when :
Note that there is no dedicated happiness server, that’s a function of the whole thing. But what does all this stuff actually do? Let’s look a moving a single assault team, as an example.
This architecture provides reasonably fast writes and blazing fast reads; When you request data from the system, your client will only have to wait for the clienthandler’s local in-memory database. When you write, your client only has to wait for the changes to be written to the RAM node, because disk storage is just queued up and happens when it happens (The observant reader will note that in the most extreme failure scenario, where a RAM node and diskstorage node fail simultaneously, this means that we could lose any data still queued. Happily, the diskstorage is pretty fast, and therefore the queue is never that long)
The design is completely modular; Every node you see on the diagram can run on its own machine, on the same machine in one process or on the same machine in it’s own process. This means that I can load up the entire thing on my workstation for testing, or I can deploy it to live where each node has its own dedicated hardware for maximum performance and reliability. When running on separate machines like that, each node is completely independent of the others; If a node fails for some reason, the other nodes will simply wait for it to come back online. In some cases, you might not even notice it happening.
See? Simple, really. I’ve left out a lot of important details; The Log service that lets all the nodes report status, performance and warnings to a central log. The statistics DB that keeps track of your history. The CronJobs that does all the things that are not player actions, the game manager that launches action games. There’s stuff in here for a second blog post, so that might happen :)
What a coincidence...I AM A TYRANNOSAUR!
i dont need no civil war!
i got the reference ;)