• HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding

[Tüm Versiyonlar] Mükemmel Server Yapısı

Snakeman

Kayıtlı Üye
Katılım
10 Nisan 2012
Mesajlar
132
View hidden content is available for registered users!




Çok yanlis ve çok gereksiz birsey.. Öncelikle ko dosyalarinda 3 odbcden fazla odbc olmamali...



Bunlar KN_Online / KN_Data / Knight_Account ve çogunlukla bunlara dahil gerek olmuyor çünki herkez herseyi KN_Online üzerinden yapmaya çalisiyor.



öncelikle açtigin ODBC servisi yanlis SQL server olarak açiyorsun. SQL Server çok daha fazla islem kullanir ve daha yavastir. ODBC açarken Native client ve (local) olarak açman en güzelidir bu sayede odbcler kasmadan local bilg de çalisir.



2 cisi local yaptigin taktirde odbc administrator hesabi üzerinden çalisicaktir.. Bu demektirki SQL de sysadmin yetkisi ile çalisir ve full yetkiye sayiptir. Bunu engellemek istiyorsaniz SQL den ayri bir user açip ODBC e açtiginiz hesabin bilgilerini verirsiniz ve ordan yetkileri ayarliyabilirsiniz. Örn db_owner / public / read / write gibi yetkiler...



ve Senin yapmak istedigin sekilde yapmak istiyorsan.. oda su sekilde olucak. Knight_account odbcsini açicaksin buna SQL da özel kullanici açicaksin ve yetkilerini teker teker ayarlicaksin... ve Ayarladigin yetkilerin sadece hesap ile ilgili olan yetkiler yani Knight_account uzeri Userdata yetkisi olmucak.. Ben bunu genelde yapiyorum güvenlik açisindan açtigim serverlarda..



Ayrica burda verdigin odbc örneginde oldugu gibi dosya yetkileri ayarli orjinali bu sekilde ayrilmaktadir ve her biri farkli yetkiye sahiptir

[ODBC]

ACCOUNT_DSN=Knight_Account

ACCOUNT_UID=1

ACCOUNT_PWD=2

LOG_DSN=KN_Data

LOG_UID=1

LOG_PWD=2

GAME_DSN=KN_Online

GAME_UID=1

GAME_PWD=2
 
Cevap: [Tüm Versiyonlar] Mükemmel Server Yapısı



o zaman login server ve aiserverin kinide kafamıza göre bir şey yapalım komple rahatlasın mantık bu değilmi ? 🙂
 
KONU LİNK : ?



Arkadaşlar,sizinle uzun süredir bildiğim ancak kendime sakladığım bir şeyi paylaşacağım. Belki bilenler vardır,ben kendim buldum ve gayet de işime yaradı.



Şimdi öncelikle bir açıklama yapayım,zor bir şey değil. Sadece ini ve odbc'lerle ilgili. Serverda lagı,cpu ve veri kullanımını aşırı derecede azaltıyor inanın bana,farkedeceksiniz.



Arkadaşlar,şimdi bir sürü odbc açıyoruz biliyorsunuz sknight,kn_online,kdata cart curt.. Size şöyle tarif edeyim,databasemiz asıl ulaşılmaya çalışan yer,odbcler ise sadece database'e giden yollardır.



Şimdi,neden bir sürü odbc açıyoruz onu da açıklayayım. Normalde,gerekli olarak sadece ini'ye girdiklerimiz kullanılır. Ancak,server dosyalarının içerisinde(ebenezer ve aujard'da yoğundur) iniye girmediğimiz ve değiştiremediğimiz odbc dsnleri bulunur. Yani sknight vb. açıyoruz,bu nedenle.



Saadete gelmek gerekirse,knight online'ın yapı gereği verileri ayrı ayrı transfer etmesi gerekir yani ayrı yollardan,yani ayrı odbclerden.



Biz ne yapıyoruz? inilerde db gördüğümüz her yere kn_online yazıyoruz. Arkadaşlar,bir sürü yol varken bir yola yüklenmek açıkçası aptallıktır. İlk deneyenler farketmediği için bir hatadır sürüyor böyle.



Örneğin,login server'a kn_online yazıyoruz. Giriş yapan bir kullanıcı kn_online veri yolu ile veritabanına erişecek. E ebenezerde de kn_online kullanıyoruz,oyunda troll kesen masum oyuncu da bu yolu kullanacak ve trafik artacak.



Kod:
+Bunu yaptığımızda,oyunun veri aktarımındaki hız gözle görülebilir derecede artacaktır. Dolayısıyla,veri aktarımı sebebiyle oluşan lag vb. de..

+Olası bir odbc çökmesinde bütün odbcleri kaybetmek yerine sadece biri eksilecektir,oyun kaybı azalacaktır.

+Tespit ettiklerim bu kadar,ancak olması gereken bu olduğu için daha fazla artıları olduğunu düşünüyorum.



Yapmamız gereken,sadece her dsn için farklı odbc ismi kullanmak,resimli olarak gösteriyorum;


mjj9v.png


ODBC'lerimiz bunlar. Her DSN için birinin adını girelim,kullanıcı adı ve şifreler aynı olmak zorunda zaten.



Örneğin Aujard dosyamızın inisine bakalım;


Kod:
[ODBC]

ACCOUNT_DSN=kn_online

ACCOUNT_UID=1

ACCOUNT_PWD=2

LOG_DSN=kn_online

LOG_UID=1

LOG_PWD=2

GAME_DSN=kn_online

GAME_UID=1

GAME_PWD=2

GAME_DSN2=kn_online

GAME_UID2=1

GAME_PWD2=2

Bu yanlış olan kullanım.Olması gereken ise budur;

Kod:
[ODBC]

ACCOUNT_DSN=Knight_Account

ACCOUNT_UID=1

ACCOUNT_PWD=2

LOG_DSN=Knight

LOG_UID=1

LOG_PWD=2

GAME_DSN=KO_GAME

GAME_UID=1

GAME_PWD=2

GAME_DSN2=KO_MAIN

GAME_UID2=1

GAME_PWD2=2



Arkadaşlar,anlatabildiysem ne mutlu bana. Lütfen işlem basit diye küçümsemeyelim. Ciddi olarak söylüyorum,büyük oranda performans artışı yaşayacaksınız. Saygılarımla...





Çok yanlis ve çok gereksiz birsey.. Öncelikle ko dosyalarinda 3 odbcden fazla odbc olmamali...



Bunlar KN_Online / KN_Data / Knight_Account ve çogunlukla bunlara dahil gerek olmuyor çünki herkez herseyi KN_Online üzerinden yapmaya çalisiyor.



öncelikle açtigin ODBC servisi yanlis SQL server olarak açiyorsun. SQL Server çok daha fazla islem kullanir ve daha yavastir. ODBC açarken Native client ve (local) olarak açman en güzelidir bu sayede odbcler kasmadan local bilg de çalisir.



2 cisi local yaptigin taktirde odbc administrator hesabi üzerinden çalisicaktir.. Bu demektirki SQL de sysadmin yetkisi ile çalisir ve full yetkiye sayiptir. Bunu engellemek istiyorsaniz SQL den ayri bir user açip ODBC e açtiginiz hesabin bilgilerini verirsiniz ve ordan yetkileri ayarliyabilirsiniz. Örn db_owner / public / read / write gibi yetkiler...



ve Senin yapmak istedigin sekilde yapmak istiyorsan.. oda su sekilde olucak. Knight_account odbcsini açicaksin buna SQL da özel kullanici açicaksin ve yetkilerini teker teker ayarlicaksin... ve Ayarladigin yetkilerin sadece hesap ile ilgili olan yetkiler yani Knight_account uzeri Userdata yetkisi olmucak.. Ben bunu genelde yapiyorum güvenlik açisindan açtigim serverlarda..



Ayrica burda verdigin odbc örneginde oldugu gibi dosya yetkileri ayarli orjinali bu sekilde ayrilmaktadir ve her biri farkli yetkiye sahiptir

[ODBC]

ACCOUNT_DSN=Knight_Account

ACCOUNT_UID=1

ACCOUNT_PWD=2

LOG_DSN=KN_Data

LOG_UID=1

LOG_PWD=2

GAME_DSN=KN_Online

GAME_UID=1

GAME_PWD=2
 
Geri
Üst