gitmyhub

mosn

Go ★ 4.5k updated 11mo ago

The Cloud-Native Network Proxy Platform

MOSN is a high-performance network proxy written in Go, battle-tested at massive scale by Ant Group, that routes traffic between services and handles load balancing, health checks, circuit breaking, and observability in a service mesh.

GoIstioPrometheusWebAssemblygRPCsetup: hardcomplexity 5/5

MOSN (Modular Open Smart Network) is a network proxy written in Go, open-sourced by Ant Group, the financial technology company behind Alipay. According to the README, it has been verified in production by hundreds of thousands of containers during Ant Group's annual 11.11 global shopping festival, one of the largest retail traffic events in the world.

In practical terms, MOSN sits in front of your services and handles how network traffic gets routed between them. This is the role of a service mesh data plane proxy. Instead of each service in your system needing to handle routing, retries, load balancing, and security on its own, you run a MOSN proxy alongside each service, and those proxies handle that work transparently.

MOSN can integrate with Istio, which is a widely-used service mesh control plane. In that setup, Istio tells MOSN how to route traffic, and MOSN carries out the actual work. But MOSN can also run independently as a load balancer, an API gateway, or a Kubernetes ingress controller without Istio.

The feature list in the README is long. On the protocol side it supports HTTP/1.1, HTTP/2, gRPC, and an extension framework for custom protocols. Routing can be based on headers, URL paths, prefixes, variables, and weighted splits. For backend management it supports connection pooling, health checks, circuit breakers, and several load balancing strategies. For observability it integrates with Jaeger and SkyWalking for tracing, and exposes Prometheus-compatible metrics. TLS with certificate rotation is supported, as is hot reload for zero-downtime upgrades.

Extensions can be written in Go as plugins, as separate processes, or compiled to WebAssembly.

Where it fits