Apache Mina ve MultiThread işleyişi

Minanın 2.0 ve üstü sürümlerinde bu işi mina bizim için çözmüş bize ise sadece configurasyon işlerini bırakmış gibi gözüküyor. Mina ile yazılmış bir uygulamanın thread yönetimini

ExecuteFilter ekleyerek yapabiliyoruz. Executers filtresine önceden tanımlı default thread yönetimlerinden birini seçerek ya da özel ihtiyaçlarımıza göre kendimiz yazarak belirleyebiliriz. Benim kullanmayı tercih ettiğim method ihtiyaç oldukça thread pooldan thread alarak işlemi yapıyor eğer poolda yeterli thread yoksa yeni thread yaratıp bunları belirli bir süre havuzda (Thread pool) tutuyor. 60 sn kullanılmayan threadler ise kapatılıyor. Idle time ı , maksimum thread sayısını set edebilmek mümkün.

Bu aşamadan sonra gelen her bağlantıyı bir thread işleyecektir.

diyerek minaya gelen connectiionları nasıl handle etmesi gerektiğini yazmak kalıyor.

ConnectionHandler ise mina nın IoHandlerAdapter classını extend eden bir class.

Bu şekilde ki bir sistemle aynı anda binlerce connectiona yanıt verebiliriz. Non-block bir sistem olmasına rağmen Mina frameworku thread yönetimini kendi çözerek olayı oldukça basitleştirmiş gibi gözüküyor.

Bir diğer konu da bu uygulamaya gelen isteklerin sayısı çok fazla olacağı için tek serverın bu iş için yetersiz kalması bu durumda da devreye Load Balancerlar giriyor. Daha önce web serverların yönetiminde kullandığım ve anlık 20 bin bağlantıda sorun yaşatmaya HaProxy i kullanmayı düşünüyorum ama http de kendini ıspatlamış bu sistemi TCP de ilk defa test etmiş olacağım. Bununla da alakalı bir şeyler yazmaya çalışırım.

Yine de hem mina da hem de multithread sistemlerde çok tecrübem olmamasından dolayı bu yazı oldukça fazla revizyona uğrayacak gibi gözükmekte. Ve her türlü yoruma açık bırakıyorum.

Sevgi ve saygılarımla,
Yzbasbug.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir