folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Message Broker - Beyin Firtinasi



Message Broker - Beyin Firtinasi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    Selamlar herkese

    Depremden dolayi icin hepinize cok gecmis olsun. Umarim tbt ailesinden kimse zarar görmemistir. 

     

    Bir sistem sorum olacak, biraz beyin firtinasi da iyi olabilir diye düsündügüm icin burada konu acmak istedim.

    Kafamda asagidaki gibi temel düzeyde bir sistem kurdum, her kutucuk birbirinden bagimsiz makinelerde olacak (ya da belki docker). 

    Service 1: Veri saglacisi. Bu server verileri cekip yollayacak. Örnek olarak 200 ms'de en az 1000 veri (veri boyutlari cok büyük degil, belk 50-100 byte)

    Service 2: Bu servisimiz gelen verileri isleyecek, cesitli matematiksel hesaplamalar yapacak ve filtereden gecenleri subscribe olmus (abone) client'lara yollayacak. Ayni zamanda verileri redis'e kaydedecek. En agir islerin oldugu kisim burasi.

    Clientlar: Bunlar da Service 2'ye subscribe olmus  programciklar ve Service 2'den gelen verilere göre kendi tasklarini yapacaklar.

    Asagida görsellesmis hali mevcut

     

    Burada sormak istedigim olay message broker olayi. Hem service 1- service 2 arasinda ve de service 2- clientlar arasinda bir message broker kullanmak istiyorum.

     

    Daha önce az biraz azure hub ile calistim (ancak projede azure ya da baska bir hazir bir cloud kullanmayacagim). Ayrica yine bir kac projede SignalR kullandim, iyi calissa da performans olarak biraz hantal oldugunu düsünüyorum (en azindan aklimda öyle kaldi). 

    Kafamda iki tane cözüm var. RabbitMQ ve Kafka. Bir kac yil önce RabbitMQ ile basit bir kac sey yapmistim ama onun disinda her hangi düzgün bir projede kullanmadim.

    Okudugum kadariyla pub-sub yapisina en uygun Kafka gibi görünüyor. Ayrica Kafka streaming projeleri icin uygun, her ne kadar benim projemde streaming olmasa da kesintisiz bir veri akisi söz konusu. Kuyruklama olayi da benim acimdan gereksik. Ve Kafta saniyede 1 milyon mesaji isleyebiliyormus, ki mükemmel bir hiz.

    https://www.simplilearn.com/kafka-vs-rabbitmq-article#:~:text=Deciding%20Between%20Kafka%20and%20RabbitMQ&text=Your%20decision%20will%20however%20depend,message%20delivery%20and%20complex%20routing

    surda güzel bir karsilastirma yazisi var.

    Kisaca üstte kurdugum sistem icin, servisler arasi veri iletisimi icin Kafka'yi kullanmayi düsünüyorum. 

    Sizin fikirlerinizi, önerilerinizi duymak isterim. 

    Tesekkürler

     

    unbalanced tarafından 08/Şub/23 02:38 tarihinde düzenlenmiştir

    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hipokondriyak
    hipokondriyak's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    video steam varsa kafka 

    yoksa zeroMQ , rabbitmq, QmQ 

    kafkada sunucu vs ıstıyor devops kısmı ayarlamaları vs uzun oluyor dıye bırakmıstım projede.

    Sanırım rabbitmq ile başlayım qmq  a gecmıstım kullanım kolaylıgı acısından.


    Homo sapiens, yaşamak için, diğer canlıların yaşamasına muhtaç; obligat parazit türüdür. "Sen olursan boş bardak , sana olur koyan çok su. a.g."
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    hipokondriyak bunu yazdı

    video steam varsa kafka 

    yoksa zeroMQ , rabbitmq, QmQ 

    kafkada sunucu vs ıstıyor devops kısmı ayarlamaları vs uzun oluyor dıye bırakmıstım projede.

    Sanırım rabbitmq ile başlayım qmq  a gecmıstım kullanım kolaylıgı acısından.

    cevap icin tesekkürler hocam. Streaming ya da video, büyük dosya vs yok. Zaten stream dedigimiz sey aslinda asenkron olarak datalarin sürekli gitmesi, ki benim ki de böyle bir sey. Cünkü yazdigim gibi 200 ms'de 1000 veri gidecek ki bu baslangic hali, cok yakin zamanda bu veri 10 bine de cikacak. 

     

    zerMQ 'yu duydum ama hic bakmadim, QmQ'yi duymadim bunlara bir bakayim.

    Ayrica kafka sunucu istemiyor hocam, docker ile bile calisabiliyor

    https://kafka.apache.org/intro 

     

    bu üstteki linktekini de sabah bir okuyayim


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    Aradigim cevabi sanirim buldum


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
    unbalanced bunu yazdı

    Aradigim cevabi sanirim buldum

    tam olarak bu iş için zamanında apache mosquitto kullandım hocam. mqttv3 kullanıyor. çok basit pub/sub yapısı var. epey lightweight bir şey. Kafka ya da rabbitmq gibi yönetim vs ihtiyaçları da yok. Kur topicleri ayarla çalışsın bir yapısı var.


    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    @sLeymN mosquitto'yi duydum baya ama hic denemedim. Ornek bir proje buldum, arkadasa yolladim bir denesin bakalim, mesela 10 ms'de veri gönderme olayina bakalim nasil calisiyor, sonra süreyi daha da düsürüp deneyelim. Lightweight olmasi bizim isimize gelir tabi ki. Tesekkürler önerin icin


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    hocam ihtitaçların için rabbitten ziyade kafka daha iyi duruyor. uptime min limitinize göre işler karışabilir ama :/


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    taskafa
    taskafa's avatar
    Banlanmış Üye
    Kayıt Tarihi: 22/Haziran/2022
    Erkek

    sunucuya ayıracak paranız çok heralde

    ya da google çalışanı falan mısın

    saniyede 1m data gönderebilen sistem ne için lazım

    ne kaynak yer o anasını yiyim

    para var huzur var

    kaçtım

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    All hail to Tux
    sandman
    sandman's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    Redis'e dönemedim bari buna hemen döneyim :)

    Şimdi aslında tam yapılmak istenen nedir, event-driven architecture yapıp microservisler arasında iletişim mi? sadece uygulamalar arasında async iletişim mi yoksa çok büyük bir veri akışı olacak(streaming) ve bunu karşılayacak bir ara katman mı lazım? Bu soruların haricinde MQ'a yazılan verilerin sıralı olarak okunması şart mı? Bir kere mi okunacaklar yoksa birden fazla kere okunacaklar mı?

    RabbitMQ sana mesajların sıralı okunmasını garanti ederken Kafka daha kolay büyümene ve birden fazla kere farklı servisin aynı mesajı tüketebilmesini sağlar. 

    Kafka ile devam edecekse iki kurulum senaryosu var, zookeeper ve metadata veritabanıyla kurabilirsin. Benim önerim zookeer'lı kurman kendi metadata veri tabanı hala çok iyi performans göstermiyor.

    Kafka'da topic yapısının altında her broker üzerinde bir veya birden fazla o topic için partition bulunur, partitionlar diskte mesajların(kafka'da log diye geçer) yazıldığı alandır ve her partition 20mb/s şeklinde limite sahiptir, performans ihtiyaçlarını buna göre planlamanı öneririm. 

    Kafka'da offset çalışma mantığını ve consumer group çalışma mantığını iyi anlamanı öneririm çünkü aynı topic'i birden fazla aynı işi yapan uygulama tüketecekse aynı consumer grouba alman lazım yoksa çift mesaj işlenir, ikinci notkaysa her offset partition başına ayrıdır bundan dolayı kafka mesajları yazıldığı sırayla okunamayabilir. Bunun çeşitli çözümleri var ama producer veya consumer tarafında çözmeni öneririm sakın kafka'yı buna zorlama.

    Kafka kurulumunu yaptıktan sonra offset'lerin tutulduğu özel bir topic var, bu topic'in birden fazla partition ve replication'ı olduğuna emin ol yoksa leader broker giderse sistem durur failover yapmaz.

    son olarak SASL_SSL ile broker'ları ayarlarsa ileride farklı roller ve ihtiyaçlara göre yetkilendirmen kolay olur.

    Sorun olursa yaz bana kafkayla baya kafayı kırmıştım 

    Şuradaki komutlarlada performans testleri yaparsın

    https://www.clairvoyant.ai/blog/benchmarking-kafka


    Mühendis kahveyi projeye dönüştüren bir insan evladıdır.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    TeRRoR bunu yazdı

    hocam ihtitaçların için rabbitten ziyade kafka daha iyi duruyor. uptime min limitinize göre işler karışabilir ama :/

    @sLeymN in dedigi gibi mosquitto'yi denedim, az biraz performans kaybi görünse de beklentilerimizi karsiliyor gibi görünüyor. Kurulumu ve kullanimi baya basit. Bizim amacimiz sadece veri göndermek ve bunu iyi bir performans alabilecegimiz sekilde yapmak

    @taskafa  Birden fazla veri kaynagi var hocam, ama öyle anlik milyonluk bir akisa ihtiyac yok zaten. Yavas yavas veri kaynaklarini arttiracagiz ona göre de sistemi scale etmek gerekecek. 

    @sandman tesekkürler detayli aciklamalar ve bilgiler icin. Anladigim kadariyla bu kafka cok profesynel amaclarla kullaniliyor, cok fazla detay ve dikkat edilecek seyler var. Dün bir kac video kurcaladim, temel seylerini ögrendim hatta egitim seti de satin aldim.

    Suan bir kac kaynagi sisteme baglayip mosquitto ile baglayip, iki farkli makine üzerinden bir deneme yapayim, Orada istedigimiz karsilaniyorsa, kafka'ya girmeyi düsünmüyorum. Ama sistem iyi calismazsa mecburen bu tarz bir cözüm kullanacagim, o zaman tekrar sorarim sana :)

     

    Aslinda yaptigimiz testlerde sunu farkettik, veri kaynagindan gelen data'nin service 2'ye mslik hizlarda gitmesine gerek yok, sistem kayiplari tolere edebilir, ayrica sirali olmasinin da hic bir önemi yok. O sebeple basit bir sistem isimizi görecek gibi görünüyor

    Tüm cevaplar icin tesekkürler.

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    hocam sırf meraktan soruyorum madem sistemde redis var, mb olarak da neden redis i kullanmıyorsun : https://redis.com/solutions/use-cases/messaging/ bunu sormamın sebebi bende büyük bir projeyi BullJS ile Redis yapisina taşıyorum bir sıkıntı var mı bu konuda yaşadığınız.


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
Toplam Hit: 3349 Toplam Mesaj: 20
signalr rabbitmq message broker kafka