apache/dubbo-go-pixiu
Fork: 153 Star: 488 (更新于 2024-12-10 10:31:03)
license: Apache-2.0
Language: Go .
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].
最后发布版本: v1.0.0-rc4 ( 2024-04-25 15:01:26)
English | 中文
Introduction
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
It 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
Quick Start
Requirment
- go 1.17 or higher
- docker or docker-desktop
you can find out all demo in https://github.com/apache/dubbo-go-pixiu-samples. download it and operate as below.
git clone https://github.com/apache/dubbo-go-pixiu-samples.git
update pixiu to latest version
go get github.com/apache/dubbo-go-pixiu@v0.6.0-rc2
cd samples dir
cd dubbogo/simple
we can use start.sh to run samples quickly. for more info, execute command as below for more help
./start.sh [action] [project]
./start.sh help
we run [direct] samples step by step as follows.
prepare config file and docker
'prepare' command will prepare dubbo-server and pixiu config file firstly, and then start docker container.
./start.sh prepare direct
if prepare config file manually, notice:
- modify $PROJECT_DIR in conf.yaml to absolute path
start dubbo or http server
./start.sh startServer direct
start pixiu
./start.sh startPixiu direct
if run pixiu manually in pixiu project, use command as below.
go run cmd/pixiu/*.go gateway start -c /[absolute-path]/dubbo-go-pixiu-samples/dubbogo/simple/direct/pixiu/conf.yaml
if run pixiu manually in pixiu project and wasm feature, use command as below.
build pixiu project use command operate
go build -tags wasm -o pixiu cmd/pixiu/*.go
run pixiu app binary
go build cmd/pixiu/*.go
./pixiu gateway start -c /[absolute-path]/dubbo-go-pixiu-samples/dubbogo/simple/direct/pixiu/conf.yaml
Try a request
use curl to try or use unit test
curl http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/GetUserByCode \
-H "x-dubbo-http1.1-dubbo-version:1.0.0" -H "x-dubbo-service-protocol:dubbo" \
-H "x-dubbo-service-version:1.0.0" -H "x-dubbo-service-group:test" \
-H "Content-Type:application/json" \
-d '[1]'
curl http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/UpdateUserByName \
-H "x-dubbo-http1.1-dubbo-version:1.0.0" -H "x-dubbo-service-protocol:dubbo" \
-H "x-dubbo-service-version:1.0.0" -H "x-dubbo-service-group:test" \
-H "Content-Type:application/json" \
-d '["tc",{"id":"0002","code":1,"name":"tc","age":15}]'
curl http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/GetUserByCode \
-H "x-dubbo-http1.1-dubbo-version:1.0.0" -H "x-dubbo-service-protocol:dubbo" \
-H "x-dubbo-service-version:1.0.0" -H "x-dubbo-service-group:test" \
-H "Content-Type:application/json" \
-d '[1]'
./start.sh startTest body
Clean
./start.sh clean direct
Start Docker
docker run --name pixiu-gateway -p 8888:8888 dubbogopixiu/dubbo-go-pixiu:latest
docker run --name pixiu-gateway -p 8888:8888 \
-v /yourpath/conf.yaml:/etc/pixiu/conf.yaml \
-v /yourpath/log.yml:/etc/pixiu/log.yml \
dubbogopixiu/dubbo-go-pixiu:latest
Features
- Multi-protocol support: Currently, Http, Dubbo2, Triple, gRPC protocol proxy and conversion are supported, and other protocols are being continuously integrated.
- Safety certificate: Support HTTPS, JWT Token verification and other security authentication measures.
- Registry integration: Support to obtain service metadata from Dubbo or Spring Cloud cluster, support ZK, Nacos registry.
- Traffic management: Integrate with sentinel, support multiple protocols for rate limiting.
- Observability: Integrate with opentelemetry and jaeger for distributed tracing.
- Admin and visual interface: Have pixiu-admin for remote administration and visualization
Control Plane
The pixiu control plane is forked from istio v1.14.3. Offers a variety of capabilities, including service discovery, traffic management, security management.
Contact Us
The project is under intensively iteration, you are more than welcome to use, suggest and contribute codes.
Community
DingDing Group (31203920):
We welcome the friends who can give us constructing suggestions instead of known-nothing.
License
Apache License, Version 2.0
最近版本更新:(数据更新于 2024-10-23 13:21:59)
2024-04-25 15:01:26 v1.0.0-rc4
2024-02-05 17:11:36 v1.0.0-rc3
2023-11-11 14:44:30 v1.0.0-rc2
2023-11-11 14:36:55 v1.0.0-rc1
2023-02-12 15:06:18 v0.6.0-rc2
2022-08-02 15:18:02 v0.5.1-rc2
2022-08-02 15:18:46 v0.5.1-rc1
2022-03-21 21:27:39 v0.5.0-rc01
2021-11-10 16:28:55 v0.4.0-rc2
2021-07-23 16:58:16 v0.3.0-rc1
主题(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
apache/dubbo-go-pixiu同语言 Go最近更新仓库
2024-12-22 07:52:58 navidrome/navidrome
2024-12-21 20:15:12 SagerNet/sing-box
2024-12-21 03:25:54 SpecterOps/BloodHound
2024-12-19 23:11:24 shadow1ng/fscan
2024-12-19 21:50:56 minio/minio
2024-12-19 10:04:39 istio/istio