Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EXPORTER] 支援寫入 metadata 在備份文件尾部 #1830

Open
Haser0305 opened this issue Jul 6, 2023 · 6 comments
Open

[EXPORTER] 支援寫入 metadata 在備份文件尾部 #1830

Haser0305 opened this issue Jul 6, 2023 · 6 comments

Comments

@Haser0305
Copy link
Collaborator

Haser0305 commented Jul 6, 2023

exporter 在未來可以支援壓縮備份的功能,因此需要有 metadata 的搭配可以判斷檔案類型,並且供未來的 importer 可以靠 metadata 增加更多功能的可能性。

以目前的 exporter 架構來說,比較不方便在創建 recordWriter 的時候帶上一些額外資訊,如 connector name, compression type 等資料,並且 outputStream 的傳遞如果是在有壓縮的狀況下,會不好處理針對 metadata 不壓縮寫入的處理。

預計包含的 metadata

  • connector name:如果不同次備份內容混淆,可以依照此區分
  • topic partition 資訊:輔助上述功能
  • 1st record offset: 可以讓檔名與 offset 脫鉤
  • 1st record timestamp:與上面功能差不多,並且如果未來有需要還原時快速判斷檔案是否需要,可以用到
  • record count:紀錄檔案中包含多少筆資料
  • roll.duration:可以知道此檔案所包含的時間區間大概有多長
  • compression type:壓縮演算法名稱

預計達到的目標

  • 支援創建 recordWriter 可以帶上額外資訊
  • 針對壓縮的要求,盡量減少在同一時間針對同一檔案開啟的 outputStream 以避免佔用多餘的連線數,以降低效能
@chia7712
Copy link
Contributor

chia7712 commented Jul 7, 2023

不好意思,可否協助補上有哪些資訊可以放在metadata?謝謝

@Haser0305
Copy link
Collaborator Author

好的,那我編輯一下補充 metadata 資訊

@Haser0305
Copy link
Collaborator Author

補充一下當下作法的規劃,metadata 資料應該會固定為 552 Bytes
connector name 跟 topic name 會將長度以空白補充到固定長度。

  • connectorName: 255 Bytes
  • topicName: 255 Bytes
  • partition: 4 Bytes
  • 1st record offset: 8 Bytes
  • 1st record timestamp: 8 Bytes
  • record count: 4 Bytes
  • roll.duration: 8 Bytes
  • compression type: 10 Bytes

@chia7712
Copy link
Contributor

@Haser0305 請問會放版本號嗎?如果之後metadata有更新(格式發生變化)的話?

@Haser0305
Copy link
Collaborator Author

目前是跟 v0 一樣維持在檔案的開頭前2Bytes,但是變到了 V1,因為現在 importer 這邊還沒有應對 metadata 的部分做變更

@chia7712
Copy link
Contributor

目前是跟 v0 一樣維持在檔案的開頭前2Bytes,但是變到了 V1,因為現在 importer 這邊還沒有應對 metadata 的部分做變更

加上 metadata 後版號應該要提升一個,所以現在應該是要改成 v1 沒錯~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants