Giter VIP home page Giter VIP logo

apache / dubbo-go-pixiu Goto Github PK

View Code? Open in Web Editor NEW
471.0 63.0 147.0 49.91 MB

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].

Home Page: https://dubbogo.github.io/dubbo-go-proxy/

License: Apache License 2.0

Go 97.86% Shell 0.91% Makefile 1.04% Dockerfile 0.19%
dubbo proxy dubbo-cluster upstream-services dubbogo dubbo-go microservice microservices gateway http-proxies

dubbo-go-pixiu's Introduction

Pixiu Logo

Language Build Status

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

  1. go 1.17 or higher
  2. 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/[email protected]

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):

flowchart

We welcome the friends who can give us constructing suggestions instead of known-nothing.

License

Apache License, Version 2.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.