Chào mừng bạn đến với INDA!

Hotline: (HN) (+84) 986-882-818 | (HCM) (+84) 945-618-746

Denodo kafka – Các thông tin bạn nhất định phải biết khi triển khai

Denodo kafka – Các thông tin bạn nhất định phải biết khi triển khai

Apache Kafka  là một nền tảng phát trực tuyến phân tán. Ban đầu được hình thành như một hàng đợi nhắn tin, Kafka dựa trên sự trừu tượng hóa của nhật ký cam kết phân tán và được sử dụng để xây dựng các đường dẫn dữ liệu thời gian thực và ứng dụng phát trực tuyến. Bài viết sẽ cung cấp cho bạn đọc đầy đủ những thông tin cơ bản về Denodo Kafka.

Tổng quan Denodo Kafka

Là một nền tảng phát trực tuyến, nó có ba khả năng chính:

  • Xuất bản và đăng ký các luồng hồ sơ.
  • Lưu trữ các luồng bản ghi theo cách lâu bền có khả năng chịu lỗi.
  • Xử lý các luồng hồ sơ khi chúng xuất hiện.
Denodo Kafka Custom Wrapper

Denodo Kafka Custom Wrapper với tư cách là người tiêu dùng

Denodo  Kafka Custom Wrapper cho phép bạn sử dụng các bản ghi theo hai cách khác nhau:

  • Giữa các ngày:  đọc các bản ghi của một chủ đề trong một khoảng thời gian cụ thể. Nếu không có khoảng thời gian nào được đưa ra, tất cả các bản ghi sẽ được đọc.
  • Tăng dần:  đọc các bản ghi mới của một chủ đề kể từ khi truy vấn cuối cùng được thực hiện .

Cài đặt Denodo kafka

Bản phân phối Denodo Kafka Custom Wrapper  bao gồm:

  • /dist :
  • denodo-kafka-customwrapper-{denodo-version}-{version}.jar . Trình bao bọc tùy chỉnh.
  • denodo-kafka-customwrapper-{denodo-version}-{version}-jar-with-dependencies.jar . Trình bao bọc tùy chỉnh cộng với các phần phụ thuộc của nó. Đây là gói chúng tôi khuyên bạn nên sử dụng vì nó dễ cài đặt hơn trong VDP.
  • denodo-kafka-customwrapper-{denodo-version}-{version}-sources. Mã nguồn trình bao bọc tùy chỉnh.
  • /lib : Tất cả các phần phụ thuộc mà trình bao bọc này yêu cầu trong trường hợp bạn cần sử dụng denodo-kafka-customwrapper-{denodo-version}-{version}.jar .

Cách sử dụng Denodo kafka

Nhập Trình bao bọc tùy chỉnh


Để nhập trình bao bọc tùy chỉnh, hãy làm theo các bước sau:

  • Trong Công cụ quản trị VDP, đi tới  Tệp → Quản lý tiện ích mở rộng
  • Nhấp vào nút “ Create ” và chọn tệp “ denodo-kafka-customwrapper-{denodo-version}-{version}-jar-with-dependencies.jar ”  , nằm trong thư mục dist  của bản phân phối Denodo Kafka Cus
  • tom Wrapper, đã tải xuống từ Trang web hỗ trợ của Denodo .

Tạo nguồn dữ liệu Kafka

Để tạo nguồn dữ liệu tùy chỉnh Kafka mới:

  • Trong Công cụ quản trị VDP, đi tới: Tệp → Mới… → Nguồn dữ liệu → Tùy chỉnh
  • Trong cửa sổ “ Tạo nguồn dữ liệu tùy chỉnh mới ”, hãy làm như sau:
  • Đặt tên cho nguồn dữ liệu Kafka mới trong trường “ Tên ”.
  • Nhấp vào “ Select Jars ” và chọn tệp đã nhập ở phần trước.
  • Trong trường “ Tên lớp ”, tùy thuộc vào cách bạn muốn sử dụng các bản ghi, thành phần bộ chọn có thể được sử dụng để chuyển đổi giữa các lớp này:
  • com.denodo.connect.kafka.wrapper.KafkaDateRangeConsumerWrapper: sử dụng các bản ghi giữa các ngày.
  • com.denodo.connect.kafka.wrapper.KafkaIncrementalConsumerWrapper: sử dụng các bản ghi tăng dần.
  • Nhấp để làm mới các tham số đầu vào của nguồn dữ liệu.
  • Định cấu hình các tham số nguồn dữ liệu:
  • Chuỗi kết nối ( bắt buộc ): là danh sách các cặp máy chủ và cổng được phân tách bằng dấu phẩy là địa chỉ của các nhà môi giới Kafka. Cặp máy chủ và cổng sử dụng “ : ” làm dấu phân cách, ví dụ: <kafka_host>:9092.
  • Thời gian chờ kết nối (ms) : là thời gian tối đa (tính bằng mili giây) mà trình bao bọc tùy chỉnh sẽ được kết nối với Kafka để sử dụng dữ liệu.  Thời gian chờ này là cần thiết bởi vì, do người tiêu dùng Kafka liên tục chờ nhận bản ghi mới , nên cần thiết lập thời gian kết nối tối đa để cuối cùng việc tiêu thụ dữ liệu của trình bao bọc kết thúc. Mặc định là 10 phút.
  • Thời gian chờ của người tiêu dùng (ms) : là thời gian tối đa (tính bằng mili giây) mà người tiêu dùng Kafka sẽ đợi để nhận dữ liệu từ máy chủ trong quá trình thăm dò ý kiến. Không được âm. Mặc định là 7.000 (7s).
  • Bản ghi thăm dò tối đa : số lượng bản ghi tối đa sẽ được truy xuất từ ​​máy chủ với mỗi thao tác thăm dò ý kiến. Mặc định là 20.000, nhưng con số này có thể được cấu hình để thích ứng tốt hơn với kích thước của thư được truy xuất.
  • SSL Enabled : nếu được chọn, giao thức SSL sẽ được sử dụng. Lưu ý rằng, nếu chứng chỉ của nhà môi giới Kafka được tự ký, thì nó phải được nhập vào kho tin cậy của JRE được Máy chủ Denodo sử dụng, tức là <DENODO_HOME>/jre/lib/security/cacerts .
  • Đường dẫn thuộc tính tùy chỉnh : là đường dẫn đến tệp thuộc tính chứa các thuộc tính cấu hình bổ sung của Kafka. Lưu ý rằng, nếu một thuộc tính cấu hình có cả trong tệp thuộc tính và các trường cấu hình trình bao bọc, thì thuộc tính đã được nhập thông qua các trường cấu hình trình bao bọc sẽ luôn có mức độ ưu tiên cao hơn .

Ví dụ về tệp thuộc tính tùy chỉnh cho cấu hình SSL khi bạn không muốn sử dụng kho tin cậy của JRE có trong Nền tảng Denodo:

ssl.truststore.location= /path/to/truststoressl.truststore.password= test1234

Các thuộc tính cấu hình hợp lệ được ghi lại tại https://kafka.apache.org/documentation/#consumerconfigs

  • Nhấp vào nút “ Lưu ”.

Phạm vi ngày so với Trình bao bọc gia tăng

Như đã đề cập, Denodo Kafka Custom Wrapper cung cấp hai cách triển khai khác nhau:

Việc triển khai Phạm vi ngày  sẽ có thể truy xuất tất cả các thư trong một chủ đề giữa một phạm vi ngày được chỉ định (bao gồm ngày bắt đầu, không bao gồm ngày kết thúc)

Việc thực thi các chế độ xem cơ sở được tạo trên trình bao bọc này có thể diễn ra đồng thời và chúng phải luôn trả về cùng một tập kết quả miễn là tập dữ liệu thông báo tại máy chủ không thay đổi.

Trình bao bọc này yêu cầu phải xác định tiền tố cho ID nhóm người tiêu dùng để mỗi lần thực thi sử dụng ID nhóm người tiêu dùng ngẫu nhiên mới bắt đầu bằng tiền tố đã xác định để tránh các lần thực thi đồng thời được chỉ định các nhóm phân vùng khác nhau trong chủ đề và do đó trả về một phần bộ dữ liệu (hành vi cân bằng phân vùng tiêu chuẩn trong Kafka).

Việc triển khai Gia tăng  sẽ yêu cầu máy chủ cung cấp các thông báo mới nhất được thêm vào các phân vùng của chủ đề kể từ lần cuối cùng chế độ xem cơ sở được thực thi.

Việc thực thi các chế độ xem cơ sở được tạo trên trình bao bọc này sẽ sử dụng thông báo có sẵn và sau đó chuyển phần bù đọc mới nhất của chúng cho máy chủ, để lần thực thi tiếp theo, máy chủ sẽ chỉ gửi các thông báo có phần bù mới hơn (nếu có). Vì lý do này, trình bao bọc yêu cầu phải cố định ID nhóm người tiêu dùng  ở cấu hình chế độ xem cơ sở, ID này sẽ được sử dụng cho tất cả các lần thực thi của chế độ xem cơ sở đó.

Lưu ý rằng việc thực thi đồng thời trình bao bọc này cho cùng một chế độ xem cơ sở hoặc đối với các chế độ xem cơ sở đọc từ cùng một chủ đề cũng chia sẻ cùng một ID nhóm người tiêu dùng (không được khuyến nghị) sẽ khiến máy chủ Kafka cân bằng lại các phân vùng chủ đề giữa các trình bao bọc thực thi và do đó gửi một tập hợp kết quả khác nhau cho mỗi lần thực hiện đồng thời.

Tạo chế độ xem cơ sở

Để tạo chế độ xem cơ sở mới bằng nguồn dữ liệu Kafka:

  • Nhấp đúp vào nguồn dữ liệu Kafka và sau đó nhấp vào “ Tạo chế độ xem cơ sở ”.
  • Đặt các thông số như sau:
  • Chủ đề ( bắt buộc ): Các trình môi giới Kafka chứa các chủ đề hoạt động giống như một hàng đợi tin nhắn nơi các ứng dụng khách có thể viết và đọc dữ liệu của họ. Tất cả các tin nhắn Kafka được sắp xếp thành các chủ đề. Các nhà sản xuất ghi dữ liệu vào các chủ đề và người tiêu dùng đọc từ chúng.
  • Định dạng tin nhắn ( bắt buộc ): là  định dạng mà tin nhắn có. Các định dạng được hỗ trợ là:
  • Sợi dây
  • avro
  • Avro (Confluent)  — Định dạng Avro cụ thể của Confluent.
  • nguyên mẫu
  • Protobuf (Confluent)  — Định dạng Protobuf cụ thể của Confluent.
  • JSON
  • Đường dẫn lược đồ : Khi sử dụng ” Avro “, ” Protobuf ” hoặc ” JSON ” làm định dạng thư, trường này – bắt buộc trong những trường hợp này– cho phép đặc tả của lược đồ được sử dụng để giải tuần tự hóa thư ở các định dạng này. Đây có thể là tệp cục bộ hoặc tuyến HTTP trỏ đến điểm cuối trong sổ đăng ký lược đồ trả về lược đồ cụ thể để sử dụng (ví dụ: http://confuentserver:8081/schemas/ids/1  cho lược đồ có id 1  trong Confluent Sổ đăng ký lược đồ).
Mẫu lược đồ Avro{  “không gian tên”: “Tin nhắn”,  “type”: “ghi”,  “tên”: “Tin nhắn sự kiện”,  “lĩnh vực”: [        { “tên”: “máy”, “loại”: “chuỗi” },        { “name”: “id”, “type”: “string” },        { “tên”: “ngày”, “loại”: “dài” },        { “name”: “status”, “type”: “float” },        { “tên”: “tòa nhà”, “loại”: “chuỗi” }  ]}
Mẫu lược đồ JSON{    “title”: “Tin nhắn”,    “loại”: “đối tượng”,    “của cải”: {       “loại”: { “loại”: “chuỗi”},       “t”: {“loại”: “số”},       “k”: { “kiểu”: “số nguyên” }    }}
Mẫu lược đồ Protobufcú pháp = “proto3”;gói test.protos;tùy chọn java_multiple_files = true;tin nhắn FirstMessage {    int32 id = 1;    tên chuỗi = 2;    map<int64, SecondMessage> tin nhắn = 3;    một trong công ty_oneof{       lặp lại int64 numInfo = 4;       SecondMessage newMessage = 5;    }}tin nhắn SecondMessage {  enum Phép liệt kê {    MỘT = 0;    HAI = 1;  }   int64 id = 1;  tên chuỗi = 2;  Phép liệt kê = 3;}

Các trường được đề cập ở trên là chung cho tất cả các cách của người tiêu dùng. Tuy nhiên, có các trường bổ sung trong một số trình bao bọc. Đó là:

  • Người tiêu dùng gia tăng:
  • ID nhóm ( bắt buộc ): chỉ định tên của Nhóm người tiêu dùng Kafka C  mà trình bao bọc tùy chỉnh sẽ thuộc về.
  • C người tiêu dùng giữa các ngày:
  • Tiền tố ID nhóm  (tùy chọn, được khuyến nghị): Tiền tố được sử dụng để tính toán ID nhóm người tiêu dùng mới cho mỗi lần thực thi để các lần thực thi đồng thời không bị ảnh hưởng bởi việc tái cân bằng phân vùng. Tiền tố mặc định (“denodo”) sẽ được sử dụng nếu không được chỉ định.
  • Ngày bắt đầu  ( tùy chọn ): là ngày tối thiểu mà hồ sơ được lấy, (bao gồm).
  • Ngày kết thúc  ( tùy chọn ): là ngày tối đa mà hồ sơ được lấy (không bao gồm).

Truy cập an toàn vào cụm Kafka bằng Kerberos

Cấu hình để truy cập Kafka khi bật Kerberos yêu cầu cung cấp thông tin xác thực Kerberos cho cấu hình của trình bao bọc.

Các tham số Kerberos là:

  • Tên chính Kerberos : Kerberos v5 Tên chính để truy cập Kafka, ví dụ: Primary/instance@realm .
! Ghi chú
Nếu bạn nhập một chữ có chứa một trong các ký tự đặc biệt được sử dụng để biểu thị các biến nội suy @ , \ , ^ , { , } , bạn phải thoát các ký tự này bằng \ .Ví dụ: nếu tên chính của Kerberos chứa @  thì bạn phải nhập \@ .
  • Tệp keytab Kerberos : Tệp keytab chứa khóa của Kerberos chính.
  • Trung tâm phân phối Kerberos : Trung tâm phân phối khóa Kerberos.
  • Tên Dịch vụ Kerberos : Cấu hình của trình bao bọc tùy chỉnh phải bao gồm một thuộc tính có tên là ‘ sasl.kerberos.service.name ‘. Giá trị mặc định của thuộc tính đó được đặt là ‘ kafka ‘. Tuy nhiên, nếu muốn có một giá trị khác thay vì giá trị mặc định, bạn phải bao gồm một mục mới có giá trị mới cho thuộc tính trong tệp thuộc tính được tải bằng trường ‘ Đường dẫn thuộc tính tùy chỉnh ‘ . Ví dụ: tệp phải chứa một dòng như sau: sasl.kerberos.service.name=your_service_name
! Ghi chú
Ngoại trừ ‘ Kerberos Service Name ‘ , tất cả các tham số trước đó là bắt buộc khi Kerberos được kích hoạt.

Tập tin krb5.conf ‘ phải có trong hệ thống tập tin . Dưới đây là một ví dụ về tệp cấu hình Kerberos: 

[libdefaults]  refresh_lifetime =  7d  có thể chuyển tiếp =  đúng  default_realm =  EXAMPLE.COM  ticket_lifetime =  24h  dns_lookup_realm =  sai  dns_lookup_kdc =  sai[miền_cõi]  <tên_miền> =  EXAMPLE.COM[cõi]  VÍ DỤ.COM  = {    admin_server = <your_admin_server>     kdc  = <your_kdc>   }[đăng nhập]  mặc định =  TỆP:/var/log/krb5kdc.log   admin_server = TỆP:/var/log/kaadmind.log  kdc = TỆP:/var/log/krb5kdc.log

Thuật toán để định vị tệp  krb5.conf  như sau:

  • Nếu thuộc tính hệ thống java.security.krb5.conf  được đặt, thì giá trị của thuộc tính hệ thống được giả định để chỉ định đường dẫn và tên tệp.
  • Nếu giá trị thuộc tính hệ thống đó không được đặt, thì tệp cấu hình sẽ được tìm trong thư mục
  • <java-home>\lib\security  (Windows)
  • <java-home>/lib/security  (Solaris và Linux)
  • Nếu vẫn không tìm thấy tệp, thì một nỗ lực được thực hiện để xác định vị trí của nó như sau:
  • /etc/krb5/krb5.conf  (Solaris)
  • c:\winnt\ krb5.ini  (Windows)
  • /etc/krb5.conf  (Linux)

Ví dụ

  • Để hiển thị một ví dụ về việc thực thi trình bao bọc,  một tập hợp các thông báo đã được xuất bản trong Kafk a. Các bản ghi này đã được thêm vào chủ đề ‘ my-test-topic ‘ bởi nhà sản xuất dựa trên dòng lệnh có trong Kafka’s trong

Việc thực thi lệnh cung cấp một lời nhắc thông qua đó các bản ghi có định dạng khóa: giá trị  được chèn vào.

Sau khi được chèn, dữ liệu có thể được tham khảo thông qua người tiêu dùng dựa trên dòng lệnh của Kafka.

        Các bản ghi được chèn có thể được nhìn thấy trong đầu ra của lệnh thực thi.

  • Tạo chế độ xem cơ sở:
  • Chuỗi kết nối = 192.168.56.102:9092
  • Chủ đề = my-test-topic
  • Định dạng tin nhắn: Chuỗi
  • Lược đồ của chế độ xem cơ sở được hiển thị và bạn có thể đổi tên nó:
  • Sau khi nhấp vào “ Ok ”, bạn có thể thực hiện các truy vấn CHỌN ,  ví dụ :
  • CHỌN * TỪ bv_kafka;
Denodo Kafka

Hạn chế Denodo kafka

Mất dữ liệu trình bao bọc gia tăng

Vì các mệnh đề OFFSET , FETCH  và LIMIT  không được ủy quyền cho trình bao bọc tùy chỉnh nên việc sử dụng các mệnh đề này có thể gây mất dữ liệu. Điều tương tự cũng có thể xảy ra với mệnh đề WHERE  .

Sử dụng Cơ quan đăng ký lược đồ cho Avro/Protobuf/JSON

Cơ quan đăng ký lược đồ không phải là một tính năng tiêu chuẩn của các tiêu chuẩn Avro, Protobuf hoặc JSON, nhưng chúng là một công cụ ít nhiều phổ biến được cung cấp bởi các nhà cung cấp dịch vụ nhắn tin Kafka. Denodo Kafka Custom Wrapper cung cấp hỗ trợ truy xuất các lược đồ từ bất kỳ cơ quan đăng ký lược đồ nào có thể trả về một lược đồ dưới dạng tải trọng của một URL và cũng hỗ trợ cho Sổ đăng ký lược đồ hợp lưu trả về các lược đồ ở định dạng tải trọng tùy chỉnh.

Tuy nhiên, xin lưu ý rằng có một số hạn chế đối với việc sử dụng các cơ quan đăng ký lược đồ trong trình bao bọc này:

  • Do tính chất tĩnh của cấu trúc của chế độ xem Denodo, lược đồ được sử dụng cho chế độ xem dựa trên Kafka phải được xác định duy nhất bởi URL trả về nó (tức là bằng cách chỉ định ID mà nó đã được chỉ định trong sổ đăng ký). Các cơ quan đăng ký lược đồ thường nhằm mục đích dễ dàng hỗ trợ thực tế là mỗi thông báo được tuần tự hóa Avro/Protobuf trong một chủ đề Kafka có thể (có khả năng) được định hình theo lược đồ riêng của nó. Việc tuần tự hóa nhị phân của thông báo sẽ chứa, được thêm tiền tố vào tải trọng Avro thực tế, ID của lược đồ được sử dụng để giải tuần tự hóa tải trọng Avro đó (thông báo) và lược đồ đó sau đó sẽ được truy xuất nhanh chóng cho mỗi thông báo bởi hệ thống thực hiện deserialization. Tuy nhiên, điều này không phù hợp với yêu cầu của chế độ xem Denodo,
  • Các lược đồ được chỉ định trong dạng xem (thông qua đường dẫn tệp cục bộ hoặc URL đăng ký lược đồ) cần phải hoàn toàn độc lập. Chúng không thể bao gồm các định nghĩa loại từ các tệp lược đồ khác cần tải xuống riêng.
  • Các lược đồ được chỉ định làm URL sẽ được truy xuất mỗi khi trình bao bọc tùy chỉnh được thực thi, do đó, việc chỉ định các lược đồ làm đường dẫn tệp cục bộ luôn được khuyến nghị khi các lệnh gọi thường xuyên đến sổ đăng ký lược đồ có thể gây ra sự cố về hiệu suất.

Các loại logic Avro


Chỉ có một loại logic được hỗ trợ trong lược đồ Avro: số thập phân .

Các loại và cú pháp Protobuf

  • Cú pháp được sử dụng trong các tệp proto phải là proto3.
  • Loại bất kỳ  không được hỗ trợ trong các tệp proto  do các hạn chế trong thư viện thời gian chạy riêng của Google dành cho protobuf.

Trường hợp sử dụng Denodo kafka

Giá của một hãng hàng không

Vé máy bay có thể thay đổi giá thường xuyên. Trong bối cảnh này, Kafka có thể rất hữu ích vì nó cho phép mỗi lần thay đổi giá được lưu trữ trong một chủ đề.

Đối với điều này, một bản ghi có thông tin liên quan đến chuyến bay tại một thời điểm nhất định có thể được lưu trữ (ví dụ: ở định dạng JSON) trong chủ đề đó. Bản ghi này sẽ bao gồm, ví dụ, mã định danh chuyến bay và giá liên quan.

Denodo Kafka Custom Wrapper, sử dụng chế độ đọc chủ đề gia tăng, có thể đóng vai trò là người tiêu dùng thông tin được lưu trữ trong chủ đề đó. Bằng cách này, bạn có thể kiểm tra sự thay đổi giá của một chuyến bay kể từ lần cuối cùng họ được tư vấn.

Mặt khác, thông qua chế độ tiêu thụ giữa các ngày của một chủ đề có Trình bao bọc tùy chỉnh Denodo Kafka, bạn có thể kiểm tra xem giá chuyến bay thay đổi như thế nào theo thời gian.

Thông tin thu được từ trình bao bọc có thể được làm phong phú bằng cách kết hợp thông tin được lưu trữ trong chủ đề với dữ liệu của chế độ xem chứa thông tin về chuyến bay (số nhận dạng chuyến bay, sân bay xuất phát, sân bay đích, ngày khởi hành, thời lượng, v.v.) . Điều này có thể được thực hiện thông qua mệnh đề THAM GIA.

Cuối cùng, để giữ cho bộ đệm của chế độ xem liên kết đó được cập nhật, một công việc Bộ lập lịch biểu Denodo thuộc loại VDPCache có thể được sử dụng để tải trước bộ đệm của chế độ xem được lưu trong bộ nhớ cache mỗi thời điểm nhất định (ví dụ: hàng ngày).

Tùy thuộc vào cách tiêu thụ được sử dụng bởi trình bao bọc, dữ liệu có thể được áp dụng cho các ngữ cảnh khác nhau. Ví dụ: dữ liệu được thu thập thông qua chế độ đọc khoảng thời gian có thể rất hữu ích trong các ứng dụng Business Intelligence\Reporting Analytics. Mặt khác, nếu chế độ đọc gia tăng được sử dụng, dữ liệu có thể được áp dụng trong các môi trường như ứng dụng doanh nghiệp, trang web, v.v.

Trong hình ảnh sau đây, bạn có thể thấy mô tả chung về trường hợp sử dụng vé máy bay.

LIÊN HỆ VỚI INDA

TIN TỨC LIÊN QUAN

Hướng dẫn ứng tuyển