1. Các cách có thể dùng để tích hợp ClickHouse với Apache Kafka
Có 3 cách chính để đẩy data từ Apache Kafka sang ClickHouse, bao gồm:
- ClickPipes For Apache Kafka
- Apache Kafka Connect Sink
- Apache Kafka Table Engine
1.1. ClickPipes For Kafka
ClickPipes là một công cụ tích hợp dữ liệu được thiết kế dành riêng cho ClickHouse Cloud (managed integration platform). Giúp tích hợp ClickHouse với Kafka một cách dễ dàng chỉ bằng vài cú click chuột.
Điểm mạnh:
- Thừa hưởng được những lợi ích từ ClickHouse Cloud:
- Tích hợp tốt với ClickHouse Cloud Instance đã deploy và scale để lấy thêm high throughput và low latency
- Hỗ trợ monitoring và schema management
- Hỗ trợ xác thực SSL/TLS và phân quyền IAM
- Dễ set up và maintain
- Có vài trò như Kafka Connect và hiệu suất tốt hơn Kafka Connect
- Hỗ trợ At-least-once semantics (đảm bảo events được gửi vào đầy đủ không bị thiếu kể cả khi có sự cố xảy ra)
Điểm yếu:
- Không hỗ trợ đẩy data ngược từ ClickHouse vào Kafka
- Không hỗ trợ Exactly-once semantics (khi có sự cố xảy ra, chỉ đảm bảo events đc đẩy vào ít nhất 1 lần, chứ ko đảm bảo events đc đẩy vào duy nhất 1 lần → duplicate)
1.2. Kafka Connect Sink
Kafka Connect là một công cụ tích hợp được thiết kế cho Kafka để tích hợp với các công cụ khác dựa trên những chức năng đã được cộng đồng Kafka phát triển sẵn. Kafka Connect là open-source, bên cạnh đó còn có thể dùng của Confluent (bản community hoặc enterprise) để có thêm nhiều chức năng hơn.
Điểm mạnh:
- Hỗ trợ At-least-once semantics
- Hỗ trợ Exactly-once semantics
- Hỗ trợ tích hợp với đa dạng tool hơn so với ClickPipes
Điểm yếu:
- Không hỗ trợ đẩy data ngược từ ClickHouse vào Kafka
- Khó set up và maintain (yêu cầu phải có chuyên gia am hiểu Kafka và Kafka Connect)
1.3. Kafka Table Engine
Kafka Table Engine là một table engine được ClickHouse tạo ra để tương tác với dữ liệu ở Kafka. Table được tạo ra không lưu data thật mà chỉ như một view động kết nối trực tiếp đến các topic của Kafka để đọc hoặc ghi dữ liệu theo thời gian thực.
Điểm mạnh:
- Có thể dùng để đọc/ghi data từ Kafka
- Set up cực dễ
- Hỗ trợ At-least-once semantics
- Hoạt động như API, không lưu trữ trung gian như việc lưu vô topic của Kafka Connect