{"id":38041153,"url":"https://github.com/super-flat/parti","last_synced_at":"2026-01-16T19:54:26.619Z","repository":{"id":174197516,"uuid":"407985592","full_name":"super-flat/parti","owner":"super-flat","description":"🪩 parti is cluster sharding via raft over gRPC","archived":false,"fork":false,"pushed_at":"2025-12-18T02:57:52.000Z","size":375,"stargazers_count":6,"open_issues_count":12,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-12-21T09:08:43.146Z","etag":null,"topics":["grpc","partitioning","raft","sharding"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/super-flat.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-09-18T23:04:31.000Z","updated_at":"2025-12-13T13:49:27.000Z","dependencies_parsed_at":"2023-10-23T13:34:13.749Z","dependency_job_id":"54bcff52-7343-4200-b16f-591c1ca1653b","html_url":"https://github.com/super-flat/parti","commit_stats":null,"previous_names":["super-flat/parti"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/super-flat/parti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/super-flat%2Fparti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/super-flat%2Fparti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/super-flat%2Fparti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/super-flat%2Fparti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/super-flat","download_url":"https://codeload.github.com/super-flat/parti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/super-flat%2Fparti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28482117,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: 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":["grpc","partitioning","raft","sharding"],"created_at":"2026-01-16T19:54:26.502Z","updated_at":"2026-01-16T19:54:26.615Z","avatar_url":"https://github.com/super-flat.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# parti\n\n[![build](https://github.com/super-flat/parti/actions/workflows/main.yml/badge.svg)](https://github.com/super-flat/parti/actions/workflows/main.yml)\n\nParti provides a simple, partitioned messaging framework across a cluster of nodes. Send a message for a given partition to any node in the cluster, and the message will be forwarded to the node that owns that partition. The cluster will automatically rebalance as nodes are added and removed. Under the hood, Parti uses [hashicorp/raft](https://github.com/hashicorp/raft) to distribute work and manage membership.\n\n![Message Forwarding Diagram](./docs/parti.png)\n\n### SAMPLE\n```sh\n# run node 1\nmake run1\n# run node 2 (in another terminal)\nmake run2\n# run node 3 (in another terminal)\nmake run3\n\n# observe the partitions by asking node 1\ngo run ./client stats --addr 0.0.0.0:50101\n\n# ping a partition from a given node\ngo run ./client ping --addr 0.0.0.0:50101 --partition 0\ngo run ./client ping --addr 0.0.0.0:50101 --partition 9\n\n# send a message to various partitions and observe it forward\n# curl 'localhost:50001/send?partition=9\u0026message=msg2'\ngo run ./example send --partition 0 --addr 0.0.0.0:50001 hello world\n# curl 'localhost:50001/send?partition=1\u0026message=msg1'\ngo run ./example send --partition 9 --addr 0.0.0.0:50001 hello world\n```\n\n### Proposed rebalance procedure\n1. tell all nodes the pause the partition\n2. confirm with prior owner that they have shut down (or confirm they are dead and not in the cluster)\n3. inform all nodes of the new owner and that it's started\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuper-flat%2Fparti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuper-flat%2Fparti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuper-flat%2Fparti/lists"}