Theo đúng thứ tự, chỉ một lần, thật nhanh
(engineering.ab180.co)- Airbridge đối chiếu các sự kiện như nhấp vào quảng cáo, cài đặt và mua hàng theo thời gian thực, nên không chỉ cần xử lý sự kiện nhanh mà còn phải xử lý theo đúng thứ tự cần thiết và ngăn mất mát hoặc trùng lặp.
- Trước đây, hệ thống lấy các thông điệp Kafka theo micro-batch và xử lý tuần tự theo từng loại sự kiện.
- Thứ tự dễ kiểm soát, nhưng trong lúc chờ xử lý các sự kiện phía trước, các worker khác bị nhàn rỗi.
- Khi chênh lệch tốc độ xử lý giữa các worker cộng với hot partition, tốc độ xử lý bị chững lại dù có mở rộng thêm server.
- Để giải quyết vấn đề này, họ đã thiết kế Project Differential.
- Loại bỏ micro-batch, để
Consumertheo từng loại sự kiện đọc cùng một Kafka topic một cách độc lập. - Việc đảm bảo thứ tự được thực hiện theo đơn vị partition thay vì toàn bộ topic, và cấu hình để các sự kiện trong cùng luồng người dùng quan trọng về thứ tự được đưa vào cùng một partition nhiều nhất có thể.
- Consumer phía sau không thể vượt qua vị trí xử lý của Consumer phía trước, và duy trì một khoảng cách an toàn dựa trên offset hoặc event time.
- Những thông điệp mà Consumer phía trước không xử lý sẽ được chuyển cho Consumer tiếp theo để tái sử dụng; khi buffer đầy, hệ thống chuyển sang Polling Mode, trong đó Consumer đọc trực tiếp từ Kafka.
- Loại bỏ micro-batch, để
- Bên trong, hệ thống có
ConsumerSuite/PartitionedConsumerChaintheo từng partition, vàLimitedEventProcessorkiểm soát để không vượt quá checkpoint của Consumer phía trước.CommitManagerquản lý để ngay cả khi đang buffering và xử lý bất đồng bộ, chỉ các offset liên tiếp đã thực sự hoàn tất mới được commit lên Kafka.
- Trong vận hành thử nghiệm, họ xác nhận hệ thống hoạt động không mất mát hay trùng lặp sự kiện, và tốc độ xử lý được cải thiện hơn 10 lần so với phương thức micro-batch trước đây.
- Đây là một ví dụ về việc thay vì tạo ra thứ tự toàn cục hoàn chỉnh, hệ thống bảo toàn theo best effort thứ tự cần thiết cho nghiệp vụ thực tế để đạt được throughput.
- Trong tương lai, họ đang xem xét đơn giản hóa cấu trúc, adaptive flow control để ứng phó với tình huống Spot Instance bị chấm dứt, và cải tiến kiến trúc nhằm giảm chính nhu cầu xử lý tuần tự.
Chưa có bình luận nào.