MCPcopy Index your code
hub / github.com/apache/servicecomb-mesher

github.com/apache/servicecomb-mesher @v1.8.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.8.1 ↗ · + Follow
634 symbols 2,375 edges 115 files 407 documented · 64%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Mesher

Build Status Coverage Status Go Report Card GoDoc

A service mesh implementation based on go chassis.

Notice to contributors: this project is not active due to lack of maintainers. If you are interested in this project, please cantact us and we will help you to be a committer.

Notice to users: this project is not active due to lack of maintainers. Before we find enough resources, do not use this project if possible.

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.

Features

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

Get started

Refer to mesher-examples

How to build

Build from scratch

  1. Install ServiceComb service-center

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

```shell script sudo docker build -t servicecomb/mesher-edge -f docker/edge/Dockerfile .


### How to run
#### edge service
```shell script
sudo docker run -e PAAS_CSE_SC_ENDPOINT="" \
-e PAAS_CSE_CC_ENDPOINT="" \
-p 80:30101 \
--name mesher-edge servicecomb/mesher-edge

Documentations

You can see more documentations in here, this online doc is for latest version of mesher, if you want to see your version's doc, follow here to generate it in local

RoadMap

1.7.0

  • 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

in future

  • support skywalking

Extension points exported contracts — how you extend this code

RoutineTask (Interface)
RoutineTask interface [9 implementers]
proxy/protocol/dubbo/utils/thrmgr.go
SourceResolver (Interface)
SourceResolver is a interface which has Resolve function [3 implementers]
proxy/resolver/source.go
RuleFetcher (Interface)
RuleFetcher query ingress rule [1 implementers]
proxy/ingress/ingress.go
Egress (Interface)
Egress return egress rule, you can also set custom egress rule [1 implementers]
proxy/pkg/egress/egress.go
Deal (FuncType)
Deal handle the unhealthy status
proxy/health/health.go
JobFunc (FuncType)
JobFunc is a type of func()
proxy/protocol/dubbo/schema/cache.go
DestinationResolver (Interface)
DestinationResolver is a interface with Resolve method [3 implementers]
proxy/resolver/destination.go
L7Check (FuncType)
L7Check is the interface for L7 checker
proxy/health/health.go

Core symbols most depended-on inside this repo

Error
called by 126
proxy/protocol/dubbo/utils/buffer.go
Error
called by 98
proxy/protocol/errors.go
Init
called by 40
proxy/pkg/egress/egress.go
Run
called by 23
proxy/protocol/dubbo/schema/cache.go
handleErrorResponse
called by 22
proxy/protocol/http/sidecar.go
WriteObject
called by 22
proxy/protocol/dubbo/utils/buffer.go
SetBuffer
called by 22
proxy/protocol/dubbo/utils/buffer.go
SetStatus
called by 21
proxy/protocol/dubbo/dubbo/respond.go

Shape

Function 307
Method 221
Struct 94
Interface 5
FuncType 3
Class 2
TypeAlias 2

Languages

Go99%
Python1%

Modules by API surface

proxy/protocol/dubbo/dubbo/request.go25 symbols
proxy/protocol/dubbo/utils/buffer.go23 symbols
proxy/protocol/dubbo/client/dubbo_client.go20 symbols
proxy/protocol/dubbo/dubbo/respond.go18 symbols
proxy/protocol/dubbo/schema/schema.go16 symbols
proxy/protocol/dubbo/client/client_conn.go16 symbols
proxy/protocol/dubbo/server/server.go15 symbols
proxy/protocol/http/sidecar.go14 symbols
proxy/protocol/dubbo/server/dubbo_conn.go14 symbols
proxy/protocol/dubbo/utils/thrmgr.go13 symbols
proxy/protocol/dubbo/schema/cache.go13 symbols
proxy/protocol/dubbo/utils/typeutil.go12 symbols

For agents

$ claude mcp add servicecomb-mesher \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page