TopGit
Đánh giá repo GitHub

Confluent Schema Registry: Quản Lý Schema Kafka

confluentinc/schema-registry
CTopGit review image for confluentinc/schema-registry
Review by Topgit.dev for confluentinc/schema-registry, with GitHub repository stats and README context.
Nhận định nhanh

Confluent Schema Registry là dịch vụ RESTful lưu trữ, quản lý phiên bản, và xác thực schema Avro, JSON Schema, và Protobuf mà producer và consumer Kafka dùng chung. Hãy chọn nó nếu bạn đang chạy Kafka và cần kiểm tra tương thích bắt buộc trước khi triển khai thay đổi schema; bỏ qua nếu bạn cần mọi module theo giấy phép mã nguồn mở OSI, vì phần lõi server dùng Confluent Community License — một giấy phép source-available.

Sao
★ 2.5k
Fork
⑂ 1.2k
Người đóng góp
👥 281
Ngôn ngữ
Java
Giấy phép
Xem trong repo
Chủ đề
Data
Cập nhật
Aug 2026
Trang chủ
GitHub

Confluent Schema Registry Là Gì?

Confluent Schema Registry là một lớp phục vụ (serving layer) cho metadata schema, chạy song song với cụm Kafka và cung cấp giao diện RESTful để lưu trữ và truy xuất schema Avro, JSON Schema, và Protobuf. Nó lưu lịch sử có đánh số phiên bản cho từng schema theo subject, áp dụng các cấu hình compatibility có thể tùy chỉnh, và đi kèm serializer cắm thẳng vào Kafka client để producer và consumer tự động xử lý việc lưu trữ và truy xuất schema.

Tính Năng Cốt Lõi Để Quản Lý Schema

  • REST API để đăng ký một phiên bản schema mới dưới một subject, liệt kê các subject, và lấy schema theo subject/phiên bản hoặc theo ID schema toàn cục (globally unique), đúng như các ví dụ curl trong README.
  • Lịch sử schema có đánh số phiên bản: mỗi schema đăng ký dưới một subject được theo dõi theo số phiên bản, dựa trên một subject name strategy được chỉ định.
  • Cấu hình compatibility có thể tùy chỉnh, áp dụng toàn cục qua `PUT /config` hoặc theo từng subject qua `PUT /config/{subject}` — ví dụ trong README đặt compatibility thành BACKWARD hoặc NONE.
  • Một endpoint kiểm tra compatibility riêng (`POST /compatibility/subjects/{subject}/versions/latest`) trả về `is_compatible: true` hoặc `false` trước khi bạn đăng ký thay đổi schema.
  • Serializer và deserializer cho Avro, JSON Schema, và Protobuf, cắm thẳng vào Apache Kafka client, tự động xử lý việc lưu trữ và truy xuất schema cho message.
  • Một OpenAPI (Swagger) spec được tạo tự động bởi swagger-maven-plugin trong bước compile của Maven.
  • Một Jetty server tích hợp sẵn để phục vụ giao diện REST, khởi động và dừng bằng script `bin/schema-registry-start` và `bin/schema-registry-stop`.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Tương Tác Với API Của Schema Registry

Mọi request đều đi qua HTTP thông thường với content type `application/vnd.schemaregistry.v1+json`, nên curl hay bất kỳ REST client nào cũng dùng được — không cần SDK riêng. Để đăng ký một phiên bản schema mới, gửi POST với payload JSON chứa trường `schema` tới `/subjects/{subject}/versions`; phản hồi trả về ID toàn cục của schema. `GET /subjects` liệt kê mọi subject mà Confluent Schema Registry đang theo dõi, còn `GET /subjects/{subject}/versions` liệt kê các số phiên bản dưới một subject. Bạn có thể lấy schema theo ID toàn cục bằng `GET /schemas/ids/{id}`, hoặc lấy một phiên bản cụ thể hay phiên bản mới nhất bằng `GET /subjects/{subject}/versions/{version}` và `GET /subjects/{subject}/versions/latest`. Trước khi đăng ký một thay đổi, gửi `POST` schema ứng viên tới `/compatibility/subjects/{subject}/versions/latest` và kiểm tra trường `is_compatible` trong phản hồi. Quy tắc compatibility được đọc và thiết lập bằng `GET /config` và `PUT /config` (toàn cục) hoặc `PUT /config/{subject}` (theo từng subject); ví dụ trong README đặt giá trị này thành BACKWARD hoặc NONE. Xóa một phiên bản hay toàn bộ subject đều dùng `DELETE` trên đường dẫn tương ứng.

Cài Đặt Schema Registry

README nêu hai cách. Cách đơn giản nhất là tải bản dựng sẵn (prebuilt) như một phần của Confluent Platform. Để build từ mã nguồn, trước tiên bạn cần cài phiên bản development của hai repo Confluent liên quan — common và rest-utils — rồi build Schema Registry bằng Maven: `mvn compile` để build, `mvn test` để chạy unit test và integration test, và `mvn package` (có thể thêm `-DskipTests`) để tạo gói output trong `package-schema-registry/target/` và `package-kafka-serde-tools/target/`. Một profile Maven `standalone` (`mvn package -P standalone`) đóng gói toàn bộ dependency vào một fat JAR duy nhất thay vì cấu trúc thư mục đầy đủ. Sau khi build xong, giao diện REST chạy trên một Jetty server tích hợp sẵn, khởi động và dừng bằng script `bin/schema-registry-start` và `bin/schema-registry-stop` — đây là cách README khuyến nghị để chạy dịch vụ. Một OpenAPI (Swagger) spec được tạo tự động bởi swagger-maven-plugin trong bước compile của Maven. Cấu hình chi tiết hơn không được README này mô tả — nó trỏ tới tài liệu Confluent riêng cho phần cài đặt và cấu hình.

Điểm mạnh

  • REST API được tài liệu hóa với ví dụ request/response cụ thể cho từng thao tác — đăng ký, liệt kê, lấy theo ID hoặc phiên bản, xóa, kiểm tra compatibility, đọc/ghi config — không chỉ mô tả chung chung.
  • Ba định dạng schema trong một dịch vụ: Avro, JSON Schema, và Protobuf, mỗi định dạng có serializer tương ứng cắm thẳng vào Kafka client thay vì bạn phải tự viết phần kết nối đó.
  • Compatibility được chính dịch vụ kiểm tra qua một endpoint riêng, nên một thay đổi schema gây lỗi có thể bị chặn trước khi đăng ký thay vì phát hiện sau khi consumer bị crash.
  • Các module client, avro, và serializer/serde được tách riêng theo Apache 2.0, nên phần bạn thực sự nhúng vào ứng dụng của mình mang giấy phép cởi mở dù server thì không.
  • Có sẵn profile build fat-JAR standalone cho team muốn một artifact triển khai duy nhất thay vì cấu trúc gói đầy đủ.

Giấy Phép Và Lưu Ý Khi Sử Dụng

  • Module lõi của server được cấp phép theo Confluent Community License — một giấy phép source-available, không phải giấy phép mã nguồn mở được OSI công nhận — nên đừng mặc định Schema Registry có cùng mức tự do như một dự án cấp phép Apache hay MIT.
  • Chỉ một số module cụ thể theo Apache 2.0 — các package client-* và client-encryption-*, module avro-*, các module serializer/serde, schema-types, schema-rules, schema-converter, protobuf-types, dek-registry-client, và maven-plugin — nên giấy phép khác nhau theo từng module, bạn cần kiểm tra kỹ mình đang dùng module nào.
  • Đây không phải công cụ độc lập: nó là một lớp phục vụ giả định đã có sẵn cụm Kafka đang chạy, và ngay cả các ví dụ quickstart trong README cũng giả định Kafka đã hoạt động từ trước.
  • Build từ mã nguồn có một chuỗi phụ thuộc mà README nêu rõ — bạn cần cài phiên bản development của hai repo riêng confluentinc/common và confluentinc/rest-utils trước.
  • README không nêu số phiên bản, chu kỳ phát hành, hay changelog, nên không có cách nào từ chính repo để biết một checkout tương ứng với bản Confluent Platform nào.

Các Giải Pháp Schema Khác

Apicurio Registry — schema registry cấp phép Apache 2.0, hỗ trợ Avro, Protobuf, và JSON Schema, không có module lõi source-available như Confluent Schema Registry.AWS Glue Schema Registry — lựa chọn managed cho các team đã chạy Kafka trên AWS/MSK, không muốn tự vận hành server registry.Karapace — bản triển khai lại mã nguồn mở, cấp phép Apache 2.0, tương thích API với Confluent Schema Registry, từ Aiven, dành cho team muốn cùng REST contract nhưng dưới giấy phép mở hoàn toàn.

Câu Hỏi Thường Gặp

Confluent Schema Registry hỗ trợ những định dạng schema nào?

Confluent Schema Registry hỗ trợ schema Avro, JSON Schema, và Protobuf, cùng serializer tương ứng cho từng định dạng, cắm thẳng vào Apache Kafka client, theo README của dự án.

Confluent Schema Registry xử lý schema evolution như thế nào?

Confluent Schema Registry lưu lịch sử có đánh số phiên bản cho từng schema theo subject và cho phép đặt quy tắc compatibility (ví dụ BACKWARD hoặc NONE) toàn cục hoặc theo từng subject, cùng một endpoint riêng để kiểm tra schema mới có tương thích trước khi đăng ký hay không.

Giấy phép của Confluent Schema Registry là gì?

Phần lõi server của Confluent Schema Registry được cấp phép theo Confluent Community License, một giấy phép source-available chứ không phải mã nguồn mở được OSI công nhận. Một số module cụ thể — gồm package client, avro, và serializer/serde — được cấp phép riêng theo Apache 2.0.

Tôi có thể dùng Confluent Schema Registry cho dự án thương mại không?

Các module theo Apache 2.0 (client, công cụ avro, serializer) cho phép dùng thương mại theo điều khoản Apache 2.0 thông thường. Riêng phần lõi server nằm dưới Confluent Community License dạng source-available, nên hãy đọc file LICENSE-ConfluentCommunity trong repo trước khi dùng phần đó cho mục đích thương mại — README không nêu chi tiết điều khoản này.

Tôi tương tác với Confluent Schema Registry bằng cách nào?

Confluent Schema Registry cung cấp một REST API thuần, dùng content type `application/vnd.schemaregistry.v1+json` — bạn đăng ký, lấy về, liệt kê, và xóa schema bằng các lệnh GET/POST/PUT/DELETE tiêu chuẩn, nên curl hay bất kỳ REST client nào cũng dùng được mà không cần SDK riêng.

Vấn đề Confluent Schema Registry giải quyết

Kafka chỉ truyền byte, không truyền kiểu dữ liệu — producer và consumer chỉ khớp nhau về hình dạng message theo quy ước ngầm, nên việc đổi tên field hay đổi kiểu dữ liệu ở một phía có thể âm thầm làm hỏng deserializer ở phía kia lúc runtime, thường là sau khi message lỗi đã nằm trong log. Confluent Schema Registry tồn tại để biến quy ước đó thành một nguồn thông tin chung, có thể tra cứu và được thực thi: một nơi tập trung để mọi producer và consumer kiểm tra schema trước khi serialize hoặc deserialize, cùng một bước kiểm tra compatibility có thể từ chối một thay đổi gây lỗi trước khi nó được đăng ký.

Trường hợp sử dụng tốt nhất

  • Cho producer và consumer của Kafka một nguồn thông tin chung duy nhất, theo subject, cho định dạng message Avro, JSON Schema, hay Protobuf, thay vì phối hợp thay đổi schema theo quy ước ngầm.
  • Chặn một thay đổi schema gây lỗi trước khi triển khai, bằng cách chạy nó qua endpoint kiểm tra compatibility so với BACKWARD (hay bất kỳ mức compatibility nào đang cấu hình).
  • Gắn serializer Avro/JSON Schema/Protobuf trực tiếp vào code producer và consumer của Kafka để việc đăng ký và tra cứu schema diễn ra tự động cho từng message.
  • Xây công cụ nội bộ — một trình duyệt schema, một CI gate, một script migration — trực tiếp trên REST API thuần thay vì một SDK độc quyền.
  • Chạy Schema Registry như một phần của triển khai Confluent Platform, dùng gói prebuilt thay vì build từ mã nguồn.

Ai nên dùng — và ai nên bỏ qua

Hãy thử Confluent Schema Registry nếu bạn đang chạy Kafka và muốn có hợp đồng schema được đánh số phiên bản, kiểm tra bắt buộc cho message Avro, JSON Schema, hay Protobuf, cùng khả năng kiểm tra compatibility trước khi triển khai thay đổi. Bỏ qua — hoặc ít nhất đọc kỹ file giấy phép trước — nếu bạn cần mọi thành phần trong stack đều theo giấy phép mã nguồn mở được OSI công nhận, vì phần lõi của server dùng Confluent Community License chứ không phải Apache 2.0 hay tương đương; module client và serializer là ngoại lệ, không phải quy tắc chung.

Repo liên quan

Nguồn & ghi công

Thông tin lấy từ repository GitHub confluentinc/schema-registry và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 12 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Chưa chắc schema-registry có hợp với bạn?

Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về schema-registry.

GitHub