• 21-11-2015, 21:09:51
    #1
    Herkese Merhaba,

    Bu ilk üyeliğim ve ilk konum. Konu yeri doğru mu diye çok tereddüt ettim ve araştırdım. (Bende sevmem yanlış bölümde olan konuyu Eğer yanlış yerde ise çok özür diliyorum.)

    =====
    Okumayanlar için kısa ve öz sorum : Clash of Clans sisteminin arkasında tek veritabanı ile çalışan, java ile yazılmış sistemi klonluyorum. Yazılım kısmında sorun yok, ama ben tek .exe ve tek mssql kullanarak yapmak istiyorum. LoadBalancing ve Cluster gerekliymiş sanırım. 100 Milyon TCP/IP bağlantısını kaldırabilen bir server nasıl yapılır ?

    Şimdiden Teşekkürler...
    =====

    Bağlığı nasıl açacağımı bilemedim, google da nasıl arayacağımıda bilemedim. Uzun bir süredir server/client üzerinde çalışmaktayım. Çok başarılı birşekilde şifreli (Blowfish-3DES) bağlantı kurarak haberleşme sağlıyorum, ağ, android vs. Yaptığım Multi-Threaded server birden çok client ile çok iyi senkronize çalışmaktadır. TCP/IP ile bir "ping" paketi 15ms ile 30ms arasında aynı ağda gönderiliyor. Sizce çokmu fazla turn based tarzı oyun için ?

    Bir türk online oyun şirketiyle konuştum. Bana server yazılımının Go ile yazıldığını, arka planda ise distributed MySQL, Redis ve TSDB gibi farklı veritabanları kullandıklarını, DNS-based ve oyun sunucuları içinde her oyuna özel bir load-balance yazılımı olduklarını söylediler. Go ile çok kaynak da yok, yukarıda arkadaş da yazmıştı. Ben C# ile yazdım amacım tek veritabanı sunucusu olması, tek server yazılımı ile hosting api yardımı ile sunucu arttırıp azaltmak duruma göre. Her sunucuya server kurduğumu düşünemiyorum, 100 sunucu olsa, basit bir hata yüzünden hepsi ile yapmam. Genelde tek server programı oluyormuş. Amazon Web Service kullanmayı düşünüyorum, tek server programı ile gelen kullanıcıları aynı ayrı yoğunluğa göre farklı sunuculara yönlendirmek istiyorum. Fakat DDOS gelse tek sunucuda var server programı. Bu olayda kafamı karıştırdı. Sanırım benim ilacım load-balancing sanırım, terimi yeni öğrendim. Mesela Agar,io tek master server yazılımı varmış ve c++ ile yazılmış. 500k+ kişi kaldırabiliyormuş, ihtiyaca göre sunucuyu otomatik arttırıyormuş.

    Azure Powershell SDK ile biraz araştırma yaptım, sitesinde "Windows Azure™, Windows Azure platformunda geliştirme, hizmet barındırma ve hizmet yönetim ortamı olarak çalışan bir bulut hizmetleri işletim sistemidir. Windows Azure, geliştiricilere Microsoft® veri merkezleri aracılığıyla İnternet'te web uygulamalarını barındırmak, ölçeklendirmek ve yönetmek için isteğe bağlı işlem ve depolama hizmetleri sağlar. " yazmış.

    Linode şirketine ait nodebalancers diye birşey buldum. Sanki bu olacakmış gibi gözüküyor. Denemek için belki para veririm tek client ile binlerce client bağlantısı yaparım da bilemiyorum yani. Ama ben kurduğum işletim sistemlerini mi klonlayacak yoksa iport yönlendirmesi mi yapacak, yoksa boş sunucuya o programı kendi mi atacak hiçbir fikrim yok gerçekten. Adam tek başına bunu tek master-server kullanarak ihtiyaca göre artıp azalan şeklinde yapmış ve 382 serverdan 121'i aktifmiş. Adam server-side update yaparsa her sunucuya uzak bağlantı ile girip hepsine ayrı ayrı ayar çekip yüklemesi gerekir. Böyle birşey ile tek başına kimse uğraşmaz. Bir hinlik varda...

    Amazon Web Service'de Elastic olarak ismi geçmekte. NetScaler diye birşey keşfettim, üstte yazmıştınız scaler aynı şey olabilirmi ?

    Load Balance Broadband Router diye birşey buldum ve özelliklerini okudum. Tam istediğim şeyi belirtiyor. Super-Computing ??? CPU Çekirdek Sayısı x Toplam Server Sayısı = Toplam Çekirdek Sayısı ???

    Birde C# ile geliştirdiğimden dolayı Windows'a bağlı kaldım. Java'a çevirebilirim, C'de çeviremem çünkü çok fazla bilgim yok. Linux öneriyorlar hep, MSSQL ağır diyorlar. Bunu Xenon E5 E7 gibi işlemcilerle kapatabilirmiyim ? Windows'da güvenlik sorunu olduğu zaman programdan kontrol edip açılan zararlı portları kapatıp, kapanan güvenlik duvarını hemen açabiliyorum. Linux'da böyle bir şansım varmı ? i7 4720HQ bir işlemcide son derece akıcı windows 10 sunucuda sanki çok yavaşlayacak, MSSQL sorun çıkaracak, ve bu iki hosting firmasının windows sistemi yoksa mecburen değiştireceğim. Java'da bir hata olduğunda çözmesi biraz daha zor, visual studio gibi derleyici yok tabi. Ayrıca Java'dan güzel server olurmu, C#'e göre ? Linux'da çalışır zaten ?

    Şimdi ben tek server kullanırsam, belirli bir bağlantı sayısı port'ları dolduracak ve limite ulaşacak. Bu yüzden 2 veya daha fazla server ile tek veritabanı kullanarak (ID,PW,vs.) yada çoklu veritabanı kullanarak veritabanı saldırılarına karşı koruma için nasıl bir yol izlemeliyim ? Örnek verecek olursam, büyük online oyunlar, lol, coc binlerce sunucusu var ve veritabanı tek bir sunucuda kurulu değil. Öyle olsa çoktan çökertirlerdi. Çok senkronize çalışma sergiliyor, bunu tek server ile yapmıyorlar, tek veritabanı ile yapmıyorlar, nasıl oluyorda birden çok server yazılımını senkronize çalıştırıyorlar ? Hepsine tek tek sql kurup tek tek güvenlik ayalarını mı yapıyorlar ? O kadar kişi bağlanıyor TCP limit hiç geçilmiyor, milyonlarca kişiyi kaldırıyor. Bunu detaylı bir şekilde anlamam gerekiyor, bütün sorularıma cevap aramam gerekiyor. En ince ayrıntısına kadar anlatabilirmisiniz ?

    Soruları düzgün toparlayamadım kusura bakmayın, tekrardan teşekkür ediyorum.
  • 22-11-2015, 08:09:08
    #2
    "100 Milyon TCP/IP bağlantısını kaldırabilen bir server nasıl yapılır ?"

    1 tanecik mi?
  • 22-11-2015, 11:41:58
    #3
    SayfaNet adlı üyeden alıntı: mesajı görüntüle
    "100 Milyon TCP/IP bağlantısını kaldırabilen bir server nasıl yapılır ?"

    1 tanecik mi?
    Hayır tabiki, bende bunu soruyorum nasıl yapılır ? Mesela tek server yazılımı ve tek veritabanı kullanarak kaç sunucu gerekli, nasıl işlem yapılmalı vs.
  • 22-11-2015, 11:58:10
    #4
    Selamlar,
    Tam olarak yapmak istediğiniz bu mu emin olamadım ama;
    Load balancer kullanarak, milyonlarca connection'i arka taraftaki sunucu veya sunuculara dağıtırken one pipe ve benzeri future'lar ile (bunlar LB'nin future'i'dir) daha az connectionlara düşürebilirsiniz.
    Örn; 200.000 connection, LB'nin arka tarafındaki bir sql, web, vb.. sunucu veya sunuculara, bir pipe içerisinden 1000 connection'muş gibi gönderebilirsiniz.

    Bu tür senaryolarda ve connection sayısı falzla olduğu durumlarda tek sunucu hiçbir zaman performans sağlamaz, LB'nin arkasına en az 2 veya daha fazla sunucu konumlandırmak daha performanslı olacaktır.
  • 22-11-2015, 12:05:19
    #5
    En ince ayrıntısına kadar yazarak anlatmak malesef mümkün değil çünkü çok dağınık yazmışsınız ve sorular tam belli bile değil. Anladığım kadarıyla anlatayım araştırmanız gerekenleri.

    Dağıtık yapıda çalışacak bir oyun istiyorsunuz ve C# ile yazmışsınız buraya kadar güzel ancak eğer siz oyunu o dağıtık yapıda çalışacak şekilde yazmadıysanız binlerce sunucu da olsa tek sunucu da olsa bir şey fark etmeyecek. Öncelikle araştırmanız gereken konu "parallel programming for cluster systems". Oyundaki session nasıl sunucular arasında dağıtılır, veritabanını ve datayı nasıl tekilleştirebilirim gibi konular da ikinci aşama.

    Bir diğer yol ise hiç bir şeyi tekilleştirmeden ayrı ayrı sunucularda yolunuza devam etmek. 10 tane sunucunuz olur oyunu oynamak isteyen her kişi o an müsait olan sunucuya yönlendirilir. Counter-strike oynarken sunucu seçebilmeniz gibi bir mantık yani. Bunun için yapılması gereken de bu online yönlendirmeyi yapacak ayrı bir yazılım yapmanız. Ancak dediğim gibi farklı sunucular olur ve session sadece o sunucudaki oyuncular arasında paylaşılır.

    Yani kısaca tekrar toplamak gerekirse o yazdığınız oyun ben bunları sunucuya atayım da 20 30 sunucu birbiri ile çalışsın gibi bir mantık yok bu dağıtımı sizin yazılımınız yapmak zorunda. Altyapı araştırmasından önce bunu çözmeniz gerekir.
  • 22-11-2015, 16:18:06
    #6
    mehmetic adlı üyeden alıntı: mesajı görüntüle
    Selamlar,
    Tam olarak yapmak istediğiniz bu mu emin olamadım ama;
    Load balancer kullanarak, milyonlarca connection'i arka taraftaki sunucu veya sunuculara dağıtırken one pipe ve benzeri future'lar ile (bunlar LB'nin future'i'dir) daha az connectionlara düşürebilirsiniz.
    Örn; 200.000 connection, LB'nin arka tarafındaki bir sql, web, vb.. sunucu veya sunuculara, bir pipe içerisinden 1000 connection'muş gibi gönderebilirsiniz.

    Bu tür senaryolarda ve connection sayısı falzla olduğu durumlarda tek sunucu hiçbir zaman performans sağlamaz, LB'nin arkasına en az 2 veya daha fazla sunucu konumlandırmak daha performanslı olacaktır.
    iptables adlı üyeden alıntı: mesajı görüntüle
    En ince ayrıntısına kadar yazarak anlatmak malesef mümkün değil çünkü çok dağınık yazmışsınız ve sorular tam belli bile değil. Anladığım kadarıyla anlatayım araştırmanız gerekenleri.

    Dağıtık yapıda çalışacak bir oyun istiyorsunuz ve C# ile yazmışsınız buraya kadar güzel ancak eğer siz oyunu o dağıtık yapıda çalışacak şekilde yazmadıysanız binlerce sunucu da olsa tek sunucu da olsa bir şey fark etmeyecek. Öncelikle araştırmanız gereken konu "parallel programming for cluster systems". Oyundaki session nasıl sunucular arasında dağıtılır, veritabanını ve datayı nasıl tekilleştirebilirim gibi konular da ikinci aşama.

    Bir diğer yol ise hiç bir şeyi tekilleştirmeden ayrı ayrı sunucularda yolunuza devam etmek. 10 tane sunucunuz olur oyunu oynamak isteyen her kişi o an müsait olan sunucuya yönlendirilir. Counter-strike oynarken sunucu seçebilmeniz gibi bir mantık yani. Bunun için yapılması gereken de bu online yönlendirmeyi yapacak ayrı bir yazılım yapmanız. Ancak dediğim gibi farklı sunucular olur ve session sadece o sunucudaki oyuncular arasında paylaşılır.

    Yani kısaca tekrar toplamak gerekirse o yazdığınız oyun ben bunları sunucuya atayım da 20 30 sunucu birbiri ile çalışsın gibi bir mantık yok bu dağıtımı sizin yazılımınız yapmak zorunda. Altyapı araştırmasından önce bunu çözmeniz gerekir.
    Tekrardan Merhabalar,

    Öncelikle gameserver yazılımı tek pc üzerinden çalışacak şekilde tasarlandı. Amacım master server - child server mantığı ile dağıtım yapmak. Şöyle söyleyeyim, 1 ader mssql sunucusu 100 adet de gameserver yazılımı olsun. Her sunucu 15k kişi kaldırsın. Ben 100 sunucunun hepsine tek tek gameserver kurup, ve eğer suunucu dolu ise başka sunucuya göndermek için diğer 99 adet sunucunun ip adresini girmem gerekir. Ve bunu hepsine tek tek yaptığımızı varsayarsak, ve server side güncelleme yaparsam hepsine bağlanıp tek tek .exe değiştirmem gerekecek. Bu da hiç akıl kârı değil.

    Dediğiniz gibi yönlendirici bir server yazılım bütün makinelerin ip adresini yazarım, boş olana yönlendirir ama bunu yapmak için üstteki gibi her sunucuda .exe çalışması gerekli. Ayrıca master-server ddos yerse diğer sunucularda yalan olur.

    m.agar.io/fullInfo

    Mesela agar.io da tek master-server kullanılmış ve loadbalancing yapılmış. Adam reddit'de yazmıştı. Yani tek .exe ile 1 milyon user alabiliyor. DDOS yese bile etkilenmez. Ama anlamadığım master-server ddos yerse veya ip adresi bulunursa gene yalan olacak.

    Dağılım yapmak vs. sorun olmaz yapabilirim de benim isteğim tek .exe ile milyon kişi kaldırabilmesi. Hepsine gameserver kurarak yaparsam zaten sıkıntı yok o kolay iş fakat çok uzun ve hammallık yolu.

    Konu hakkında çok bilgim olmadığı için dağınık gibi durmuş olabilir kusura bakmayın, eminim siz anlıyorsunuzdur ne istediğimi.

    Tekrardan teşekkür ediyorum...
  • 22-11-2015, 18:41:53
    #7
    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.
  • 22-11-2015, 18:53:32
    #8
    Çok derinlemesine girecek şekilde anlatmak için vaktim yok ancak aşağıdaki gibi bir yapınız olmak zorunda bu tip bir büyüme yapabilmeniz için.

    Client -> Login/Proxy Sunucuları -> Oyun/Fizik motoru sunucuları -> DB sunucuları

    Burada gördüğünüz üzere Logi/Proxy sunucuları tüm mesajlaşma (normal mesajlarşma değil sunucu arasındaki API ve XML sorguları), giriş ve dağıtım işini yükleniyor. Bunu kendiniz de yazabilirsiniz yukarıda bahsettiğniiz gibi Azure veya AWS'den Route53+SQS+SNS+Autoscaling hizmeti alabilirsiniz.

    Oyun sunucularında exe çalıştırabilirsiniz sorun yok. Bahsettiğiniz korku sanırım bir exe değiştiğinde ne olacak konusu. Emin olun bu dert edeceğiniz en son şey olmalı online bir oyunda. Çünkü kendi içinizde kuracağınız bir Git sunucusu ile bile exe değişikliklerini anında birden fazla suncuuya aktarabilirsiniz. Detaylı araştırma için anahtar kelimeler: "push to deploy with git", "deploying with capistrano", "continuous integration"

    DB sunucuları ile ilgili detay verememe gerek yok sanırım pek fazla ekstra bir şey yok bağlantı, cluster ve optimizasyon yapıldıktan sonra.

    Sizin kafanızda hala bir adet master sunucu olsun diğerleri slave olsun mantığı var bu yanlış bir büyüme şekli. Sunucular gruplar halinde bir sunucu ağını oluşturmak zorunda (grid computing örneklerine bakabilirsiniz). Master dedğiniz kısım ise Login/Proxy sunucuları gibi değerlendirilebilir ve tüm kontrolü bu sunucular yapacaktır oyun içerisinde. Yani tek master sunucu mantığına kıyasla daha tercih edilebilir bir yönetim şeklidir.

    DDos konusuna gelince her türlü mimaride ddos almanız kaçınılmaz benim bahsettiğim yapıda da olsun master-slave yapısında da olsun fark etmez. Bu tartışılması gereken farklı bir konu öncelikli olarak nasıl büyüyeceğinize odaklanın bence.
  • 22-11-2015, 19:13:53
    #9
    foo adlı üyeden alıntı: mesajı görüntüle
    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.
    iptables adlı üyeden alıntı: mesajı görüntüle
    Çok derinlemesine girecek şekilde anlatmak için vaktim yok ancak aşağıdaki gibi bir yapınız olmak zorunda bu tip bir büyüme yapabilmeniz için.

    Client -> Login/Proxy Sunucuları -> Oyun/Fizik motoru sunucuları -> DB sunucuları

    Burada gördüğünüz üzere Logi/Proxy sunucuları tüm mesajlaşma (normal mesajlarşma değil sunucu arasındaki API ve XML sorguları), giriş ve dağıtım işini yükleniyor. Bunu kendiniz de yazabilirsiniz yukarıda bahsettiğniiz gibi Azure veya AWS'den Route53+SQS+SNS+Autoscaling hizmeti alabilirsiniz.

    Oyun sunucularında exe çalıştırabilirsiniz sorun yok. Bahsettiğiniz korku sanırım bir exe değiştiğinde ne olacak konusu. Emin olun bu dert edeceğiniz en son şey olmalı online bir oyunda. Çünkü kendi içinizde kuracağınız bir Git sunucusu ile bile exe değişikliklerini anında birden fazla suncuuya aktarabilirsiniz. Detaylı araştırma için anahtar kelimeler: "push to deploy with git", "deploying with capistrano", "continuous integration"

    DB sunucuları ile ilgili detay verememe gerek yok sanırım pek fazla ekstra bir şey yok bağlantı, cluster ve optimizasyon yapıldıktan sonra.

    Sizin kafanızda hala bir adet master sunucu olsun diğerleri slave olsun mantığı var bu yanlış bir büyüme şekli. Sunucular gruplar halinde bir sunucu ağını oluşturmak zorunda (grid computing örneklerine bakabilirsiniz). Master dedğiniz kısım ise Login/Proxy sunucuları gibi değerlendirilebilir ve tüm kontrolü bu sunucular yapacaktır oyun içerisinde. Yani tek master sunucu mantığına kıyasla daha tercih edilebilir bir yönetim şeklidir.

    DDos konusuna gelince her türlü mimaride ddos almanız kaçınılmaz benim bahsettiğim yapıda da olsun master-slave yapısında da olsun fark etmez. Bu tartışılması gereken farklı bir konu öncelikli olarak nasıl büyüyeceğinize odaklanın bence.
    Öncelikle yorumlarınız için teşekkür ediyorum. Sunucu konusunda çok iyi olmadığım için birkaç terimi anlayamıyorum.

    Tek MasterServer mantıksızmış evet. Git sunucusuna güvenilirmi ? Git'de sorun olursa o sorun banada yansıyacak mesela.

    ClashOfClans game server olarak Java kullanıyor, hosting olarak AWS. Bende yazılımımı Java'a geçirebilirim, çok sorun olmaz. NoSQL mongodb kullanırım o da sorun olmaz.


    "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 kısım kafama yattı gibi fakat çok birşey anlamadım DNS LoadBalancing vs.

    m.agar.io/?_=1430388662333

    Agar.io da bu şekilde sistem yapılmış. Bu bir nevi random yönlendirici olabilir. Benim yaptığım da mı bu şekilde olacak ?

    Birde benim istediğim şekilde hosting eden AWS vs Linode dışında hosting firması varmı ? Çünkü ben çok anlamıyorum, sanırım donanımsal çözülecek bir sorun bu. Kafam iyice karıştı gitti.

    Ayrıca evet şimdi farkettim, anlık 1 milyon tcp paketi kaldırsa yeterli. Birde windows önermediniz. Zaten bu kadar olmaz, anlık 1k civarı olur ama her zaman profesyonel düşünmek zorundayım. Yoksa diğer türlü 10 sunucu kiralayıp sorunu çözerim ama istediğim bu değil benim. :9