I am designing a web application (a game) and plan to use C#/.Net for implementation. I have concerns about scalability and performance given what I want to achieve. Here goes the app.
There is a virtual world consisting of many kingdoms. Wars take place among these kingdoms for supremacy. As the game is played on I want to display the exact population of the world in real time, i.e. when people are born population increases and when they die in war (or otherwise) it decreases. Hence, my problem boils down to a number which is updated by potentially thousands of gamers and displayed on the web page. How do you manage this in real time. Storing the number in a database will probably not work as it needs to be updated so many times concurrently. What other techniques can be used? Is this a candidate for No-SQL database, memcached, Hadoop? Any suggestions?
Many thanks.
A good approch to writing a heavily concurrent application
118 Views Asked by Redzon At
1
There are 1 best solutions below
Related Questions in .NET
- file download method in visual studio 2017
- Repository manager receives the wrong connection string in .net core
- MongoDb not connecting C#
- The current .NET SDK does not support targeting .NET Core 6.0. Brand new WPF Project VS Community 2022 17.9.5
- Why Scanning GSI on DynamoDb doesnt work as fast as expected when using CONTAINS?
- Are "blittable types" really unmanaged types for StructLayout Sequential
- Failed to fetch dynamically imported module on Blazor JS Interop
- Problem to upload several images per one request
- Implementing Azure AD B2C Authentication in .NET 8 Blazor Project (RenderMode: InteractiveAuto)
- Stripe connect payout - throws exceptions
- 'IOException: The cloud file provider is not running', when trying to delete 'cloud' folder
- Azure Application Insights Not Displaying Custom Logs for Azure Functions with .NET 8
- Convert C# DateTime.Ticks to Bigquery DateTime Format
- Socket.io nodejs server .NET connection
- Producer Batching Service Bus Vs Kafka
Related Questions in CONCURRENCY
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- Multiple Processes, Multiple Processors, Single Priority Queue - Java Thread-Safe and Concurrency -
- Efficiently processing many small elements of a collection concurrently in Java
- Zig Concurrency Vs Erlang Concurrency, is Zig less efficient than Erlang?
- Two Update statements on a row are running simultaneously with no locking in MYSQL
- How to Identify Specific Transaction Anomalies in a Given Schedule?
- How can I improve concurrent message processing with Google Task Queue?
- Why does the following program printf "thread 1 exists" twice in WSL2?
- ModelState.IsValid is false when its Data Model Concurrency Token is non nullable
- .NET A second operation was started on this context instance before a previous operation completed
- Can someone tell me what's wrong with mi Task.await?
- I am a beginner. More than problems, I have ideas I share my code ;D. NO RULES
- Understanding Potential Deadlock in Resource Pool Implementation Described in "Go in Action"
- Why are pre-allocated stacks expensive, given 64-bit virtual memory?
- Concurrency issues with server-sent events in Python
Related Questions in NOSQL
- In Redis Databases how do we need to calculate the table size
- DynamoDB structure recommendation
- Efficiently read Firestore's document reference field contents
- Removing blocked users from the pipeline with lookup in mongodb
- Make a Cluster without using MongoDB Atlas
- MongoDB: Reading a large file vs uploading in a collection
- Mongo DB find objects (arrays) from Object
- Horizontal scaling strategy with 10,000 shards
- MongoDB aggregation - sum of array of nested objects
- how to configure mongodb to always cache 100% of a collection on RAM?
- Mongo Db global filter with C#
- TypeORM/MongoDB - sort collection
- Use Mongo $text search in limited set
- Not a value in projecting or not projecting MongoDB
- Which database management system should I use for this task?
Related Questions in SOCIAL-GAMING
- Where would one start learning how to make a moderator bot/banlist program for starcraft 2?
- Random Number Generator as Dice
- moving a crosshair in Games
- Phaser javascript white screen problem in game
- Trying to fix a script for a game I play (Wizard101 Auto Farming)
- Automatically read video and trim
- How can i respawn falling platform
- How do I make it so cells in excel randomize a range of numbers when I select a drop down item in another cell?
- Java Formatter issue
- Python coding for online Game - Pizzeria chose story Game.
- How do I turn off an autohotkey script when I press enter to chat in games?
- Events with ruby on rails
- Streamline Facebook and Google Play Game Services integration in Android Game
- Efficient video game server data storage?
- Resume Mobage Login Screen in android
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It probably isn't a good idea to 'push' updates to the client, since this will clog the network when traffic gets high. Instead, you should query the population every second or so, so this moves any bottlenecks to the server's CPU, which is generally faster than the network connection.
You probably will need some kind of database to store population data, since you need to keep track of population between queries.
This approach also prevents the client's data from becoming corrupted, as instead of increments/decrements, the data is replaced each time.