A service mesh implementation based on go chassis.
Why use mesher
- any infrastructure: if you use ServiceComb as control plane, you can run on any infrastructure(docker, kubernetes,VM, bare metal).
- service mesh and frameworks: you can develop micro services with java chassis or go chassis frameworks and use mesher to make other service join to the same system.
- flexible: you can develop and customize your own service mesh
- OS: support both linux and windows OS, which means you can govern your services writen in .net with java, go etc.
- API gateway: mesher is able to run as a independent edge service and manage ingress traffic.
- Build on top of go micro service framework: so that mesher has all of features of go chassis,a high flexible go micro service framework. you can custom your own service mesh and API gateway by extending lots of components.
- Admin API：Listen on an isolated port, expose useful runtime information and metrics.
- support protocols: http and grpc
- No IP tables forwarding: Mesher leverage http_proxy and grpc proxy dialer, that makes better performance than using ip tables
- local health check: as a sidecar, mesher is able to check local service health by policy and dynamically remove it from service registry if service is unavailable.
Refer to mesher-examples
How to build
Build from scratch
Install ServiceComb service-center
build and run, use go mod
export GOPROXY=https://goproxy.io #if you are facing network issue cd mesher GO111MODULE=on go mod download #optional GO111MODULE=on go mod vendor cd cmd/mesher go build mesher.go
Build by script
cd build export GOPATH=/path/to/gopath export GOPROXY=https://goproxy.io #if you are facing network issue ./build_proxy.sh
it will build binary and docker image
- tar file: release/mesher-latest-linux-amd64.tar
- docker image name: servicecomb/mesher-sidecar:latest
Build mesher edge service
sudo docker build -t servicecomb/mesher-edge -f docker/edge/Dockerfile .
How to run
sudo docker run -e PAAS_CSE_SC_ENDPOINT="" \ -e PAAS_CSE_CC_ENDPOINT="" \ -p 80:30101 \ --name mesher-edge servicecomb/mesher-edge
- mesher ingress: mesher as a edge service to manage ingress traffic
- integrate with servicecomb kie: user can change mesher-sidecar and mesher-ingress in same config server, don't need to change local files
- support skywalking
Package metrics is a system-independent module it consider metrics key as first-class citizen each function is for recording one kind of metrics key and value it expose standard API to record runtime metrics for a service use prom as default metrics system
|Package metrics is a system-independent module it consider metrics key as first-class citizen each function is for recording one kind of metrics key and value it expose standard API to record runtime metrics for a service use prom as default metrics system|
Click to show internal directories.
Click to hide internal directories.