Kafka Schema Registry简介

Schema Registry

Schema Registry为你的元数据信息提供服务层。它提供了RESTFUL接口用于存储Avro schemas,它存有版本化的历史记录,提供多个兼容性设置,并根据兼容性设置对schema进行调整。

 

API

Schemas

GET /schemas/ids/{int:id}

通过input id获取schema string,id是schema的唯一标识符

 

Subjects

subjects提供了注册在你的schema registry的所有subject列表。subject是schema注册时的名称。如果你为kafaka使用schema registry,那么subject是一个<topic>-key还是<topic>-value取决于你为topic注册时选择的什么

 

GET /subjects

subjects列表

 

GET /subjects/(string:subject)/versions

该subject版本列表

 

GET /subjects/(string:subject)/versions/(versionId:versionId)

该subject下特定版本的schema信息

 

设计总览

Schema Registry是一个针对Avro Schema的分布式存储层,使用Kafak作为其底层存储机制。一些核心设计决策:

  • 为每一个schema分配一个全局唯一的id,分配的id单调递增,但不一定是连续的,使用zookeeper用于帮助维护这一保证
  • kafka提供持久后端和预写日志功能
  • schema registry为分布式架构,有一个master节点,zookeeper用来选举master节点

批量ID分配

Schema id由当前master schema registry分配,一个接着一个地分发给新的register schema。

/<schema.registry.zk.namespace>/schema_id_counter路径存储当前id批次的上限,新批次分配由master选举或者当前批次佣金用尽触发,这种批次分配策略能够防止潜在的僵尸master进程

 

Kafak Backend

schema registry用kafak作为存储后台,特殊的kafka topic<kafkastore.topic>的一个partition被用作高可用预写日志,所有的schema,subject/version和id元数据,和兼容性数据会作为messages到这个日志。一个schema registry实例因此会同时在_schema topic下生产和消费,它生产消息到log,例如新的schema被注册到subject,或更新兼容性设置。schema registry的后台进程消费_schema日志,更新本地缓存去映射新加入的schema或兼容性设置。以这种方式更新kafka日志中的本地状态可以确保持久性、有序性和易恢复性。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值