Okay so I work on a server application that has multiple communication methods. Including but not limited to WCF, TCP and RESTFUL. These all share information with clients but recently we have been running into issues due to too many clients accessing data. This causes a delay and although we cache as much as we can we would like to look at some way of sharing the load between two servers or possibly more. More importantly if too many clients connect to the same instance it puts strain on some of the other operations running on there, this causes a problem because we are processing real-time data and things need to be done on time.
The best solution we could come up with is to create a new program/service that can run on a different server and consume data from the first server and then clients can connect to that new program/service IP and get the data from there. Although there will be some delay which is okay but in other cases data will have to be shared asynchronously as it's real-time data.
I was wondering if there was any way to run the same instance of a program across multiple clients? I am not referring to running the same program in 2 different places, this would cause issues with our data, because we use random numbers etc when generating and processing data. So if we were to run 2 instances of the same program each one would generate different data. Is this possible through running like a virtual machine perhaps? Or is there some library or .NET functionality that can be used to do this more efficiently?
NOTE: like I said the instance needs to be the same, 2 different instances would generate different data while clients need to be getting the same data. And although we use SQL at the moment we would not like to replicate the DB, we are moving away from that and creating our own file-based data store as our data has a very limited lifespan and the data itself is very limited.
Any pointers will be helpful on how to proceed
Thanks in advance