{"id":13393571,"url":"https://github.com/gojek/weaver","last_synced_at":"2026-01-11T22:06:52.080Z","repository":{"id":39004905,"uuid":"167779843","full_name":"gojek/weaver","owner":"gojek","description":"An Advanced HTTP Reverse Proxy with Dynamic Sharding Strategies","archived":false,"fork":false,"pushed_at":"2023-03-20T19:03:10.000Z","size":287,"stargazers_count":604,"open_issues_count":9,"forks_count":51,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-03-28T16:11:44.766Z","etag":null,"topics":["go","golang","layer7","proxy","proxy-server","sharding"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gojek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-01-27T06:49:54.000Z","updated_at":"2025-03-16T14:23:38.000Z","dependencies_parsed_at":"2023-07-14T02:51:24.230Z","dependency_job_id":null,"html_url":"https://github.com/gojek/weaver","commit_stats":null,"previous_names":["gojektech/weaver","gojekfarm/weaver"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gojek%2Fweaver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gojek%2Fweaver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gojek%2Fweaver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gojek%2Fweaver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gojek","download_url":"https://codeload.github.com/gojek/weaver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247217222,"owners_count":20903009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["go","golang","layer7","proxy","proxy-server","sharding"],"created_at":"2024-07-30T17:00:56.165Z","updated_at":"2026-01-11T22:06:52.073Z","avatar_url":"https://github.com/gojek.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Weaver - A modern HTTP Proxy with Advanced features\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/weaver-logo.png\" width=\"360\"\u003e\u003c/p\u003e\n\n\u003ca href=\"https://travis-ci.org/gojektech/weaver\"\u003e\u003cimg src=\"https://travis-ci.org/gojektech/weaver.svg?branch=master\" alt=\"Build Status\"\u003e\u003c/img\u003e\u003c/a\u003e [![Go Report Card](https://goreportcard.com/badge/github.com/gojekfarm/weaver)](https://goreportcard.com/report/github.com/gojekfarm/weaver)\n  \u003ca href=\"https://golangci.com\"\u003e\u003cimg src=\"https://golangci.com/badges/github.com/gojektech/weaver.svg\"\u003e\u003c/img\u003e\u003c/a\u003e\n[![Coverage Status](https://coveralls.io/repos/github/gojektech/weaver/badge.svg?branch=master)](https://coveralls.io/github/gojektech/weaver?branch=master)\n[![GitHub Release](https://img.shields.io/github/release/gojektech/weaver.svg?style=flat)](https://github.com/gojektech/weaver/releases)\n\n* [Description](#description)\n* [Features](#features)\n* [Installation](#installation)\n* [Architecture](#architecture)\n* [Configuration](#configuration)\n* [Contributing](#contributing)\n* [License](#license)\n\n## Description\nWeaver is a Layer-7 Load Balancer with Dynamic Sharding Strategies. \nIt is a modern HTTP reverse proxy with advanced features.\n\n## Features:\n\n- Sharding request based on headers/path/body fields\n- Emits Metrics on requests per route per backend\n- Dynamic configuring of different routes (No restarts!)\n- Is Fast\n- Supports multiple algorithms for sharding requests (consistent hashing, modulo, s2 etc)\n- Packaged as a single self contained binary\n- Logs on failures (Observability)\n\n## Installation\n\n### Build from source\n\n- Clone the repo:\n```\ngit clone git@github.com:gojektech/weaver.git\n```\n\n- Build to create weaver binary\n```\nmake build\n```\n\n### Binaries for various architectures\n\nDownload the binary for a release from: [here](https://github.com/gojekfarm/weaver/releases)\n\n## Architecture\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/weaver_architecture.png\" width=\"860\"\u003e\u003c/p\u003e\n\nWeaver uses `etcd` as a control plane to match the incoming requests against a particular route config and shard the traffic to different backends based on some sharding strategy.\n\nWeaver can be configured for different routes matching different paths with various sharding strategies through a simple route config named ACL.\n\nThe various sharding strategies supported by weaver are:\n\n- Consistent hashing (hashring)\n- Simple lookup based\n- Modulo\n- Prefix lookup\n- S2 based\n\n## Deploying to Kubernetes\n\nCurrently we support deploying to kubernetes officially. You can check the doc [here](deployment/weaver)\n\n## Examples\n\nWe have examples defined to deploy it to kubernetes and using acls. Please checkout out [examples](examples/body_lookup)\n\n## Configuration\n\n### Defining ACL's\n\nDetails on configuring weaver can be found [here](docs/weaver_acls.md)\n\n### Please note\n\nAs the famous saying goes, `All Load balancers are proxies, but not every proxy is a load balancer`, weaver currently does not support load balancing.\n\n## Contributing\nIf you'd like to contribute to the project, refer to the [contributing documentation](https://github.com/gojektech/weaver/blob/master/CONTRIBUTING.md)\n\n## License\n\n```\nCopyright 2018, GO-JEK Tech (http://gojek.tech)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgojek%2Fweaver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgojek%2Fweaver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgojek%2Fweaver/lists"}