我想了解更多關於我們用於我們的卡夫卡話題的avro架構,我對此相對較新。我想知道是否有辦法在特定情況下演變架構。我們用一個新字段更新我們的模式不能爲空或任何默認值,因爲這些標識符都是這種類型。爲此我們所做的工作是創建新的主題,但有沒有更好的方法來演進現有的模式。謝謝。卡夫卡Avro架構演變
1
A
回答
1
有主題的四個可能的兼容性: - Forward
:等待着老版本的架構的客戶端可以讀取新版本 - Backward
:這等待模式的新版本的客戶端可以讀取舊版本 - Both
:以上 都 - None
:上面這些都不是
考慮,有一些次,其中一些生產商將生產新老數據,以及消費者將只准新的或舊的數據。
如何在你的情況下表現客戶?
- 添加一個字段總是向前兼容(老客戶剛落,新領域)
- 只有當你指定一個默認值
而且它是向下兼容的,這是唯一真正的,如果你正在計劃將數據轉換爲特定模式(例如通過相應的POCO) - 如果您只是將其轉換爲json並進行自定義處理,則可以讓新客戶端處理兩種模式。
所以我買兩個possibe方式來wrte到同一個主題:
- 您設置的默認值。你可能會誤解默認值,讀書缺乏 這個字段(可選)實例時,這並不意味着默認值將被寫入,但(報價Avro的規格)
此字段的默認值,使用
例如,如果你以前有「名」,並要添加「姓」,你可以 集「姓」默認爲「NC」(或空),你可能已經在做一個數據庫。
- 您可以設置您的兼容性默認爲
none
(或forward
),這樣就可以更新您的模式(因爲默認情況下,comptibiliaty是backward
)。在這種情況下,等待新模式的客戶端將無法處理舊數據。但是,如果您只處理傳入數據(更改兼容性,更新所有生產者(以便只有新數據將到達),那麼您的客戶端正在等待新模式 - 記住要將兼容性設置回落或兼容性確實適合您的使用要
我會選擇1
相關問題
- 1. 卡夫卡架構演變
- 2. 解密卡夫卡Avro消息
- 3. 卡夫卡:多經紀人架構
- 4. 發行存儲AVRO卡夫卡流於文件系統
- 5. 卡夫卡的Avro控制檯製片快速啓動失敗
- 6. 無法讀取卡夫卡 - Avro Schema消息
- 7. 春季開機卡夫卡駱駝Avro消費者
- 8. 從卡夫卡消費者檢索架構而不使用架構註冊表
- 9. 卡夫卡源vs Avro源使用水槽讀取和寫入數據到卡夫卡頻道
- 10. UnknownCodecException卡夫卡
- 11. 卡夫卡
- 12. 無法構造卡夫卡生產者
- 13. 卡夫卡設置與碼頭構成
- 14. Pyspark多卡夫卡流覆蓋變量
- 15. 卡夫卡與斯卡拉
- 16. 卡夫卡Kubernetes/Minikube
- 17. 卡夫卡的retention.ms沒有被卡夫卡0.10.2強制執行?
- 18. 卡夫卡:如何在卡夫卡實現循環分區
- 19. 卡夫卡連接或卡夫卡客戶
- 20. 春季卡夫卡表現vs本地卡夫卡api
- 21. 卡夫卡流和卡夫卡表一對多關係加入
- 22. 阿帕奇頂點 - 卡夫卡0.9安全卡夫卡主題
- 23. 如何從卡夫卡用卡夫卡流通過間隔
- 24. 卡夫卡0.9:消費從最早的卡夫卡偏移
- 25. 卡夫卡領導人選舉造成卡夫卡流崩潰
- 26. 使反應卡夫卡與合流模式註冊的Avro模式
- 27. 卡夫卡的Avro反序列化問題(java.lang.NoSuchMethodException:java.util.UUID中<init>(java.lang.String中)
- 28. 生產和消費卡夫卡Avro郵件沒有匯合組件
- 29. 我應該使用什麼:卡夫卡流或卡夫卡消費者API或卡夫卡連接
- 30. 運行卡夫卡與連接器的Avro:ConfigException:「缺少架構註冊表URL」
去。如果新字段不能爲空,不能有一個默認值,你會想與所有不包含舊的記錄做那麼什麼這個領域?你想讓他們演變成新的模式嗎? –
是的,但是我很好奇,是否有工作來解決這個問題而不創建新的主題。 –