We need to build a system capable of processing 40,000 messages per second. No messages can be lost in case of any software or hardware failures.
Each message size is about 2-4Kb.
Processing of a message consists of validating the message, doing some simple arithmetical calculations, saving result to database and (sometimes) sending notifications to other systems.
Preferable software technology is .Net.
What software and hardware patterns are the most suitable for such task?
How much hardware will it require?