dubbo-go-pixiu

module
v0.6.0-rc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 8, 2023 License: Apache-2.0

README

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

you can find out all demo in https://github.com/apache/dubbo-go-pixiu-samples. download it and operate as below.

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 body samples below step

prepare config file and docker

prepare command will prepare dubbo-server and pixiu config file and start docker container needed

./start.sh prepare body

if prepare config file manually, notice:

  • modify $PROJECT_DIR in conf.yaml to absolute path in your compute
start dubbo or http server
./start.sh startServer body
start pixiu
./start.sh startPixiu body

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/body/pixiu/conf.yaml
Try a request

use curl to try or use unit test

curl -X POST 'localhost:8881/api/v1/test-dubbo/user' -d '{"id":"0003","code":3,"name":"dubbogo","age":99}' --header 'Content-Type: application/json' 
./start.sh startTest body
Clean
./start.sh clean body

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

Directories

Path Synopsis
cmd
istioctl
cmd
cmd/istioctl
Command istioctl is a Istio configuration command line utility.
Command istioctl is a Istio configuration command line utility.
pkg/authz
The auth package provides support for checking the authentication and authorization policy applied in the mesh.
The auth package provides support for checking the authentication and authorization policy applied in the mesh.
pkg/clioptions
Package clioptions contains flags which can be added to istiocl commands.
Package clioptions contains flags which can be added to istiocl commands.
operator
cmd
cmd/mesh
Package mesh contains types and functions.
Package mesh contains types and functions.
pkg/apis/istio/v1alpha1
Package v1alpha1 contains API Schema definitions for the istio v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=install.istio.io
Package v1alpha1 contains API Schema definitions for the istio v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=install.istio.io
pkg/component
Package component defines an in-memory representation of IstioOperator.<Feature>.<Component>.
Package component defines an in-memory representation of IstioOperator.<Feature>.<Component>.
pkg/metrics
Package metrics defines metrics and monitoring functionality used throughout operator.
Package metrics defines metrics and monitoring functionality used throughout operator.
pkg/object
Package manifest provides functions for going between in-memory k8s objects (unstructured.Unstructured) and their JSON or YAML representations.
Package manifest provides functions for going between in-memory k8s objects (unstructured.Unstructured) and their JSON or YAML representations.
pkg/patch
Package patch implements a simple patching mechanism for k8s resources.
Package patch implements a simple patching mechanism for k8s resources.
pkg/tpath
struct.go contains functions for traversing and modifying trees of Go structs.
struct.go contains functions for traversing and modifying trees of Go structs.
pkg/translate
Package translate defines translations from installer proto to values.yaml.
Package translate defines translations from installer proto to values.yaml.
pilot
pkg/config/aggregate
Package aggregate implements a read-only aggregator for config stores.
Package aggregate implements a read-only aggregator for config stores.
pkg/config/kube/crdclient
Package crdclient provides an implementation of the config store and cache using Kubernetes Custom Resources and the informer framework from Kubernetes
Package crdclient provides an implementation of the config store and cache using Kubernetes Custom Resources and the informer framework from Kubernetes
pkg/config/kube/crdclient/gen
Tool to generate pilot/pkg/config/kube/crdclient/types.gen.go Example run command: REPO_ROOT=`pwd` go generate ./pilot/pkg/config/kube/crdclient/...
Tool to generate pilot/pkg/config/kube/crdclient/types.gen.go Example run command: REPO_ROOT=`pwd` go generate ./pilot/pkg/config/kube/crdclient/...
pkg/config/kube/ingress
Package ingress provides a read-only view of Kubernetes ingress resources as an ingress rule configuration type store
Package ingress provides a read-only view of Kubernetes ingress resources as an ingress rule configuration type store
pkg/config/kube/ingressv1
Package ingress provides a read-only view of Kubernetes ingress resources as an ingress rule configuration type store
Package ingress provides a read-only view of Kubernetes ingress resources as an ingress rule configuration type store
pkg/config/memory
Package memory provides an in-memory volatile config store implementation
Package memory provides an in-memory volatile config store implementation
pkg/leaderelection/k8sleaderelection
Package leaderelection implements leader election of a set of endpoints.
Package leaderelection implements leader election of a set of endpoints.
pkg/networking/core/v1alpha3/loadbalancer
packages used for load balancer setting
packages used for load balancer setting
pixiu
pkg/cluster/healthcheck
* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.
* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.
pkg/common/constant
* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.
* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.
pkg/listener/tcp
inspired by dubbogo/remoting/getty
inspired by dubbogo/remoting/getty
pkg
channels
Package buffer provides an implementation of an unbounded buffer.
Package buffer provides an implementation of an unbounded buffer.
cmd
config
Package config is a common, top-level folder for aggregating Istio-wide config related libraries and utilities.
Package config is a common, top-level folder for aggregating Istio-wide config related libraries and utilities.
config/resource
Package resource contains core abstract types for representing configuration resources.
Package resource contains core abstract types for representing configuration resources.
config/xds
nolint: lll
nolint: lll
jwt
kube/apimirror
Package apimirror contains copies of Kubernetes APIs.
Package apimirror contains copies of Kubernetes APIs.
kube/inject
Package inject implements kube-inject or webhoook autoinject feature to inject sidecar.
Package inject implements kube-inject or webhoook autoinject feature to inject sidecar.
kube/labels
Package labels provides utility methods for retrieving Istio-specific labels from Kubernetes resources.
Package labels provides utility methods for retrieving Istio-specific labels from Kubernetes resources.
test/csrctrl/controllers
An example implementation of a CSR Controller.
An example implementation of a CSR Controller.
test/csrctrl/signer
Package signer implements a CA signer that uses keys stored on local disk.
Package signer implements a CA signer that uses keys stored on local disk.
test/framework/components/containerregistry
Package containerregistry provides basic utilities around configuring the fake container registry server component for integration testing.
Package containerregistry provides basic utilities around configuring the fake container registry server component for integration testing.
test/framework/components/gcemetadata
Package gcemetadata provides basic utilities around configuring the fake GCE Metadata Server component for integration testing.
Package gcemetadata provides basic utilities around configuring the fake GCE Metadata Server component for integration testing.
uds
url
util/protomarshal
Package protomarshal provides operations to marshal and unmarshal protobuf objects.
Package protomarshal provides operations to marshal and unmarshal protobuf objects.
webhooks/validation/controller
Package controller implements a k8s controller for managing the lifecycle of a validating webhook.
Package controller implements a k8s controller for managing the lifecycle of a validating webhook.
samples
security
pkg/credentialfetcher
Package credentialfetcher fetches workload credentials through platform plugins.
Package credentialfetcher fetches workload credentials through platform plugins.
pkg/nodeagent/cache
Package cache is the in-memory secret store.
Package cache is the in-memory secret store.
pkg/nodeagent/plugin/providers/google/stsclient
Package stsclient is for oauth token exchange integration.
Package stsclient is for oauth token exchange integration.
pkg/nodeagent/sds
Package sds implements secret discovery service in NodeAgent.
Package sds implements secret discovery service in NodeAgent.
pkg/testing/sdsc
Package sdsc includes a lightweight testing client to interact with SDS.
Package sdsc includes a lightweight testing client to interact with SDS.
tools/sdsclient
Program sdsclient simulates a SDS client to test SDS Server, citadel agent.
Program sdsclient simulates a SDS client to test SDS Server, citadel agent.
tests
common/jwt
package jwt includes sample JWT Token used in e2e tests.
package jwt includes sample JWT Token used in e2e tests.
fuzz
nolint: revive
nolint: revive
util/leak
leak checks for goroutine leaks in tests This is (heavily) inspired by https://github.com/grpc/grpc-go/blob/master/internal/leakcheck/leakcheck.go and https://github.com/fortytw2/leaktest
leak checks for goroutine leaks in tests This is (heavily) inspired by https://github.com/grpc/grpc-go/blob/master/internal/leakcheck/leakcheck.go and https://github.com/fortytw2/leaktest
tools
bug-report/pkg/common
Package common contains resource names, which may vary from version to version.
Package common contains resource names, which may vary from version to version.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL