Ph?n 2: T?ng quan v? Nguyên ly ho?t ??ng c?a Kafka

Ph?n 2: T?ng quan v? Nguyên ly ho?t ??ng c?a Kafka

Nh? hình v? ta có th? r?ng trong ki?n trúc c?a Kafka bao g?m có nh?ng ph?n chính v?i nhi?m v? nh? sau:

  • Topic: Gi?ng nh? m?t b?ng trong database, n?i ch?a các rows/ record và trong tr??ng h?p c?a Kafka là các message.
  • Partition: M?i topic ???c chia nh? thành nhi?u Partition ?? t?ng hi?u su?t ho?t ??ng.
  • Key: Kafka s? d?ng hàm b?m (Hash) trên key c?a message, sau ?ó s? x?p các message c?a cùng Key vào cùng 1 Partition, theo th? t? th?i gian.
  • Offset: Là v? trí c?a các message, ???c s?p x?p b?t bi?n và theo th? t? th?i gian g?i vào t? Producer v?i c? ch? append-only log c?a Kafka.

  • Producer: G?i message/record vào ?úng topic ???c l?a ch?n.
  • Consumer: kéo message v? và ??c d?a vào các topic ?? ???c ??ng ky (subscribe).

  • Kafka Broker: Xem nh? là m?t t?p h?p các máy ch? ???c dùng ?? l?u tr? các message c?a Kafka. Ch?u trách nhi?m nh?n message t? Producer, ch? ??nh offset và write chúng vào disk. Bên c?nh ?ó, x? ly các yêu c?u ??c (fetch request) t? Consumer.

Ti?p theo, chúng ta s? ?i Sau vào cách Kafka ho?t ??ng

Khi m?t s? ki?n x?y ra, Producer ti?p nh?n, chuy?n ??i s? ki?n ?ó thành m?t message và g?i vào Kafka Topic. Key trong message là m?t thành ph?n tùy ch?n, ???c s? d?ng ?? xác ??nh partition th?ng qua c? ch? hash c?a Kafka.

V? b?n ch?t, message và key ??u s? ???c m? hóa thành Byte Array khi g?i t? Producer và t? ??ng ???c gi?i m? khi ???c ??c b?i Consumer. ??m b?o r?ng Kafka kh?ng b? gi?m hi?u su?t vì c?u trúc message.

M?t message trong Kafka kh?ng có m?t ID riêng bi?t mà ???c xác ??nh th?ng qua v? trí offset, do Kafka t? ??ng s?p x?p trong Partition. Tránh vi?c ph?i l?u tr? thêm các c?u trúc index ?nh h??ng t?i hi?u su?t c?a h? th?ng.

Trong tr??ng h?p kh?ng có khóa Key thì Kafka s? phan ph?i message ??ng ??u gi?a các Partition b?ng ph??ng pháp round-robin

Trong tr??ng h?p g?i message v?i Key, Kafka s? d?ng c? ch? hasing trên key ?? ??nh tuy?n mesage ??n m?t partition c? th?. Sau ?ó, trong partition ?ó, các message s? ???c s?p x?p tu?n t? theo th? t? th?i gian g?i.

Tr??ng h?p Consumer b? l?i ho?c ng?ng ho?t ??ng!!!!!!

??i v?i Kafka Broker và Consumer, sau khi Kafka Broker g?i message thành c?ng t?i Consumer, Consumer s? ??nh k? g?i m?t tin nh?n ph?n h?i (Commit) ch?a offset cu?i cùng c?a message ?? ???c x? ly thành c?ng. Kafka Broker s? l?u l?i th?ng tin c?a offset này.

Trong tr??ng h?p Consumer g?p l?i ho?c ng?ng ho?t ??ng, khi kh?i ??ng l?i, Consumer s? ti?p t?c kéo các message t? offset cu?i cùng ?? ???c commit, ??m b?o r?ng kh?ng có d? li?u nào b? ??c l?i ho?c b? b? sót.

T? nh?ng ki?n th?c c? b?n phía trên, h? th?ng Kafka có th? ???c phát tri?n ?? ??m b?o tính s?n sàng và ?n ??nh h?n th?ng qua ki?n trúc Kafka Cluster v?i m? hình Leader-Follower. Trong ki?n trúc này thì m?i topic ???c chia thành các partitions, và trong m?i partition, m?t broker s? ???c b?u ch?n làm Leader.

Leader ch?u trách nhi?m nh?n message tr?c ti?p t? Producer và x? ly các yêu c?u ??c t? Consumer. ??ng th?i, d? li?u t? Leader s? ???c sao chép ??ng b? t?i các Follower (replica).

Các follower ?óng vai trò d? phòng, ??m b?o r?ng n?u Leader g?p s? c?, m?t Follower s? ???c t? ??ng b?u ch?n ?? thay th?, giúp h? th?ng duy trì ho?t ??ng mà kh?ng m?t d? li?u.

Ki?n trúc Leader-Follower ??m b?o r?ng:

  • Tính s?n sàng cao (high availability): H? th?ng v?n ho?t ??ng ngay c? khi m?t ho?c nhi?u broker g?p l?i.
  • Tính toàn v?n d? li?u (Data integrity): D? li?u ???c sao l?u ??ng b? gi?a Leader và các Follower, gi?m nguy c? m?t mát.

K?t thúc ph?n 2 t?i ?ay, ph?n 3 s? nói r? h?n v? khi nào s? d?ng Kafka và t?i sao Kafka l?i tr? thành l?a ch?n hàng ??u trong x? ly d? li?u phan tán.

要查看或添加评论,请登录

Nguy?n Tu?n D??ng的更多文章