merhaba,

konu hakkında öncelikle yanlış yapılan noktaları belirtmekte fayda görüyorum.

- tek master game server : down olması durumunda tüm sistem down demektir.
- c# : bahsettiğiniz proje için oldukça kötü bir tercih olur. fazla ram tüketimi, external source bağlantı yavaşlığı ve ne kadar türevleri olsa da sizi windows'a mahkum etmesi.
- mssql : belki de en büyük yanlış. aşırı ram tüketimi, yavaşlık ve ön planda fazla write özelliği olan bir sistemde kolaylıkla sapıtması.
- load balancer : genellikle servis bazlı olarak özelleştirildiklerinden birçok limite takılırsınız. bunların başında da ram gelir. ihtiyaç duyacağınız balancing TCP load balancing olacaktır. 1 tcp paketi minimum 41B, maximum 64KB'dır. Dehşet bir tcp window ayarladığınızı ve paket size 1KB olduğunu düşünüyorum. Anlık olarak 100 milyon paket için o cihaz üzerinde sadece TCP request paketlerini alması için 100GB ram ayrılmış olmalı. Daha sonra bu paketi alıp arkadaki slave'lere aktaracak, response'ları alacak ve tekrar response edecek vs vs. bu arada 100milyon anlık tcp paketi çok çok abartı bir değer.

tavsiyelerime gelince;

öncelikle tamamiyle hiyearşik bir yapı tasarlamanız gerekir. ben size örnek 1 milyon anlık paket için bir yapı önereyim.

- öncelikle gelen isteklerin tamamını tek sunucudan almanız mantıklı değildir. öncelikle balancing'i client tarafında yaparsınız. bunun da en kolay yolu DNS'tir. Bölgesel DNS sunucuları ve DNS load balancing ile öncelikle istekleri bölersiniz.

- DNS sorgularının karşılarında "master game server" farm kullanırsınız. 1milyon anlık istek için 32 GB ram'li 4 adet "master game server" kullanabilirsiniz. arka tarafta ise, child game server'ları forge edersiniz. ilk aşamada ihtiyaç duyduğunuz kadar.

- Bu aşamada sadece 3 aşamalı bir yapınız var. DNS, master game server farm, child game servers . Son aşamada ise child server'ların bağlantı yapacağı veritabanı sunucusu bulunur. Veritabanı sunucusu dediğime bakmayın, saklanacak veriye göre farm' da olabilir.

- programlama diline gelince, ben klasik biriyim bu nedenle önceliğim c veya c++ olur ancak şayet bu dillere hakim değilseniz, javascript veya go da olabilir. ama java derseniz (benim şahsi fikrimdir) game server yapısını bırakıp limon satın.

- veritabanı yapısına gelince SQL yapılı bir sistem sizi zora sokar. noSQL veritabanı sistemlerini inceleyebilirsiniz. mongodb tavsiyemdir. böyle bir sistem için redis mecburidir aynı zamanda. SQL tarafını sürekli saklamalar için kullanabilirsiniz.

sanırım bu kadar şimdilik.