VProxy is a zero-dependency TCP Loadbalancer based on Java NIO. The project only requires Java 11 to run.
Clone it, javac it, then everything is ready for running.
(Gradlew and Dockerfile is also provided)
- Zero dependency: no dependency other than java standard library, and no jni extensions.
- Simple: keep code simple and clear.
- Modifiable when running: no need to reload for configuration update.
- Fast: performance is one of our main priorities.
- TCP Loadbalancer: we now support TCP and TCP based protocols, also allow your own protocols.
You can start a simple loadbalancer in one command:
java -Deploy=Simple -jar vproxy.jar \
bind {port} \
backend {host1:port1,host2:port2} \
[ssl {path of cert1,cert2} {path of key} \]
[protocol {...} \]
Use help
to view the parameters.
See docs for help.
Questions about implementation detail are also welcome (in issues).
- how-to-use.md: How to use config file and controllers.
- command.md: Detailed command document.
- lb-example.md: An example about running a loadbalancer.
- service-mesh-example.md: An example about vproxy service mesh.
- docker-example.md: An example about building and running vproxy in docker.
- architecture.md: Something about the architecture.
- service-mesh-protocol.md: The protocol which is used by vproxy service mesh impl.
- extended-app.md: The usage of extended applications.
- websocks.md: The WebSocks Protocol.
- using-application-layer-protocols: About how to use (customized) application layer protocols.
Currently only I
myself is working on this project. I would be very happy if you want to join :)