{"id":14988334,"url":"https://github.com/apache/dubbo-go-pixiu","last_synced_at":"2025-05-14T16:13:54.856Z","repository":{"id":37009330,"uuid":"234250873","full_name":"apache/dubbo-go-pixiu","owner":"apache","description":"Based on the proxy gateway service of dubbo-go, it solves the problem that the external protocol calls the internal Dubbo cluster. At present, it supports HTTP and gRPC[developing].","archived":false,"fork":false,"pushed_at":"2025-03-22T08:52:35.000Z","size":51283,"stargazers_count":490,"open_issues_count":27,"forks_count":154,"subscribers_count":63,"default_branch":"develop","last_synced_at":"2025-04-06T05:05:09.719Z","etag":null,"topics":["api-gateway","api-rest","cloud-native","cloudnative","dubbo","dubbo-cluster","dubbo-go","dubbogo","gateway","gateways","grpc","grpc-go","http-proxies","kafka","microservice","microservices","protocols","proxy","rocketmq","upstream-services"],"latest_commit_sha":null,"homepage":"https://dubbogo.github.io/dubbo-go-proxy/","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/apache.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGE.md","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}},"created_at":"2020-01-16T06:27:37.000Z","updated_at":"2025-03-30T02:57:09.000Z","dependencies_parsed_at":"2023-02-19T13:45:38.845Z","dependency_job_id":"75489fc9-03a1-4296-8d3c-22eab0fcd1f4","html_url":"https://github.com/apache/dubbo-go-pixiu","commit_stats":{"total_commits":1323,"total_committers":73,"mean_commits":"18.123287671232877","dds":0.8427815570672713,"last_synced_commit":"2b386ded9afb389463dd25ea3c0af47014ec10d1"},"previous_names":["dubbogo/dubbo-go-proxy"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go-pixiu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go-pixiu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go-pixiu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go-pixiu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/dubbo-go-pixiu/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248688543,"owners_count":21145763,"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":["api-gateway","api-rest","cloud-native","cloudnative","dubbo","dubbo-cluster","dubbo-go","dubbogo","gateway","gateways","grpc","grpc-go","http-proxies","kafka","microservice","microservices","protocols","proxy","rocketmq","upstream-services"],"created_at":"2024-09-24T14:16:33.336Z","updated_at":"2025-04-13T08:54:51.049Z","avatar_url":"https://github.com/apache.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Pixiu Logo](docs/images/pixiu-logo-v4.png)](http://alexstocks.github.io/html/dubbogo.html)\n\n\n[![Language](https://img.shields.io/badge/Language-Go-blue.svg)](https://golang.org/)\n[![Build Status](https://travis-ci.org/dubbogo/dubbo-go-pixiu.svg?branch=master)](https://travis-ci.org/dubbogo/dubbo-go-pixiu)\n\nEnglish | [中文](./README_CN.md)\n\n# Introduction\n\n**Dubbo-Go-Pixiu**(official site: https://dubbo.apache.org/zh/docs3-v2/dubbo-go-pixiu/) is a high-performance API gateway and multi-language solution Sidecar in the Dubbo ecosystem\n\n\n![](https://dubbo-go-pixiu.github.io/img/pixiu-dubbo-ecosystem.png)\n\nIt is an open source Dubbo ecosystem API gateway, and also a sidecar to let other compute language program access the dubbo clusters by HTTP/gRPC protocol. As an API gateway, Pixiu can receive external network requests, convert them into dubbo and other protocol requests, and forward them to the back cluster; as a sidecar, Pixiu expects to register to the Dubbo cluster instead of the proxy service, allowing multilingual services to access the Dubbo cluster to provide faster solution\n\n\n## Quick Start\n\n#### Requirment\n1. go 1.17 or higher\n2. docker or docker-desktop\n\nyou can find out all demo in https://github.com/apache/dubbo-go-pixiu-samples.\ndownload it and operate as below.\n```shell\ngit clone https://github.com/apache/dubbo-go-pixiu-samples.git\n```\n\n#### update pixiu to latest version\n```shell\ngo get github.com/apache/dubbo-go-pixiu@v0.6.0-rc2\n```\n\n#### cd samples dir\n\n```shell\ncd dubbogo/simple\n```\n\nwe can use start.sh to run samples quickly. for more info, execute command as below for more help\n\n```shell\n./start.sh [action] [project]\n./start.sh help\n```\n\nwe run [direct] samples step by step as follows.\n\n#### prepare config file and docker \n\n'prepare' command will prepare dubbo-server and pixiu config file firstly, and then start docker container.\n\n```shell\n./start.sh prepare direct\n```\n\nif prepare config file manually, notice:\n- modify $PROJECT_DIR in conf.yaml to absolute path \n\n#### start dubbo or http server\n\n```shell\n./start.sh startServer direct\n```\n\n#### start pixiu \n\n```shell\n./start.sh startPixiu direct\n```\n\nif run pixiu manually in pixiu project, use command as below.\n\n```shell\n go run cmd/pixiu/*.go gateway start -c /[absolute-path]/dubbo-go-pixiu-samples/dubbogo/simple/direct/pixiu/conf.yaml\n```\n\nif run pixiu manually in pixiu project and wasm feature, use command as below.\n\nbuild pixiu project use command operate\n\n```shell\ngo build -tags wasm -o pixiu cmd/pixiu/*.go\n```\n\nrun pixiu app binary\n\n```shell\ngo build cmd/pixiu/*.go\n./pixiu gateway start -c /[absolute-path]/dubbo-go-pixiu-samples/dubbogo/simple/direct/pixiu/conf.yaml\n```\n\n#### Try a request\n\nuse curl to try or use unit test\n\n```shell\ncurl http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/GetUserByCode \\\n-H \"x-dubbo-http1.1-dubbo-version:1.0.0\" -H \"x-dubbo-service-protocol:dubbo\" \\\n-H \"x-dubbo-service-version:1.0.0\" -H \"x-dubbo-service-group:test\" \\\n-H \"Content-Type:application/json\" \\\n -d '[1]'\n```\n```shell\ncurl http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/UpdateUserByName  \\\n-H \"x-dubbo-http1.1-dubbo-version:1.0.0\" -H \"x-dubbo-service-protocol:dubbo\" \\\n-H \"x-dubbo-service-version:1.0.0\" -H \"x-dubbo-service-group:test\" \\\n-H \"Content-Type:application/json\" \\\n -d '[\"tc\",{\"id\":\"0002\",\"code\":1,\"name\":\"tc\",\"age\":15}]'\n```\n```shell\ncurl http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/GetUserByCode \\\n-H \"x-dubbo-http1.1-dubbo-version:1.0.0\" -H \"x-dubbo-service-protocol:dubbo\" \\\n-H \"x-dubbo-service-version:1.0.0\" -H \"x-dubbo-service-group:test\" \\\n-H \"Content-Type:application/json\" \\\n -d '[1]'\n```\n\n```shell \n./start.sh startTest body\n```\n\n#### Clean\n\n```shell\n./start.sh clean direct\n```\n\n## Start Docker\n\n#### \n```shell\ndocker run --name pixiu-gateway -p 8888:8888 dubbogopixiu/dubbo-go-pixiu:latest\n```\n\n```shell\ndocker run --name pixiu-gateway -p 8888:8888 \\\n    -v /yourpath/conf.yaml:/etc/pixiu/conf.yaml \\\n    -v /yourpath/log.yml:/etc/pixiu/log.yml \\\n    dubbogopixiu/dubbo-go-pixiu:latest\n```\n\n## Features\n\n- Multi-protocol support: Currently, Http, Dubbo2, Triple, gRPC protocol proxy and conversion are supported, and other protocols are being continuously integrated.\n- Safety certificate: Support HTTPS, JWT Token verification and other security authentication measures.\n- Registry integration: Support to obtain service metadata from Dubbo or Spring Cloud cluster, support ZK, Nacos registry.\n- Traffic management: Integrate with sentinel, support multiple protocols for rate limiting.\n- Observability: Integrate with opentelemetry and jaeger for distributed tracing.\n- Admin and visual interface: Have pixiu-admin for remote administration and visualization\n\n### Control Plane\n\nThe pixiu control plane is forked from [istio](https://github.com/istio/istio) v1.14.3. Offers a variety of capabilities, including service discovery, traffic management, security management.\n\n## Contact Us\n\nThe project is under intensively iteration, you are more than welcome to use, suggest and contribute codes. \n\n\n### Community\n\n**DingDing Group (31203920):**\n\n[![flowchart](./docs/images/group-pixiu-dingding.jpg)](docs/images/group-pixiu-dingding.jpg)\n\nWe welcome the friends who can give us constructing suggestions instead of known-nothing.\n\n## License\n\nApache License, Version 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fdubbo-go-pixiu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fdubbo-go-pixiu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fdubbo-go-pixiu/lists"}