Buraya 720x90 haftalık reklam verebilirsiniz, tıkla ve daha fazla bilgi edin

SSProxyBridge Türkçe Wiki

  • Konbuyu başlatan Siraç Özmen 
  • Başlangıç tarihi
  • 106
Siraç Özmen
2px">

Siraç Özmen 

Katılım
27 Şub 2023
Mesajlar
26
Tepkime puanı
7
Aktiflik Süresi
16s 1dk
Puanları
8
Konum
Adana
Web sitesi
uxplima.com
Discord
siracozmen
Instagram
siracozmen01
Steam
siracozmen
SSBProxyBridge
SuperiorSkyblock2 için çoklu sunucu senkronizasyonu desteği ekler

Bu, Velocity veya BungeeCord gibi proxy desteği ekleyen bir modüldür. Bu modül, tüm oyuncularını tek bir sunucuda tutamayan büyük ağlar tarafından kullanılmak üzere tasarlanmıştır.

SSS

Ücretsiz mi?

Maalesef değil. Modül ücretli, aylık abonelik ve aylık 30$'a *** oluyor. Fiyatın nedeni, modüle harcanan iş miktarı, yalnızca büyük ağları (sunucularından güçlü bir gelire sahip olması gereken) hedeflemesi, SuperiorSkyblock2'yi çalıştırmanın gerekli olmaması ve müşterilere premium destek verilecek olmasıdır (her şeyi kurma konusunda yardım, hata düzeltmeleri, sorular vb.)

Dünyalar bir veritabanına kaydedilebilir mi?
Maalesef hayır. Modül dünyaların işlenme şeklini değiştirmediğinden, adalar serileştirilmeyecek ve bir veritabanına kaydedilmeyecektir.

Modül her oyuncu için bir sunucu çalıştırıyor mu?
Modül, oyuncuları yalnızca halihazırda var olan sunuculara yönlendirecek ve mümkün olan en iyi şekilde yayılmasını sağlayacaktır.

Modül SlimeWorldManager'ı veya başka herhangi bir özel dünya yönetimini destekliyor mu?
Evet, modül mevcut dünya yönetim modüllerini bozmayacaktır.

Zaman geçtikçe daha fazla sunucu eklemek mümkün mü?
Evet, daha fazla sunucu ekleyebileceksiniz ve oyuncular onlara yönlendirilecek.
Ancak, sunucuları kaldırmak adaların yüklenmemesine ve oyuncuların onlara ışınlanamamasına neden olacaktır.

Oyuncular diğer sunuculardaki adaları ziyaret edebilir ve etkileşimde bulunabilir mi?
Elbette! Modülün en önemli şeylerinden biri, oyuncuların bakış açısından deneyime zarar vermemektir.

Bir sunucu çöktüğünde ne olacak?
Bir sunucu çöktüğünde, içindeki oyuncular spawn sunucusuna yönlendirilecek ve adalarına ışınlanamayacaklar. İlk başta kulağa sorunlu gelebilir, ancak normal bir sunucunun kapanmasıyla aynıdır - açılana kadar üzerinde oynayamazsınız. Bu durum meydana gelmemeli ve tüm proxy açık olduğu sürece skyblock örnekleri de açık olmalıdır. İşin iyi tarafı, veriler yine de iyi olacaktır - sunucu beklenmedik çökmeler olmadan kapatıldıysa, sorunsuz bir şekilde kaydedilecektir.

Dahili

Modülün iç kısımlarına başlamadan önce, SuperiorSkyblock2'nin verilerini nasıl kaydettiğini anlamak önemlidir. Bir veritabanına kaydedilebilen her nesne (adalar, oyuncular, vb.), söz konusu nesne için veritabanı ile etkileşimleri ele alan bir sınıfa sahiptir ve her nesne için benzersiz olabilir. Bu sınıf, nesne ile veritabanı arasında bir köprüdür ve “ ” olarak adlandırılır.

Bir oyuncu veritabanıyla etkileşim gerektiren bir değişiklik yaptığında, etkileşimde bulunduğu nesne veritabanı köprüsünün yöntemlerinden birini çağırır ve bu da veritabanıyla eşzamansız olarak etkileşime girer. Bu, eklentinin üst düzeyinin veritabanı uygulamasını önemsememesini sağlar ve bu, eklentiye dünyadaki tüm veritabanı türleriyle (sql, mongodb ve veritabanı köprüsü tarafından gerekli yöntemleri uygulayabilen diğer her şey) etkileşim kurma yeteneği verir.

Bunun neden önemli olduğunu kendinize sorabilirsiniz? İşte sihir burada başlıyor. Yeni modül, eklentinin nesnelerinin veritabanı köprülerini idare edecektir - bu nedenle, verileri veritabanına kaydetmek yerine, hepsini idare etmek için onları başka bir yere gönderecektir. İşlem tamamen asenkron olarak yapıldığından, performansı hiç etkilemeyecektir.

Modülün amacına ulaşmanın nasıl mümkün olduğunu açıkladığıma göre, başa çıkmamız gereken sorunları anlamamız ve gözden geçirmemiz gerekiyor:

  • Yük dengeleme; adaları birden fazla sunucu arasında yaymak için bir yol istiyoruz, böylece tüm adalar tek bir sunucuda kalmayacak.
  • Diğer modülleri desteklemek; balçık dünyası yöneticisi dünyaları vb. gibi. Diğer modülleri de desteklemek istiyoruz (veritabanı köprülerini değiştirenlerin yanı sıra).
  • Farklı sunucular arasında veri senkronizasyonu; davetlerin, mesajların vb. sunucular arasında çalışmasını istiyoruz.
  • Birden fazla proxy desteği; günümüzde bir proxy yeterli sayıda oyuncuyu tutamıyor ve ağlarda oyuncuların bağlandığı birden fazla proxy var.
  • Performans; en önemli hususlardan biri performansı mümkün olduğunca iyi tutmaktır. Aksi takdirde modülün ne anlamı kalır ki?
İlerleyen sayfalarda her bir sorunun üzerinden geçeceğim ve her biriyle nasıl başa çıkabileceğimizi açıklayacağım.

Yük dengeleme

Sunucularınızın performansını en yüksek seviyede tutmak için, modül oyuncuları sunuculara yayacaktır. Bunu başarmak için, oyuncular için bir yük dengeleyici olarak hareket edecek ve adalar oluşturulduktan sonra onları en uygun sunucuya yönlendirecektir.

Bir oyuncu sunucuya ilk katıldığında, doğma sunucusuna yönlendirilecektir (bu, aynı zamanda adaları olan bir sunucu da olabilir). Ancak, oyuncu bir ada oluşturmayı seçtiğinde, adayı oynadığı sunucuda oluşturmak yerine, modül adayı oluşturmak için en uygun sunucuyu arayacaktır.

Modül, skyblock örneğinizdeki normal bir modülün yanı sıra başka bir yöne de sahip olacak - sunucular için aramaları işleyebilen bir proxy eklentisi de olacak. Proxy yönü, her sunucu için adaları izleyecek ve ne kadar aktif olduklarını izleyecektir. Genel olarak, daha aktif adalara sahip sunucular muhtemelen daha fazla gecikme potansiyeline sahiptir. Bu nedenle, bir ada oluşturulduğunda, en az sayıda aktif adaya sahip sunucuyu arayacak ve adayı oluşturmak için bu sunucudaki modülle iletişim kuracaktır. Ada başarılı bir şekilde oluşturulduktan sonra, oyuncu o sunucuya, doğrudan adasına ışınlanacaktır.

Diğer modülleri destekleyin

Daha önce açıklandığı gibi, modül yalnızca eklentinin veritabanı katmanını değiştirir ve başlangıçta veritabanına yönelik olan çağrıları başka bir uzak hizmete iletir. Bu, başka şeyleri değiştiren diğer modüllerin bu modülden etkilenmemesini sağlar. Tüm skyblock örneklerini yapılandırma dosyaları ve modülleriyle senkronize tuttuğunuz sürece, her şey amaçlandığı gibi çalışacaktır.

Veri senkronizasyonu

Modülün ana özelliği birden fazla sunucu arasında veri senkronizasyonu yapabilmesidir. Bunu başarmak için öncelikle sunucuların birbirleriyle iletişim kurması ve verileri aralarında senkronize etmesi gerekir. Soru “bu nasıl başarılabilir” ve bu bölümde bu açıklanacaktır.

Ayrıntılara girmeden önce bazı hususları dikkate almamız gerekir:

  • Adalar herhangi bir sunucu tarafından değiştirilebilir, bu nedenle değişiklikler senkronize edilmelidir (birden fazla adadan değiştirilen ada tüm değişiklikleri içermelidir)
  • Skyblock örneklerinin birbirleriyle iletişim kurmasını sağlayacak bir bileşene ihtiyacımız var (mesaj kuyruğu/aracı)
  • Veri kaydetme işlemini (veritabanı) gerçekleştirecek bir bileşene ihtiyacımız var
Mesaj Kuyruğu/Broker

Mesaj kuyruğu/aracı, eşzamansız olabilen hizmetler arasındaki iletişimi ele almak için kullanılan bir tasarım modelidir. Örneğin, bir servis diğerine gerçekleşen bir olay hakkında bilgi vermek istediğinde, bu servisle doğrudan iletişim kurmak yerine, 3. taraf bir bileşene mesaj gönderir, ardından diğer servis bu bileşenden mesajları okuyabilir. Bu tasarım, hizmetler arasındaki sabit bağlantıyı keser ve birden fazla hizmetin birbiriyle iletişim kurmasına olanak tanır - bu bileşene Mesaj Aracısı denir. Mesaj aracısı aldığı mesajları bir mesaj kuyruğu olarak saklar (aldığı ilk mesaj okunacak ilk mesaj olacaktır) ve servisler ona abone olabilir ve aldığı mesajları okuyabilir. Hizmetler arasında doğrudan bir bağlantı olmadığından, hizmetler yalnızca yapabildiklerinde aracıdan mesajları okuyabilir ve bu performans açısından yararlıdır.

Bizim durumumuzda, skyblock örnekleri diğer örnekleri belirli olaylar hakkında bilgilendirecektir - ada oluşturma, adaların veri manipülasyonu vb. Daha sonra, diğer skyblock örnekleri mesajları dinleyebilir, verileri güncelleyebilir ve gerektiğinde belirli eylemleri gerçekleştirebilir. Böyle bir eylem için bir örnek, bir ada yaratımıdır

Veritabanı

Verileri yeniden başlatmalar arasında tutmak için, bir şekilde bir veritabanında saklamamız gerekir. Normal eklentide bu veritabanı yerel ya da uzak olabilen bir SQL veritabanıdır. Ancak, modül söz konusu olduğunda, veritabanı uzak bir veritabanı olmalıdır - böylece tüm skyblock örnekleri onunla etkileşime girebilecektir. Veritabanının uzaktan olması gerektiği dışında herhangi bir kısıtlama veya gereklilik yoktur. Kullanılacak en ideal veritabanı Redis'tir, çünkü veritabanı ve mesaj aracısı olarak hareket edebilir (yukarıda daha ayrıntılı olarak açıklanmıştır), ancak bu gerçekten önemli değildir ve size bağlıdır.

Çoklu Proxyler

Günümüzde büyük ağlar, tüm oyuncularını tutmak için tek bir proxy'ye (Velocity veya BungeeCord olsun) güvenemezler ve bu nedenle oyuncuların bağlanabileceği sunucularına bağlı birden fazla proxy'ye sahiptirler. Bu, yüzleşmemiz gereken başka bir zorluğu beraberinde getiriyor - her şeyi birden fazla proxy arasında nasıl senkronize edebiliriz?

İlk başta kulağa korkunç gelebilir, ancak birden fazla proxy'nin nasıl kurulduğunu daha iyi anladığınızda oldukça kolay olduğu ortaya çıkıyor. Sonunda proxy'ler aynı sunuculara bağlanır, bu nedenle proxy A'dan bağlanan oyuncular proxy B'den bağlanan oyuncularla birlikte oynayabilir. Bu kurulum oyuncular için tamamen görünmezdir ve bir farklılık fark etmezler - bu nedenle, geriye kalan tek sorun modülün proxy ile nasıl etkileşime girdiğini ve bunu nasıl çalıştırabileceğimizi anlamaktır. Modülün iki basit işlem yapmak için proxy ile iletişim kurması gerekir - birincisi oyuncuları sunucular arasında taşımak, ikincisi ise oyuncuların yeni adalarının hangi sunucuda olması gerektiğini bilmektir.

Yönetici

Birden fazla proxy kurulumunda, tüm proxy'lerden tüm adaları yönetebilecek 3. taraf bir hizmete ihtiyacımız olacak. Yönetici, skyblock örneklerinin kendisiyle iletişim kurmasını bekleyecek ve onlar için her şeyi organize edecektir. Hangi adanın hangi sunucuda olduğunu, hangi adaların aktif olduğunu ve hangilerinin olmadığını takip edecek, böylece bir sonraki ada oluşturma için hangi sunucunun en iyi olduğunu bilecektir.

Bir oyuncu bir ada oluşturduğunda, adayı hemen sunucuda oluşturmak yerine, modül yöneticiye bir istek gönderecek ve adayı oluşturmak için en uygun sunucuyu soracaktır. Ardından, sunucunun kendisi olup olmadığını kontrol edecektir - eğer öyleyse, normal ada oluşturma süreci devam edecektir. Aksi takdirde, sunucu kendisine ulaşan sunucuya yeni bir ada oluşturması gerektiğini söyleyecek ve bu işlem tamamlandıktan sonra oyuncuyu diğer sunucudaki yeni adasına ışınlayacaktır.

Yönetici aşağıdaki istekleri yerine getirebilir:

  • Yeni bir sunucu kaydetme
  • Bir sunucunun kaydını kaldırma (sunucu kapalı olduğunda)
  • Bir ada oluşturmak için en uygun sunucuyu bulun
    • Bu işlem en az sayıda aktif adaya sahip sunucuyu kontrol etmelidir.
  • Bir adanın sunucusunu alın.
Kurulum Kılavuzu

İlk Adım:
Zip dosyasını indirme.

Modülü indirirken, birden fazla dosya içeren bir zip dosyası alacaksınız:

  • SSBProxyBridge-X.Y.Z.jar - Bu, modül kavanozunun kendisidir. Her bir spigot örneğinize yüklenmelidir.
  • SSBProxyBridge-Manager-X.Y.Z_standalone.jar - Bu bağımsız bir yönetici jarıdır. Ayrı bir sunucu olarak çalıştırmanız gerekir.
İkinci Adım: İlk kez çalıştırın

Tüm spigot örneklerinizi ve yöneticiyi ilk kez başlatın. Bu eylem, modüller ve yönetici için tüm yapılandırma dosyalarını oluşturacaktır.

Üçüncü Adım: Yapılandırma

Yönetici Yapılandırması


Yöneticinin dinlediği bağlantı noktasını ve IP'yi, canlı tutma aralığını ve adaların oluşturulmayacağı hariç tutulan sunucuların bir listesini yapılandırabilirsiniz. Modülün kurulu olmadığı sunucuları bu listeye eklemenize gerek yoktur.

Modül Yapılandırması

Modülün yapılandırma dosyası yöneticininkinden daha karmaşıktır. Yapılandırılması gereken iki ana bölüm içerir: mesajlaşma hizmeti ve yönetici. Bu bölümler, modülün diğer sunucularla ve yöneticiyle iletişim kurma şeklini yapılandırmak içindir. Sunucularınızı çalıştırmadan önce doğru şekilde yapılandırmanız önemlidir.
 

Konuyu görüntüleyenler

Üst