4 Haziran 2026 Perşembe

HazelcastAPI CP SubSystem vs Transaciton Yapılar

Giriş

Bu yazının yazılma sebebi bu soru

1. Transactional Yapılar

Hazelcast TransactionalMap, birden fazla veri değişikliğinin tek bir işlem (transaction) olarak atomik şekilde yapılmasını sağlar.
A = 100 -> 50
B = 50  -> 100
Transfer sırasında hata olursa tüm değişiklikler geri alınır.
Ancak bu, cluster'daki tüm düğümlerin aynı anda aynı veriyi gördüğü anlamına gelmez. Ağ bölünmeleri (split-brain), replikasyon gecikmeleri veya node arızalarında bazı düğümler geçici olarak eski veriyi görebilir.

Amaç:
- Atomic commit
- Rollback
- Isolation

2. CP SubSystem

CP Subsystem'in amacı transaction değil, dağıtık tutarlılıktır.

Burada Raft konsensüs algoritması kullanılır ve tüm CP üyeleri işlemlerin sırasını aynı şekilde kabul eder.
Örneğin:
counter = 5
counter = 6
counter = 7
Bir istemci 7'yi gördükten sonra başka bir istemcinin tekrar 6 görmesi mümkün değildir.

Ağ bölünmesi olursa sistem gerekirse isteği reddeder veya bekletir; yanlış/stale veri döndürmez.

3. CP Map vs Transaction doğru ayrım

3.1 CP Map:

Tekil operasyonlar için global doğruluk ve sıra garantisi

- “Herkes aynı sonucu aynı sırada görür”
- rollback yok
- her operation consensus’tan geçer

3.2 TransactionalMap:

Transaction başlatıldığında Hazelcast bir transaction context oluşturur. Bu context cluster genelinde coordinator + participant nodes üzerinden yönetilir. Ama, Hangi node’ların dahil olacağı senin seçtiğin bir liste değildir.

Kim belirler?

Hazelcast bunu otomatik belirler: Veri hangi partition’larda ise O partition’ların owner / backup node’ları transaction’a dahil olur. Transaction coordinator bunu yönetir

Yani birden fazla operation’ı atomik grup yapar
- “Ya hepsi olur ya hiçbiri”
- ama global ordering / linearizability garantisi yok

Linearizability olmadığı için 
Transaction commit:
x = 6
Durum:
Node A → 6 görüyor
Node B → 5 (eski değer) görüyor
Bu mümkündür.

HazelcastAPI CP Subsystem CPMap Arayüzü

Örnek ver

28 Temmuz 2024 Pazar

THIRD-PARTY.txt Dosyası

Kullanılan harici kütüphanelerin sürümleri bu dosyada
Dosyanın yolu şöyle

hazelcast/licenses/THIRD-PARTY.txt

9 Temmuz 2024 Salı

3 Haziran 2024 Pazartesi

Partition Table

Giriş
Açıklaması şöyle
When you start your first member, a partition table is created within it. As you start additional members, that first member becomes the oldest member, also known as the master member and updates the partition table accordingly. This member periodically sends the partition table to all other members. This way, each member in the cluster is informed about any changes to partition ownership. The ownerships may be changed when, for example, a new member joins the cluster, or when a member leaves the cluster.

NOTE : If the master member goes down, the next oldest member sends the partition table information to the other ones.

22 Ocak 2024 Pazartesi

HazelcastInstanceAware Arayüzü

Giriş
Şu satırı dahil ederiz
import com.hazelcast.core.ClientSchemaService;
Bu sınıfı ilk defa burada gördüm. Açıklaması şöyle
Entry Processor should implement HazelcastInstanceAware interface. It will provide setter to instance. There is no necessity to direct injection of instance. Hz will do it by itself on its side once EP would be deserialised there.


3 Ocak 2024 Çarşamba

Hazelcast Jet JobTerminateRequestedException Sınıfı

Giriş
Şu satırı dahil ederiz 
import com.hazelcast.jet.impl.exception.JobTerminateRequestedException;
Jet işleri nedense exception ile sonlandırılıyor. Sonlandırma sebebi TerminationMode ile belirtiliyor

JobTerminateRequestedException iş Jet Engine tarafından iptal edilince fırlatılır
CancellationByUserException iş kullanıcı tarafından iptal edilince fırlatılır.

TerminationMode şöyle olabilir
  CANCEL_FORCEFUL : İş bitmiştir ve kapatılması gerekir
  CANCEL_GRACEFUL

  RESTART_FORCEFUL : İşin tekrar başlatılması gerekir
  RESTART_GRACEFUL : İşin tekrar başlatılması gerekir

 SUSPEND_FORCEFUL : İşin askıya alınması gerekir
 SUSPEND_GRACEFUL
  




HazelcastAPI CP SubSystem vs Transaciton Yapılar

Giriş Bu yazının yazılma sebebi bu soru 1. Transactional Yapılar Hazelcast TransactionalMap, birden fazla veri değişikliğinin tek bir işlem ...