{"id":13562282,"url":"https://github.com/go-chassis/go-chassis","last_synced_at":"2025-05-13T17:05:12.679Z","repository":{"id":37431600,"uuid":"117545507","full_name":"go-chassis/go-chassis","owner":"go-chassis","description":"a cloud native application framework for Go with rich eco-system","archived":false,"fork":false,"pushed_at":"2025-04-16T21:54:55.000Z","size":4268,"stargazers_count":2735,"open_issues_count":41,"forks_count":476,"subscribers_count":116,"default_branch":"master","last_synced_at":"2025-04-24T00:41:29.507Z","etag":null,"topics":["circuit-breaker","cloud-native","distributed-systems","framework","go","go-restful","grpc","istio","kubernetes","microservice","restful","servicecomb","servicemesh"],"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/go-chassis.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":"security/authr/authenticator.go","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-01-15T12:57:10.000Z","updated_at":"2025-04-11T08:55:14.000Z","dependencies_parsed_at":"2023-09-29T12:48:17.414Z","dependency_job_id":"8c2a309b-ff58-4d73-8ced-8760a73cc52b","html_url":"https://github.com/go-chassis/go-chassis","commit_stats":{"total_commits":837,"total_committers":75,"mean_commits":11.16,"dds":"0.41577060931899645","last_synced_commit":"8036d5b9c1c648e564f5dfa237ddfe0affc7009b"},"previous_names":["servicecomb/go-chassis"],"tags_count":64,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-chassis%2Fgo-chassis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-chassis%2Fgo-chassis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-chassis%2Fgo-chassis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-chassis%2Fgo-chassis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/go-chassis","download_url":"https://codeload.github.com/go-chassis/go-chassis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990460,"owners_count":21995774,"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":["circuit-breaker","cloud-native","distributed-systems","framework","go","go-restful","grpc","istio","kubernetes","microservice","restful","servicecomb","servicemesh"],"created_at":"2024-08-01T13:01:06.658Z","updated_at":"2025-05-13T17:05:12.650Z","avatar_url":"https://github.com/go-chassis.png","language":"Go","funding_links":[],"categories":["开源类库","Go","Open source library","go-chassis","Service Toolkits","servicemesh","Repositories","武器库"],"sub_categories":["微服务","Microservices","Go","后端"],"readme":"![](logo.png)\n\n[![Coverage Status](https://coveralls.io/repos/github/go-chassis/go-chassis/badge.svg)](https://coveralls.io/github/go-chassis/go-chassis) \n[![Go Report Card](https://goreportcard.com/badge/github.com/go-chassis/go-chassis)](https://goreportcard.com/report/github.com/go-chassis/go-chassis) \n[![GoDoc](https://godoc.org/github.com/go-chassis/go-chassis?status.svg)](https://godoc.org/github.com/go-chassis/go-chassis)\n[![HitCount](http://hits.dwyl.io/go-chassis/go-chassis.svg)](http://hits.dwyl.io/go-chassis/go-chassis)  \n[![goproxy.cn](https://goproxy.cn/stats/github.com/go-chassis/go-chassis/badges/download-count.svg)](https://goproxy.cn)\n[![Documentation Status](https://readthedocs.org/projects/go-chassis/badge/?version=latest)](https://go-chassis.readthedocs.io/en/latest/?badge=latest)\n      \n[中文版README](README_cn.md)\n\nGo-Chassis is a microservice framework for rapid development of microservices in Go.\nit focus on helping developer to deliver cloud native application more easily. \nThe idea of logo is, developer can recreate and customize their own \"wheel\"(a framework) by go chassis to accelerate the delivery of software.\n\n### Why use Go chassis\n- powerful middleware \"handler chain\": \npowerful than \"filter\" or \"interceptor\". \neach handler in chain is able to get the running result of backward handler and your business logic.\nIt is very useful in varies of scenario, for example:\n1. a circuit breaker need to check command results\n2. track response status and record it, so that prometheus can collect them\n3. track critical response result, so that you can audit them\n4. distribute tracing, you can complete the end span spec after business logic executed\n\nthe commonplace above is helping you decouple common function from business logic. without handler chain. \nthose function will couple with business logic\n\n- go chassis is designed as a protocol-independent framework, any protocol \nis able to integrate with go chassis and leverage same function like load balancing,\ncircuit breaker,rate limiting, routing management, those function resilient your service\n\n- go chassis makes service observable by bringing open tracing and prometheus to it.\n\n- go chassis is flexible, many different modules can be replaced by other implementation, \nlike registry, metrics, handler chain, config server etc \n\n- With many build-in function like route management, circuit breaker, load balancing, monitoring etc,\nyour don't need to investigate, implement and integrate many solutions yourself.\n\n\n\n# Features\n - **Pluggable discovery service**: Support Service center, kubernetes.\n fit both client side discovery and server side discovery pattern, \n and you can disable service discovery to use end to end communication.\n - **Pluggable Protocol**: \n You can customize protocol, by default support http and grpc, \n go chassis define standardized [model](https://github.com/go-chassis/go-chassis/blob/master/core/invocation/invocation.go) to makes all request of different protocol leverage same features\n - **Multiple server management**: you can separate API by protocols and ports\n - **Handler Chain**: Able to add your own code during service calling for client and server side\n - **rich middleware**: based on handler chain, \n supply circuit breaker, rate limiting, monitoring, auth features. \n [see](https://go-chassis.readthedocs.io/en/latest/middleware.html)\n - **Traffic marker** Traffic marker module is able to mark requests in both client(consumer) or server(provider) side,\nwith marker, you can govern traffic based on it.\n - **Traffic management**: Able to route to different service based on weight and match rule, it can be used in many scenario, such as canary release\n - **Security**: build in cipher, authentication, RSA related funtions\n - **Safety and resilience**: \n support fault-tolerant(retry, rate limiting, client-side load-balancing, circuit breaker) to makes your service facing any unpredictable situation.\n - **Telemetry**: Able to expose Prometheus metric API automatically and customize metrics report. \n Use opentracing-go as standard library.\n - **Backing services**: \n use [backend service](https://go-chassis.readthedocs.io/en/latest/dev-guides/backends.html) as a plugin, \n so that your app can be easily tested, and swap to another plugin.\n - **Hot re-configuration**: \n Powered by go-archaius, configurations can be reload in runtime, like load balancing, circuit breaker, \n rate limiting, developer is also able to develop a service which has hot-reconfiguration feature easily. \n [see](https://go-chassis.readthedocs.io/en/latest/user-guides/dynamic-conf.html#)\n - **API first** go chassis will automatically generate Open API 2.0 doc and register it to service center. you can manage all the API docs in one place\n - **Spring Cloud** integrate with servicecomb, go chassis can work together with [spring cloud](https://github.com/huaweicloud/spring-cloud-huawei).\n - **Service mesh**: you can introduce multi-language to your microservice system. powered by [servicecomb-mesher](https://github.com/apache/servicecomb-mesher). \n - **Less dependencies**: checkout the go.mod file, it has less dependency on open source project by default, to import more features checkout [plugins](https://github.com/go-chassis/go-chassis-extension) to see more features\n\n# Get started \n1.Generate go mod\n```bash\ngo mod init\n```\n2.Add go chassis \n```shell script\n go get github.com/go-chassis/go-chassis/v2@v2.0.4\n```\nif you are facing network issue \n```bash\nexport GOPROXY=https://goproxy.io\n```\n\n3.[Write your first http micro service](https://go-chassis.readthedocs.io/en/latest/getstarted/writing-rest.html)\n\n\n# Documentations\nYou can see more documentations in [here](https://go-chassis.readthedocs.io/), \n\n# Examples\nYou can check examples [here](examples)\n\nNOTICE: Now examples is migrating to [here](https://github.com/go-chassis/go-chassis-examples)\n# Communication Protocols\nGo-Chassis supports 2 types of communication protocol.\n1. http - an approach that leverages the HTTP protocol for communication.\n3. gRPC - native grpc protocol, go chassis bring circuit breaker, route management etc to grpc.\n## Debug suggestion for dlv:\nAdd `-tags debug` into go build arguments before debugging, if your go version is go1.10 onward.\n\nexample:\n\n```shell\ngo build -tags debug -o server -gcflags \"all=-N -l\" server.go\n```\n\nChassis customized `debug` tag to resolve dlv debug issue:\n\nhttps://github.com/golang/go/issues/23733\n\nhttps://github.com/derekparker/delve/issues/865\n\n# Other project using go-chassis\n- [apache/servicecomb-kie](https://github.com/apache/servicecomb-kie): \nA cloud native distributed configuration management service, go chassis and mesher integrate with it,\nso that user can manage service configurations by this service.\n- [apache/servicecomb-mesher](https://github.com/apache/servicecomb-mesher): \nA service mesh able to co-work with go chassis, \nit is able to run as a [API gateway](https://mesher.readthedocs.io/en/latest/configurations/edge.html) also.\n- [KubeEdge](https://github.com/kubeedge/kubeedge): Kubernetes Native Edge Computing Framework (project under CNCF) https://kubeedge.io\n\n# Known Users\nTo register your self, go to https://github.com/go-chassis/go-chassis/issues/592\n\n\u003ctable\u003e\u003ctr\u003e\n\u003ctd\u003e\u003cimg src=\"https://raw.githubusercontent.com/go-chassis/go-chassis.github.io/master/known_users/huawei.PNG\" alt=\"huawei\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"https://raw.githubusercontent.com/go-chassis/go-chassis.github.io/master/known_users/qutoutiao.PNG\" alt=\"qutoutiao\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"https://raw.githubusercontent.com/go-chassis/go-chassis.github.io/master/known_users/Shopee.png\" alt=\"Shopee\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cimg src=\"https://raw.githubusercontent.com/go-chassis/go-chassis.github.io/master/known_users/tencent-ieg.png\" alt=\"tencent-ieg\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"https://raw.githubusercontent.com/go-chassis/go-chassis.github.io/master/known_users/changhong.png\" alt=\"changhong\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n# Contributing\nIf you're interested in being a contributor and want to get involved in developing, \nplease check [CONTRIBUTING](CONTRIBUTING.md) and [wiki](https://github.com/go-chassis/go-chassis/wiki) for details.\n\n[Join slack](https://go-chassis.slack.com/)\n# Committer\n- ichiro999\n- humingcheng\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgo-chassis%2Fgo-chassis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgo-chassis%2Fgo-chassis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgo-chassis%2Fgo-chassis/lists"}