HAZELCAST
HAZELCAST NEDİR?
- Bellekte dağıtık tutulan veri ızgarası platformudur.
(Distributed in memory data grid(IMDG) platform)
- Dağıtık hesaplama ve depolama platformudur.
(Hazelcast is a distributed computation and storage platform)
- Java veri yapılarını dağıtık halde tutar.
(Distributed implementation of java.util.(Queue, Set, List, Map))
Bazı özellikleri:
Açık kaynaklı yazılımdır.(open source)
Java tabanlıdır.
Veri her zaman RAM’de tutulur. (hızlı olmasının sebebi budur)
(IMDG) IN MEMORY DAHA GRID NEDİR?
Birkaç bilgisayarın bir araya gelerek(cluster) RAM’de ortak bir veri havuzunda verilerin tutulmasıdır. Böylece farklı uygulamalar ortak veri havuzundaki verilere erişebilir. Verileri yüksek hızda işler.
Örneğin büyük bir iş var fakat bilgisayarın kapasitesi yetmiyor.
Burada önümüze iki seçenek çıkar:
- bilgisayarı güçlendirmek
- bir işi daha küçük işlere bölerek farklı bilgisayarlara paylaştırmak
Hazelcast’in yaptığı ise işleri paylaştırmak(parallel processing). Böylece Hazelcast uygulamamızı çok hızlandırır.
Önemli Bileşenlerinden Bazıları
Member : Hesaplama ve veri depolama ünitesidir.
Cluster : Birbirleriyle iletişim halinde olan member’lardan oluşur. (Cluster’daki member’lar (runtime’da) birbirlerini otomatik keşfedebilir.)
Partition: Hafızadaki data segmentleridir.
HAZELCAST İLE CACHING
Bir uygulamamız var ve veriyi almak için veritabanına gidip gelmemiz gerekiyor. Her veriyi almak istediğimizde bir istek(request) yapmamız gerekecek. Bu da zaman alan bir işlem. Gerçek zamanlı(real-time) uygulamalarda bu kadar uzun bekleme yapılamaz.
Get nurdan kaya’s stories in your inbox
Join Medium for free to get updates from this writer.
Örneğin bir uygulamanın performansını ölçen başka bir uygulamamız olsun. Bir uygulamanın RAM, CPU kullanımı gibi bilgilerini uygulamanın performansını ölçmek amacıyla birkaç saniye aralıklarla diğer bir uygulamaya gönderilecek olsun. Veritabanında select, insert gibi komutların birkaç saniyede sürekli gerçekleşmesi gerekecek. Performans açısından bu bekleme süresi büyük sorun olacaktır.
Hazelcast bize yüksek hız kazandırır. Her veriye ulaşmak istediğimizde veritabanına gitmek yerine RAM’de dağıtık(distributed) halde node’larda tutulan verilere hızla erişebiliriz.
!!!!! Ayrıca hazelcast client-member java kodu ve hazelcast ve oracle için yaptığım karşılaştırma : https://github.com/nurdankaya/i2i-systems-internship/tree/master/hazelcast-oracle-comparison
CACHING TOPOLOJİLERİ
1-EMBEDDED MODU
- Uygulama ve cache’lenen veri aynı makinadadır.
- Veri erişim hızı, sürekli istek yapmaya gerek olmadığından, hızlıdır
- Sadece java uygulamalarında kullanılabilir
2- CLIENT/SERVER MODU
- Cache’lenen data uygulamadan ayrı bir yerde tutulur.
- Bu sayede birbirinden bağımsız olarak ölçeklendirilebilir.(scaling)
- Okuma ve yazma yapmak için istek(request)yapması gerektiği için gecikmesi(latency) embedded moda göre yüksektir.(çözüm : Near Cache)
HAZELCAST VERİLERİ NASIL TUTAR? (DATA PARTITIONING)
- IMDG sistemdeki her hafıza segmenti → partition
- Hazelcast varsayılan olarak her partition’ın 1 kopyasını(copy/replica) alır.
- Kopyalardan biri → Primary
- Diğer kopyalar→ Backups
- Primary kopyaya sahip olan partition → Partition Owner
Hazelcast’de 1 member’da önerilen partition sayısı 271'dir. Yukarıda görüldüğü gibi her partition’un replikası başka bir member’da tutulur. Böylece herhangi biri zarar gördüğünde veriyi kaybetmemiş oluruz.
- Hazelcast’in tüm merber, cluster, verileri gözlemleyebileceğiniz bir arayüzü mevcut: Hazelcast Management Center
- Hazelcast Management Center Docker
- Dağıtık veri işleme (disributed data streaming engine(bounded (batch) and unbounded (streaming) )ürünü için : Hazelcast Jet





