c1982 adlı üyeden alıntı: mesajı görüntüle
Hepsini okuyamadım post'un gerçekten uzun olmuş

Şu keywordlere bakabilirsin.

IIS + Application Request Routing (Clustered ortam için)
HAProxy + Nginx (IIS'in önüne static caching ve High Availability için)
Redis (.NET için Sessionları burada tutabilirsin ki Scale edilebilir sistem için bir session server önemli)
Yorumunuz için teşekkürler, fakat çok fazla terim var. Pek anladığım söylenemez. Kaynaklar sınırlı, türkçe kaynak pek yok gibi.

Redis'i neredeyse herkes den duyuyorum fakat ne olduğunu araştırmama rağmen hâlâ anlamış değilim. Bir nevi SQL Server gibi sanki.

foo adlı üyeden alıntı: mesajı görüntüle
daha afyonum patlamamışken böyle bir konu ile karşılaşınca afalladım. sanırım daha önceki konuda da yazmıştım birşeyler. burdaki sorularına basit, anlaşılabilir şekilde cevap vermeye çalışayım. bilinenlerin aksinde yabancı terim kullanmadan, biraz da sana araştıracak noktalar bırakarak;

1. tek veritabanının problem yaşatacağını söylemişsin ki, kesinlikle doğru. bunun için uygulaman gereken yöntem : replication

2. konu dışında bir açıklama yapayım. aynı anda birden fazla client'a bir iş yaptırmak istiyorsan, en kolay yöntemin adı : servis (service) . "oyun sunucularının client olduğu ve ayar değişikliklerini sorgulayıp alabilecekleri (get)" ya da "değişiklik yapıldığı zaman bu değişiklikleri tüm ya da belli oyun sunucularına gönderecek (push)" bir servise ihtiyacın var. en senkronize yöntem push'tur. (bu kelimenin okunuşu abes oldu, esnerken yazdım) şayet konu sadece ayar dosyaları ise, oyun olarak bakmaman daha mantıklı. ufak bir dosya senkronizasyonu da bu durumu çözebilir.

3. 6. cevaba bakabilirsin

4. çok çok basit olarak cluster yapısındaki servisler, birbirleri ile bağlantılıdır. load balancing'de ise bağımsızdır. senin yapın için kullanacağın load-balancing.

5. bilmiyorum.

6. senin sistemin için kullanabileceğin iki yöntem olduğunu düşünüyorum. öncelikle;

- 3. soruna "Client bağlandığı zaman rastgele bir server seçecek." şeklinde başlamışsın. Rastgele seçim durumunda senin düşündüğün problem ortaya çıkabilir. "sıralı" olarak atayabilirsin. kaba anlatımla bir sunucu dolmadan diğerine göndermez.

- diğer bir yöntem ise, havuz yöntemidir. oyun isteklerini havuza atarsın, başlayabilir oyuncu sayısı havuzda biriktiğinde, o oyuncuları oyuna alırsın. genelde bu yapının kullanıldığını düşünüyorum.

en basit en anlaşılabilir şekilde cevaplamaya çalıştım.
Sağolun hocam, diğer konu çok karışmıştı, tekrar açmak istedim bende.
Şimdi "replication" yöntemi sanırım db sunucularının aralarında senkronize olarak aynı bilgileri aynı işleri yapması. Bu cepte.

"push" yöntemini de araştırdım, diğer konuda da geçmişti. Sanırım bunu kullanacağım.


Herşey tamam, ama asıl sorun olan can alıcı şey, load-balancing nasıl yapılacak ? Windows server kullanacağımdan bir port'a 15K kişi bağlanınca artık port hatası veriyor. Bu da bir sunucuya 15k kişi bağlanabilir demek. 10M kişi için 1k sunucu demek. Ki olmaz da tanesi 50TL olsa 50k TL aylık ? o.O

Bu kadar gider yapmayıp, bu kadar kişiyi kaldıran sunucuları görüyoruz. Mesela agar,io server C++ ile yazılmış. Fakat yapımcısı bu konu hakkında pek detay vermiyor. Bunu örnek verme sebebim, tam istediğim çalışma prensibi olması.

Daha basit olmak gerekirse, C# ile Windows sunucu, MongoDB kullanarak, 5 adet sunucu ile en fazla kaç kişi kaldırabilir, nasıl yapılır ?