不少時候在流數據處理時,咱們會將avro格式的數據寫入到kafka的topic,可是avro寫入到kafka的時候,數據有可能會與版本升級,也就是schema發生變化,此時若是消費端,不知道哪些數據的schema是使用升級前的,哪些數據schema使用升級後,這次消費端一旦就常常會跑出異常,爲了不schema解析時出現異常,就不得不得不使得數據自動過時或者刪除kafka的topic(從新新建topic),這樣必然會形成數據一部分丟失,並且在生產環境下,升級就變得特別麻煩,而不是但願程序不中止,無感升級。
而schema registry能夠解決上班那種狀況的問題,每條記錄對應schema一都和服務中schema一一關聯,消費端能夠經過獲取記錄後就能知道該記錄是使用哪一個版本的schema,自動獲取schema內容進行解析。html
1)Confluent Schema Registry
官網:https://docs.confluent.io/2.0.0/schema-registry/docs/index.html
2)Pulsar Schema
官網:http://pulsar.apache.org/
在2.0版本中,Pulsar引入了對Schema的原生支持。這意味着你能夠在建立Pulsar主題的時候定義消息相應的Schema,而後Pulsar會根據你指定的Schema保證發佈消息的完整性。2.0版本只支持String,Bytes和JSON三種內置Schema。從2.1版本開始,Pulsar原生支持Avro和Protobuf這兩種類型。
Schema將Pulsar從一個只支持非結構化數據的消息系統變成了也支持結構化數據的流數據平臺。在接下來的2.2版本中,Schema將做爲最重要的基石組件用來實現流數據的可查詢化,也就是傳說中的Pulsar SQL。
3)Hortonworks registry
官網:https://hortonworks.com/open-source/schema-registry/
Apache NiFi – Records and Schema Registries
http://wp.huangshiyang.com/apache-nifi-records-and-schema-registries
Installing a local Hortonworks Registry to use with Apache NiFi
https://community.hortonworks.com/content/kbentry/119766/installing-a-local-hortonworks-registry-to-use-wit.html
Hortonworks Registry的開發說明文檔:
https://registry-project.readthedocs.io/en/latest/schema-registry.html#installationapache