franz-schema-registry

command module
v0.0.0-...-f8652d3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2023 License: MIT Imports: 13 Imported by: 0

README

franz-schema-registry

Kafka Schema Registry that is API compatible with Confluent Schema Registry

Why?

The architecture of Confluent Schema Registry requires the deployment of a single read/write cluster that can be mirrored to many read-only replicas. In a normal architecture this means that your read/write cluster is in a single region. If this single region goes down there is no straight-forward way to promote a read-only replica to read/write. The promotion process requires all the mirrors to be modified, configuration changes and possible re-deployments of clusters. This takes time, is error-prone, and cannot easily be automated.

One alternative is to use Multi-Cluster Schema Registry This however requires the use of Confluent Control Center which is a paid product. This also just distributes schemas across multiple registries and does not necessarily make disaster recovery easier to implement. This can also segregate schemas to specific Kafka clusters and goes against best practice of having a single globally available schema registry.

Another solution is Schema Linking But this also requires a paid product and further complicates the architecture of Schema Registry.

Franz Schema Registry takes a different approach. Instead of relying on Kafka for its data storage it uses Google Spanner, specifically the Postgres Interface Google Spanner is a SQL-based multi-regional distributed database. It removes the reliance on a single region and removes the complicated mirroring and recovery architecture from Schema Registry.

Pros & Cons
Pros
  • Simplified Architecture
  • Faster and Easier Disaster Recovery; handled mostly by Google Spanner itself
  • Globally Available Database & Clustering
Cons

Production Deployment

Franz Schema Registry is not production ready and is not recommended to be deployed.

Development

  1. Clone this repo
  2. Spin up a local postgres database via docker-compose up
  3. Run the application via make run

Features Implemented

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL