Hocam 500-1000 request cok az, belki de server ile ilgili bir problem var, mesela 1000 requestte bottleneck in ne oldugunu tespit ettiniz mi, network, disc io, cpu, server? Ondan cok daha fazla anlik request alan serverlar tasarladim ve tahminimce cok daha agir isler yapan, scalable bir server 1000 anlik requestte cokmez. http://users.ece. utexas. edu/ adnan/pike.html 1. kural Overdesign'in en onemli problemi gereginden erken optimizasyon degil, gereksiz seylerin uygulanmasi ve gereksiz yerlerin optimizasyondur, bunun yapildigina o kadar cok sahit oldum ki, cok zeki kisiler tarafindan, gormek icimi acitiyor. Genelde insanlar ogrendikleri her fancy teknolojiyi kullanmaya meyilli, bazi hatalari kendin yapmadan anlayamiyorsun. Anlik connected 1000 kullanici buyuk bir rakam. 200 satirlik bir server ve asiri simple ve pragmatic bir dizayn ile baslarsin, hizli bir sekilde buyudugunu goruyorsan, kademeli olarak server i gelistirirsin ve sonunda elinde celik gibi bir server olur, bol bol test edilmis. Tutmazsa sallarsin kodu vakit kaybetmemis olursun. Bastan kompleks bir dizayna baslarsan cok daha buyuk hatalar yaparsin ve geri donmek icin cok gec olur. Son olarak su quote i koyayim :). Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. Linus Torvalds https://en. wikiquote. org/wiki/Linus_Torvalds AMpul tarafından 12/Ağu/17 01:36 tarihinde düzenlenmiştir What I cannot create, I do not understand. Richard Feynman

Hocam ben olsam ve senkron olmasını istesem, bir sunucudaki mysqlde yapılan her işlemi, diğer sunucularda da yapmasını sağlardım. Bu basit aslındaHer gün de birkaç kez, tüm serverlar için senkron mu değil mi testi gerçekleştirirdim

Eskiden bir yerde çalışırken geliştirdiğimiz bir eğlence sitesinde anlık 15K kullanıcı oluyordu. Biz bunu Googleın sunduğu reel time trafficten takip ediyorduk. Sistemde 5 farklı sunucu vardı ancak tek bir mysql sunucusu vardı ve o reel time grafik hiç dalgalanmıyordu 15K ziyaretçiyi kaldırıyordu site. tek mysql Ancak bir nceki mesajda da bahsettim burda nemli olan mysqlin sınırları, indexler, cache, sunucunun hızı vs olayları. Eğer sen veritabanını iyi tasarladıysan, indexlerin tam ve muthişse INNODB yaptıysan TREEye gre indexleniyorsa, mysqlin internal cache mekanizması çalışıyorsa, sunucu da hızlıysa. mysql senin için her şeyi yapacaktır Ancak elinde bulk data varsa, data büyükse, içindeki veriyi almak için sürekli quer atılmıyorsa o zaman mongodb ile de halledebilirsin. mongodbnin 5 milyar kayıta kadar sorunsuz çalıştığı test edilmiş bir şey TREE ALGORİTMASINA GRE Elindeki 2 milyon data var diyelim, içindeki herhangi bir dataya ulaşmak için harcayacağın en fazla efor: 2^21 = 2 milyon, dolayısıyla en fazla 21 adımda istediğin dataya erişirsin. ancak index yoksa bu kez bir dataya ulaşmak için 2 milyon efor sarfetme ihtimali çıkıyor. sen zaten bu işleri biliyorsundur fazla konuşmaya gerk ok Cevdet tarafından 11/Ağu/17 17:08 tarihinde düzenlenmiştir

Selamlar Hali hazirda gelistirdigimiz bir mobil oyun icin tablo yapisinda ufak bir sorun yasiyoruz. Server uzerinde trafik yogunlugu olacagi icin ulkelere gore serverlari ayirmak istiyoruz, fakat bunu yaparken kullanici tablosunun da ortak olmasi gerekiyor. Boyle bi durumda nasil bir yapi daha uygun olur? 1-Kullanici tablosunu ayri bir servera alip bir rest api yazmak? 2-Kullanici tablosunu serverlara sync etmek 3-Sanal olarak bu serverlari ayni db icindeymis gibi gostermek Daha iyi bir oneriniz varsa da dinlemeye acigim. Bu arada db turu hakkinda bilgi vermedim ama muhtemelen mysql veya postgresqlden biri olacak. NmC tarafından 11/Ağu/17 16:29 tarihinde düzenlenmiştir There are 10 types of people in the world. Those who knows binary and those who dont...

Selam, Mysql'e gidecek "anlık" istek sayısı 500ten az ise ortak mysql olsun benceAncak 500ten fazla ise diğeri Ben olsam nce ortak mysqli denerdim, duruma gre digerini uygulardım Cevdet tarafından 11/Ağu/17 16:59 tarihinde düzenlenmiştir

Aradığım şey NoSql hocam. CAP teorisini araştır. Hangi ikilinin uygun olduğunu düşürsen ona gre nosql çzümünü seçersin. Bana gre AP Modeli işini grecektir o da cassandra, couchdb gibi çzümler olabilir. Millet kafasına gre nosql neriyor grüyorum bazen ama tüm nosql çzümleri CAP teoriminin ikili modeline gre çalışıyor. Mobilde olduğum için pek detaylı yazamadım Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

Hocam neden butun buyuk sitelerin yaptığı gibi token authentication kullanmıyorsun? Token authenticationda kullanıcıyı bir login sunucusuna ynlendirirsin burada giriş yaptıktan sonra kendisine bir cookie verirsin bu encrypted cookie içinde adamın UserId, username ve onun yanında oyunun ihtiyaç duyduğu her bilgi olur. Bu cookieyi decrypt etmeyi sadece oyun sunucusu bilir Sonra login sunucusu adamın tokenini verdikten sonra oyun sunucusuna ynlendirme yapıp aradan çıkar, Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı ktektir!

Gencler cevaplar icin tesekkur ediyorum. Sira ile olaylara degineyim. @Ampul Overengineering konusunda biraz haklisin ama soyle bi durum var, konsept olarak bizimkine benzeyen diger oyunlar asagi yukari normal vakitlerde 500-1000 arasi online oyuncuya sahip ve bu oyuncular yaklasik olarak ayni anlarda servera request cakiyorlar ki 1000 request ile stress test yaptigimizda genelde 500den sonrasi dusuyor. Bu ihtimale hazirlikli olmamiz gerekiyor cunku bir sonraki guncellemede yaparim tarzi bir yaklasim retention isini mahveder gibi, parlamadan soneriz yani :) Senin dedigin gibi yatay degil de dikey buyumeyi deneyebiliriz ama zaten bel bagladigimiz tek oyun bu degil, gunun sonunda bu sistemi ogrenmemiz gerekecekse erken ogrenmenin bir zarari olmaz :P @Cevdet senkron isinden vazgectik gibi, user tablosunu lokal ag uzerinde diger bi makineye almayi deneyecegiz. Cache bekanizmalarini da duzgun kurarsak problem cikmayacak gibi gozukuyor. Isler rayinda giderse oyunu burdan da paylasacagim yasadigimiz sikintilardan falan da bahsederim biraz :) @unbalanced hocam nosql bizim icin baya kullanissiz, cok fazla select cakiyoruz ve data sistikce mongonun select performansi felaket dusuyor. https://github.com/webcaetano/mongo-mysql surdaki sonuclari gordum moralim daha da bozuldu :) Bir de mongoyu cogu analytic toola da baglayamiyoruz ki bu da dezavantaj bizim icin :) @PcK0 senin dedigini yapicaz gibi, ama normalde skorlari gosterirken iste en iyi 100 oyuncuyu goster dedigimizde gidip oyuncu isimlerini diger serverdan cekmesi falan gerekecek ama ayni network icinde olurlarsa problem olmayacak gibi. Son olarak hepinize tesekkur ederim, sureci isletirken "overengineering yapiyoruz gene lan" diye cok soyleniyorduk. Disardan da oyle gozuktugunu bilmem daha iyi oldu. Daha fazla dikkat edicem buna :) There are 10 types of people in the world. Those who knows binary and those who dont...

ncelikle hocam yazimda belirtmeye calistim, kafana gre nosql czümü secemezsin. MongoDB bir CA , senin isine yarayan yazdigim gibi AP olmali.. Ikinci olarak test olayindaki kodu biraz inceledim. mongodb icin yazilan kod salakca yazilmis bana gre. mysql icin direk where parametresi verilmis, ancak mongodb de tüm datalar cekilip daha sonra dngüyle arama yapiliyor. Adamin elinde milyonlarca kayit varsa hepsinin gelmesi ve sonra dnen sonucta aramasi elbette büyük bir cost. Search olayi icin buraya bakabilirsin. Her ne olursa olsun, nosql tabanli sistemlerde iliskisel veri tabanlari olmadigi icin komplex bir yapida rdbms ler cok agir kalmasi lazim. Tabi kompleks sorgular yapilir yavas dndermesi kacinilmazdir. Bu yazilimciyla alakali biraz cassandra icin bu makaleyi okumani tavsiye ederim https://www.datastax.com/wp-content/uploads/2012/08/WP-DataStax-MySQLtoCassandra. pdf Ayrica dkümanda grecegin üzere bir sürü büyük firma bu kullaniyor. NoSQL czümleri facebook , twitter, google gibi milyarlarca datanin oldugu sistemlerde kullaniliyor. Onlar aradiklarini rdbms lerde bulamadigi icin zaten yeni bir sisteme gecmis bulunmaktadirlar. RDBMS ler ACID e gre calisir ancak NoSQL CAP teorimine gre. Bu bahsettigim terimleri arastirirsan cok sey greneceginden emin ol. Artik big data denilen bir kavram var ve bu günümüzün gercegi. Türkiye'de ne kadar deger veriliyor bilmiyorum ama avrupa'da bu konuyla ilgili uzman ihtiyaclari/aramalari ve bunla ilgili cok AR-GE calismalari var. Big Data lar RDBMS lere uygun degiller, en basitinden milyonlarca kaydi olan bir MSSQL ya da oracle in süründügünü cok rahat grürüz . Senin ihtiyacin birden fazla node sahibi olup bunlar arasinda bir sekilde iletisim kurman gerek. Zaten bu yüzden Availability-Partition Tolerance dedim Son olarak oracle'de nosql czümü var :) ancak nedir ne degildir pek bilgim yok. https://www.oracle.com/database/nosql/index.html. Maalesef iste NoSql kullanamadigimiz icin pek derine dalamiyorum. Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

Premature improving is root of all evil.. Eğer ki problemin sadece kullanıcılar tablosu ise tek login server işini çzecektir. Bütün kullanıcılar ilk olarak login servera başvurur oradan gaming servera geçiş yapar. Sadece bi imza..

Hocam yaptiginiz %125 overengineering, kendinize soylediginiz bahanelerin tamami ise uydurma. Kesinlikle ve kesinlikle en basit dizayn ile tek server da baslayin. Linode'un cok saglam paketleri var. Oyun tutup server gercekten yetersiz gelene kadar ve bottleneck in ne oldugundan yuzde yuz emin olana kadar bu tutumdan vazgecmeyin. Eger beni dinlemeyip illa hata yapacaksan en azindan 1. hatayi yap, sync isine filan girersen kafayi siyirirsin disardan gorundugunden cok daha kompleks olacaktir. What I cannot create, I do not understand. Richard Feynman