I would like to build a system for horse racing, which is capable of getting data from various exchanges, do some analysis and then place bets. Since the system can make hundreds of bets at the same time, we need the system to be highly scalable. Initially the system should support Betfair & BetDAQ and should have the facility to integrate other betting exchanges easily. The system should also be capable of placing bets for multiple users in different races at the same time.
I would like the system to be designed in a modular fashion. These may include
1. A module to retrieve data from Betfair exchange in short intervals.
2. A module to retrieve data from BetDAQ exchange.
3. A highly scalable module which can place 1000's of bets to Betfair exchange for different users and keep track of them.
4. A highly scalable module which can place 1000's of bets to BetDAQ exchange for different users.
5. There should be a middleware module, whose job is to read a table which contains the user login details, and their selections on each horse race which should use all the above 4 modules. The middleware module should contain a simple logic where it reads the users selections and should check for the current odds and if the odds are within the range, then only it should place the bet for that particular user.
All the retireved data from exchages and also bets placed/modified/cancelled data should be recorded in MySQL DB.
Those who has experience in Betting exchanges with knowledge of architecting similar multi-threaded applications are welcome. I would like this application to run as windows service and should have different logging capabilities. Others please excuse. Also, if you can give the bidding amount separately for each module, that would be of great help to me.
I would like this project to be developed in C# and the coding standard has to be followed.
Please feel free to write back to me, if you have any questions.