Ana içeriğe atla

RabbitMQ Server Kurulumu İçin İşletim Sistemi Seçimi

RabbitMQ Server
RabbitMQ'ü Message Queue alanında güçlü kılan iki nokta vardır. Bunlardan birincisi, hemen hemen her programlama dili için desteğinin bulunması diğeri ise, hemen hemen tüm işletim sistemleri için desteğinin bulunmasıdır. Son zamanlarda Message Queue alanında cloud uygulamaları da yaygınlaşsa da halen en çok tercih edilen yöntem local sunucuların kurulmasıdır.
Bu makalemizin konusu RabbitMQ Server kurulumu yapılırken işletim sistemi seçimidir. Aynı zamanda sunucu seçimi yapılırken de projeye uygun işletim sisteminin seçiminin önemi ve bu konudaki ipuçları anlatılacaktır. Bunlarla beraber RabbitMQ sunucusunun hangi durumlarda ayrı bir sunucuda konumlandırılması üzerine de ufak tüyolar vermeye çalışacağım.
Makalenin anlaşılması açısından konuyu hiç hakim değilseniz Message Queue Mantığı ve RabbitMQ Nedir? makalelerine de göz atmanızı tavsiye ederim. Ama konuyu zaten biliyorsanız ve merak ettiğiniz asıl konuı RabbitMq Server kurulumu için işletim sistemi seçimi ise o zaman konumuza yavaş yavaş başlaya biliriz...

Makalye başlamadan önce bir not daha düşmek istiyorum. Eğer RabbitMQ kurulumunu sadece eğitim amaçlı kurulumunu yapmayı düşünüyorsanız ilgili linklere tıklayarak kurulumları yapabilirsiniz. Teknik olarak eğitim amaçlı kurulum yapıyorsanız RabbitMQ sunucusunun nerede olduğunun çokta önemi yok. Önemli olan kurulumdan sonra RabbitMQ sunucusuna erişebiliyor olmanızdır. Bu makalenin konusu daha çok profesyonel projelerde RabbitMQ tercih ettiyseniz bu sunucunun nerede ve nasıl barındırılması, hangi donanımsal özelliklere sahip sunucu seçimi üzerinedir.
Konuya giriş yapmak açısından belirtmem gerekir ki sistem mimarinizin tamamı windows, yada tamamı Linux sunucularda ise RabbitMQ Server kurulumu için de böyle bir tercih yapmak zorunda değilsiniz. Özgürsünüz diyebilirim...
RabbitMQ Server ayrı bir sunucuda olacaksa kesinlikle dikkat etmeniz gereken konu sizin saniyelik ne kadar veri transferi yaptığınızdır. Örnek vermem gerekirse kendi kişisel bilgisayarım bile saniyede kuyruğa 3000'den fazla mesaj yazıp, bunun 6-7 katı kadar mesaj okuyabiliyorum. Ve önemli nokta da publisher ve consumer uygulamalarının da aynı bilgisayar üzerinde olması ve bu uygulamaları paralel olarak çalıştırmasıdır.
Bu işlemi ayrı-ayrı bir sunucu üzerindeki testlerini de makalenin ilerleyen bölümlerinde paylaşacağım. Aslında yukarıda verdiğim performans ölçümlerini paylaşmamın asıl nedeni mesaj alışverişi konusunda RabbitMQ Server uygulamasının ne kadar başarılı olduğunu gösterebilmek.
Sunucu seçiminden daha önemli olan noktalardan bir tanesi doğru ihtiyaç analizidir. Bunun için fikrimce proje başlangıcında analizlerin doğru yapılması ve biraz da tecrübeyle gelecek planlamasının doğru yapılmasıdır. Bu yüzden özellikle MİMARI TASARIM aşamasında Agile proje yönetim metodojisinin benimsenmemesinin de çok büyük önemi var...
Kuyruklarla çalışırken önemli olan diğer bir noktada da her zaman kuyruk sayısının artabileceği gerçeğidir. RabbitMQ Server uygulaması aslında sizin hangi kuyruğa veri yazmanızı çok önemsemez. Yani sizin kuyruk sayınızın çok olması aslında Exchange patternlerinin seçimi ile alakalı. Örneği direct paternini seçtiyseniz routing key'e bakar ve mesaj uygun kuyruğa yönlendirlir. Ama fanout paternini kullanırsanız ise tüm kuyruklara aynı verileri yazmış olursunuz.Topic yada header paterninde ise kriterlere göre Exchange'in karar vermesini beklersiniz. Demeye çalıştığım şey aslında olabilecek gelen giden mesaj sayısını yazılımı da göz önünde bulundurarak hesaplamaktır. Örneğin kullanacağım patternlerin  ne olduğu ile ilgili mimari tasaımda bilginiz yoksa, ama mesaj sayısı ile ilgili ortalama bir fikriniz varsa anlık mesaj sayısını 3'le çarparak işlem yapabilirsiniz.
Önemli olan diğer bir nokta da kuyruk ve mesaj yapılarının kontrolsüzce büyüyebileceği noktalarda her zaman yeni RabbitMQ sunusunun kurulabileceğidir. Ama tabi ki yazılımı da buna göre tasarlamakta fayda var. Özellikle de RabbitMQ Server ayarlarını herzaman istediğiniz kadar sunucu eklenebilecek ve kuyrukları da mümkün olduğu kadar configlerden yönetebilmek çok önemlidir. Bu anlattıklarımın anlık mesaj sayısının 100 000'lerin üzeri için geçerli olduğunu da söylemek istiyorum. Ve hatta 100 binin altında bir mesaj trafiğiniz varsa uygun olan tek sunucuya kurabilirsiniz.
RabbitMQ Server için sunucu seçimiyle alakalı en önemli olan nokta bence KABA TABIRLE çökmelere karşı en dayanıklı sunucu seçimidir. Aslında bu tüm Message Queue uygulamaları için geçerli olan bir konudur. Çünkü Message Queue uygulamalarının temelinde mesajların güvenliği yatar. Tamamen çökmeyen bir sunucu tanımlaması yapmak imkansız aslında. En azından fiziksel sorunlar dışındaki sorunları çözebilme kapasitesi en yüksel işletim sistemi seçimi aslında burada devreye giriyor. Ne yazık ki Windows sunucuların bu konuda dayanıklılığı ile alakalı bir tecrübem yok. Ama 4 sene hatasız çalışan Redhat sunucusu ile bir tecrübem var ve bu konuda da önerebileceğim Linux çekirdekli işletim sistemlerinden Redhat.
Redhat'ın reklamını yapmak, diğer sunucuları özellikle Windows sunucuları kötülemek gibi bir niyetim yok. Böyle anlaşılmasın. Demeye çalıştığım şey aslında diğerleri ile uzun süreli bir tecrübem olmadığı yönünde.
Diğer önemli noktalardan biri de seçilecek sunucunun donanımsal özellikleridir. Aslında bunun için seçeceğiniz sunucuya yük testleri yapmak çok önemlidir. Mümkün olduğu kadar oluşabilecek mesaj trafiğinin 2-3 katı yükü kaldırabilecek kapasitede olması çok önemlidir. Tabi ki, RabbitMQ Server sunucunun özelliklerine göre performans sergiler ki bu yüzden de network trafiğini de dikkate alarak bazı durumlarda sadece sunucu kapasitesini artırmak yerine birkaç RabbitMQ sunucusu da kurmayı tercih edebilirsiniz.
Son olarak konuyu özetleyecek olursak, bana göre RabbitMQ Server kurulumu için en önemli olan nokta mesaage releability'sini sağlayacak bir sunucu seçimi çok önemlidir. Bunun yanında yüksek mesaj trafiği için RabbitMQ sunusunu çoklamanız gereken durumlar da olabilir.
Fikrimce en önemli olan nokta mimari tasarım için tecrübedir. Ve tabi ki doğru proje analizi ve bu analize göre doğru mimari tasarımdır. Olabilecek tüm durumlara hazırlı olmak için publisher ve consumer uygulamalarında RabbitMQ Server ayarlarını çoklanabilecek durumda olması da işini gelecekte çok kolaylaştırabilir.

Makelenin okunabilirliğini düşünerek burada makalemi sonlandırmak istiyorum. Umarım anlattığım konular faydalı olmuştur. Konuyla alakalı sorularınız olursa sormaktan çekinmeyin. Fırsat buldukça yanıtlamaya çalışacağım...

Yorumlar

Bu blogdaki popüler yayınlar

Azərbaycan Dilində Vurğu Qəbul Etmeyen Şekilçiler

Sözlərdə hecalardan birinin digərlərinə nisbətən daha qüvvətli deyilməsinə heca vurğusu deyilir. Üzərinə vurğu düşən hecaya isə vurğulu heca deyilir. Azərbaycan dilində vurğu adətən söz sonuna düşür. Söz şəkilçi qəbul ederkən vurğu adətən şəkilçinin üzərinə keçir. Məsələn: çiç ə k - çiçəkl ə r - çiçəklərd ə n məkt ə b - məktəbl i - məktəblil ə r - məktəblilərd ə n Buna baxmayaraq dilimizdə bir sıra şəkilçilər var ki onlar vurğu qebul etmirlər. Bu məqalədə Azərbaycan dilində vurğu qebul etməyən şəkilçilər incələnəcək ve bu şekilçilərin hansı hallarda vurğu qebul edib hansı hallarda vurğu qebul etmediyi araşdırılacaqdır. Eyni zamanda bildirmək istəyirəm ki vurğu ilə bağlı daha geniş və ətraflı məlumat üçün Azərbaycan Dilində Vurğunun Praktik Məsələləri adlı məqaləyə də nəzər yetirə bilərsiniz.  1. İsimlərdəki şəxs(xəbərlik) şəkilçiləri Məsələn: müəli'məm müəli'msən müəli'mdir müəli'mik müəli'msiniz müəli'mdirlər Qeyd: -dır4

Ağaçlar Kireçle veya Badana İle Neden Boyanır?

Ağaçlar kireçle boyanmasının veya badana yapılmasının hem çevreye hem de doğaya, ağaçlara faydası var. Bu makalede bu geleneği enine boyuna tartışmaya çalıştık. Ağaca zarar veren mikrop ve bakterileri öldürür. Ağacı çok aşarı soğuk havalarda ve çok aşırı sıcak havalarda korur. Ağacın çürümesini ve kurtlanmasını önler. Ağacın gövdesinin alabileceği zararları en az düzeyde düşürmeyi sağlar. Hoş, güzel, hijyenik, temiz pırıl pırıl bir görüntü oluşturur. Ayrıca çok sıcak havalarda da ağacı yanmaya karşı korumak. En büyük etkisi soğuk havalarda ağacı don vurmalarına karşı korumak . Küresel ısınma göz önüne alındığında mevsim değişiklikleri ani don, ani ısı artışları ve azalışları sonucunun doğuracağı etkenler için yararlı etkin bir yöntem. Gövdeden obur dalların çıkmasını azaltmak için sürülür. Kireçleme ağaçları güneş yanığından korumak için yapılıyor. Ağaçlar da güneşten yanabiliyorlar. Bu arada odun dokudaki gözenekleri doldurarak kapattığı için, zararlıların yuv

Medyan (Ortanca) Nedir? Nasıl Hesaplanır? Nerelerde Kullanılır?

Medyan işlemi olasılık hesaplamalarında sıkça kullanılan bir sayı dizisinin ortalamasını hesaplamak için alternatif yöntemlerden bir tanesidir. Ortanca medyan işleminin diğer adıdır. Matematiksel olarak medyan işlemi bir sayı dizisi küçükten büyüğe sıralayarak ortada kalan elemanı medyan değeri olarak belirleme işlemidir. Örnek verecek olursak: 2, 1, 5, 4, 5, 1, 2, 3, 5 serisi sıralanırsa 1, 1, 2, 2, 3, 4, 5, 5, 5 serisi elde edilir. Bu seri 9 elemanlı olduğundan ortadaki, yani 5. eleman (medyan) olacaktır. 5. eleman 3 sayısıdır. Yani ortanca değeri 3'dür Eleman sayısı tek sayı olan bir seride medyan değerin sırasının hesaplaması şu şekilde formüle edilir. Medyanın Sırası = (Eleman Sayısı + 1) / 2 Bu formülü yukarıdaki örneği uygulayacak olursak; Medyanın Sırası = (9 + 1) / 2 = 5 Veri serisi eleman sayısı bir çift sayı ise bu durumda serinin 2 medyanı olacaktır. Örneğin 2, 1, 5, 4, 5, 1, 2, 3, 5, 4 serisi sıralandığında 1, 1, 2, 2, 3, 4, 4, 5, 5, 5 s