/samaritan

A transparent proxy focus on infrastructure

Primary LanguageGoApache License 2.0Apache-2.0

Samaritan

Samaritan

Build Status Go Report Card codecov Docs LICENSE

English | 简体中文

Samaritan (səˈmerətn) is a client side L4 or L7 proxy, written in Golang, with the aim to provide high availability and load balancing. You can call it Sam (sam) for simplicity.

We named this project Samaritan as it saves our OPs from extreme misery:

A charitable or helpful person (with reference to Luke 10:33).

"suddenly, miraculously, a Good Samaritan leaned over and handed the cashier a dollar bill on my behalf"

https://www.lexico.com/definition/samaritan

Features

  • Fast, efficient, lightweight and works on the client side

  • Hot restart, zero downtime

  • Hot re-configuration without down time

  • Good observability

  • First-class Redis cluster support

    • commond level stats
    • cluster scan
    • transparent compression
    • hotkey in real time

Status

It is deployed on every container and virtual machine in the production environment at ELEME, proxying all traffic to the basic components including Redis, MySQL, MQ, etc. And the total number of running instances is close to sixty thousand.

Documentation

  • For documentation about specific topics, including introduction, quick start, architecture, etc, see docs
  • Examples can be found in the examples directory.

License

Samaritan is licensed under the Apache 2.0 license. See LICENSE for the full license text.