{"id":46490805,"url":"https://github.com/rmb938/franz-schema-registry","last_synced_at":"2026-03-06T10:33:22.420Z","repository":{"id":215865377,"uuid":"618881702","full_name":"rmb938/franz-schema-registry","owner":"rmb938","description":"Kafka Schema Registry that is API compatible with Confluent Schema Registry","archived":false,"fork":false,"pushed_at":"2023-04-09T19:03:17.000Z","size":230,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-01T19:30:43.098Z","etag":null,"topics":["avro","avro-schema","confluent","confluent-schema-registry","json","json-schema","kafka","protobuf","protobuf-schema","rest-api","schema","schema-registry","schemas"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rmb938.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-25T16:14:36.000Z","updated_at":"2024-03-21T22:01:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"c3be99a4-64fb-4895-acfa-f22a3cab2667","html_url":"https://github.com/rmb938/franz-schema-registry","commit_stats":null,"previous_names":["rmb938/franz-schema-registry"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rmb938/franz-schema-registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmb938%2Ffranz-schema-registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmb938%2Ffranz-schema-registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmb938%2Ffranz-schema-registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmb938%2Ffranz-schema-registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmb938","download_url":"https://codeload.github.com/rmb938/franz-schema-registry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmb938%2Ffranz-schema-registry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30171869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avro","avro-schema","confluent","confluent-schema-registry","json","json-schema","kafka","protobuf","protobuf-schema","rest-api","schema","schema-registry","schemas"],"created_at":"2026-03-06T10:33:20.990Z","updated_at":"2026-03-06T10:33:22.248Z","avatar_url":"https://github.com/rmb938.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# franz-schema-registry\nKafka Schema Registry that is API compatible with [Confluent Schema Registry](https://github.com/confluentinc/schema-registry)\n\n## Why?\n\nThe [architecture](https://docs.confluent.io/platform/current/schema-registry/multidc.html#multi-datacenter-setup) of \nConfluent Schema Registry requires the deployment of a single read/write cluster that can be mirrored to many read-only \nreplicas. In a normal architecture this means that your read/write cluster is in a single region. If this single region \ngoes down there is no straight-forward way to promote a read-only replica to read/write. The promotion process requires \nall the mirrors to be modified, configuration changes and possible re-deployments of clusters. This takes time, is \nerror-prone, and cannot easily be automated.\n\nOne alternative is to use [Multi-Cluster Schema Registry](https://docs.confluent.io/platform/current/control-center/topics/schema.html#enabling-multi-cluster-sr)\nThis however requires the use of Confluent Control Center which is a paid product. This also just distributes schemas \nacross multiple registries and does not necessarily make disaster recovery easier to implement. This can also segregate\nschemas to specific Kafka clusters and goes against [best practice](https://www.confluent.io/blog/17-ways-to-mess-up-self-managed-schema-registry/) \nof having a single globally available schema registry.\n\nAnother solution is [Schema Linking](https://docs.confluent.io/platform/current/schema-registry/schema-linking-cp.html#what-is-schema-linking)\nBut this also requires a paid product and further complicates the architecture of Schema Registry.\n\nFranz Schema Registry takes a different approach. Instead of relying on Kafka for its data storage it uses\n[Google Spanner](https://cloud.google.com/spanner), specifically the [Postgres Interface](https://cloud.google.com/spanner/docs/postgresql-interface)\nGoogle Spanner is a SQL-based multi-regional distributed database. It removes the reliance on a single region and removes the \ncomplicated mirroring and recovery architecture from Schema Registry.\n\n### Pros \u0026 Cons\n\n#### Pros\n\n* Simplified Architecture\n* Faster and Easier Disaster Recovery; handled mostly by Google Spanner itself\n* Globally Available Database \u0026 Clustering\n\n#### Cons\n\n* Possibly Incompatibility with [Schema Validation on Confluent Server](https://docs.confluent.io/platform/current/schema-registry/schema-validation.html)\n* Requires the use of another technology; Google Spanner\n\n## Production Deployment\n\nFranz Schema Registry is not production ready and is not recommended to be deployed.\n\n## Development\n\n1. Clone this repo\n2. Spin up a local postgres database via `docker-compose up`\n3. Run the application via `make run`\n\n## Features Implemented\n\n- [X] Avro Schemas\n  - [X] Loading \u0026 Validating \n  - [X] Backwards Compatibility\n- [ ] Protobuf Schemas\n  - [ ] Loading \u0026 Validating\n  - [ ] Backwards Compatibility\n- [ ] JSON Schemas\n  - [ ] Loading \u0026 Validating\n  - [ ] Backwards Compatibility\n- [X] Schema References\n- [X] Schema Compatibility Checks\n- [ ] Schema Normalization - https://docs.confluent.io/platform/current/schema-registry/fundamentals/serdes-develop/index.html#schema-normalization\n- [ ] Prometheus Metrics\n- [ ] ACLs\n- [ ] Full `/schemas` API compatibility\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--schemas-ids-int-%20id\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--schemas-ids-int-%20id-schema\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--schemas-types-\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--schemas-ids-int-%20id-versions\n  - [ ] Unit Testing\n  - [ ] e2e Testing\n- [ ] Full `/subjects` API compatibility\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--subjects\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--subjects-(string-%20subject)-versions\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#delete--subjects-(string-%20subject)\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--subjects-(string-%20subject)-versions-(versionId-%20version)\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--subjects-(string-%20subject)-versions-(versionId-%20version)-schema\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#post--subjects-(string-%20subject)-versions\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#post--subjects-(string-%20subject)\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#delete--subjects-(string-%20subject)-versions-(versionId-%20version)\n  - [X] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--subjects-(string-%20subject)-versions-versionId-%20version-referencedby\n  - [X] Unit Testing\n  - [ ] e2e Testing\n- [ ] Full `/mode` API compatibility\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--mode\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#put--mode\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--mode-(string-%20subject)\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#put--mode-(string-%20subject)\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#delete--mode-(string-%20subject)\n  - [ ] Unit \u0026 e2e Testing\n- [ ] Full `/compatibility` API compatibility\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#post--compatibility-subjects-(string-%20subject)-versions-(versionId-%20version)\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#post--compatibility-subjects-(string-%20subject)-versions\n  - [ ] Unit Testing\n  - [ ] e2e Testing\n- [ ] Full `/config` API compatibility\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#put--config\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--config\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#put--config-(string-%20subject)\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#get--config-(string-%20subject)\n  - [ ] https://docs.confluent.io/platform/current/schema-registry/develop/api.html#delete--config-(string-%20subject)\n  - [ ] Unit Testing\n  - [ ] e2e Testing\n- [ ] Full `/exporters` API compatibility\n  - This most likely will not be implemented\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmb938%2Ffranz-schema-registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmb938%2Ffranz-schema-registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmb938%2Ffranz-schema-registry/lists"}