Building high performance distributed systems that scale massively and remain reliable and secure is an extremely difficult task. This book is the first of its kind as it approaches engineering the middleware needed to build such complex systems as an application-whole. The design decisions and the trade-offs made are analyzed and discussed in great depth so the reader can truly understand the advantages and disadvantages of the specified approach. This is an important concept overlooked by most books. This book presents relative performance metrics of controlled test applications that explore alternate approaches which support the varying design goals. Using this information the reader can easily determine the true scalability and/or real-time performance cost of trading off for security, simplicity, and extensibility.
Throughout the course of the book the reader will learn how to design and implement a custom real-time networking layer in C# with the four following goals in mind:
- Real-time performance for all clients
- Extreme scalability supporting thousands of clients
- Strong security through effective yet lightweight cryptography
- No single point of failure fault tolerance
- By the end of the book, a complete, reusable solution in C# is constructed. Most design decisions that went into the architecture will have been discussed, and trade-offs analyzed, thereby allowing the reader to extend and reuse the solution to meet their future needs and varying requirements.
To achieve this, several key areas will be discussed:
- Tenets of Scalability – What it means to be scalable, and how it is achieved through an iterative process.
- Bandwidth Conservation – Squeeze every byte out of the pipe that you have tthe point where you are not simply pushing the problem onto other resources.
- Effective Cryptography – Build a secure-enough implementation that is effective yet lightweight and thereby has less impact on scalability.
- Layered Protocol – Design a custom UDP protocol stack that meets the specific needs of a highly scalable real-time system.
- Server Architecture – Design and implement a highly scalable server framework which supports multiple connection types (TCP, UDP, multicast) through various network topologies (firewalled, HTTP relay, wireless, etc)
Comments