confluent Schama版本檢查異常

2021-07-13 23:24:51 字數 1146 閱讀 5593

1. connect 對schema的處理過程

寫個精簡版流程:

step1. 根據id 獲取schema defination;

step2. 根據scham defination和 subject檢查版本號;

step3. 用schema defination做序列化處理。

2. 扒一扒:

說明一下對處理過程的理解和不理解:

1. connect對schema有快取,了解,為了效率;

2. 不覺明厲的schema版本,硬編碼,如果你是結合hive的方案,一定會去檢查的。這個我就不是很理解了,後面再專門說下這個schema版本控制;

3. step1中進行了快取,理解, 可是在step2之後改變了這個快取物件。加了個字段「schema.registry.schema.version「,這種處理直接倒吸一口涼氣。

3.坑在**?

image這樣乙個場景:兩個topic有相同的schema定義,還是很常見的。這裡有兩個隱藏點:

1. connect要求subject名稱和topic名稱是關聯的;

2. 如果schema的定義相同,id一致;

依次處理topic1和topic2的資料:

1. topic1開始寫資料,step1中,從schema registry拿schema defination,快取;

2. topic1 順利通過step2,然後,修改了schema的快取(見前面第3點)

3. topic2 在step1中,根據id會從快取中取到之前快取的資料;

4. topic2 在step2中就呵呵了,schama已經被改寫了,檢查不通過。

4. 怎麼規避

說下不是辦法的辦法:

1. 在schema defination中就定義」schema.registry.schema.version「

這個字段,大部分場景下,這是不可以接受的,因為需要在kafka中增加一列資料,如果結合hive,還會在hive表中增加乙個列。

2. 避免兩個topic用相同的schema定義;

3. 等著confluent改掉,這個是issue: 請自覺遮蔽那個英文很醜的。

IOS 版本檢查更新

在我們使用應用時,一開啟應用,如果此應用有新的版本,常常能在應用中給出提示,是否要更新此應用。所以,我們就來看看,版本更新是如何實現的。蘋果給了我們乙個介面,能根據應用id請求一些關於應用的資訊。我們可以根據返回的資訊,來判斷版本是否和應用的版本一致,如果不一致,那麼就出現新的版本了。這時,就需要向...

ios檢查版本更新

在我們使用應用時,一開啟應用,如果此應用有新的版本,常常能在應用中給出提示,是否要更新此應用。所以,我們就來看看,版本更新是如何實現的。蘋果給了我們乙個介面,能根據應用id請求一些關於應用的資訊。我們可以根據返回的資訊,來判斷版本是否和應用的版本一致,如果不一致,那麼就出現新的版本了。這時,就需要向...

IOS檢查版本更新

ios的版本號,乙個叫做version,乙個叫做build.獲得version nsbundle mainbundle objectforinfodictionarykey cfbundleshortversionstring 獲得build號 nsbundle mainbundle infodic...