valyala / httpteleport

Transfer 10Gbps http traffic over 1Gbps networks :)
MIT License
458 stars 38 forks source link
compression fast http load-balancer network-bandwidth proxy reverse-proxies

Build Status GoDoc Go Report

httpteleport

Teleports 10Gbps http traffic over 1Gbps networks. Built on top of fastrpc.

Use cases

httpteleport may significantly reduce inter-server network bandwidth overhead and costs for the following cases:

How does it work?

It just sends batched http requests and responses over a single compressed connection. This solves the following issues:

Unlike http pipelining, httpteleport responses may be sent out-of-order. This resolves head of line blocking issue.

Links

FAQ

$ GOMAXPROCS=1 go test -bench=. -benchmem
goos: linux
goarch: amd64
pkg: github.com/valyala/httpteleport
BenchmarkEndToEndGetNoDelay1              300000          4346 ns/op      60.05 MB/s           0 B/op          0 allocs/op
BenchmarkEndToEndGetNoDelay10             300000          4370 ns/op      59.71 MB/s           3 B/op          0 allocs/op
BenchmarkEndToEndGetNoDelay100            300000          4406 ns/op      59.23 MB/s           6 B/op          0 allocs/op
BenchmarkEndToEndGetNoDelay1000           300000          4457 ns/op      58.55 MB/s          24 B/op          0 allocs/op
BenchmarkEndToEndGetNoDelay10K            300000          5868 ns/op      44.48 MB/s         178 B/op          1 allocs/op
BenchmarkEndToEndGetDelay1ms              300000          4771 ns/op      54.70 MB/s          21 B/op          0 allocs/op
BenchmarkEndToEndGetDelay2ms              200000          7943 ns/op      32.86 MB/s          31 B/op          0 allocs/op
BenchmarkEndToEndGetDelay4ms              200000          7741 ns/op      33.71 MB/s          31 B/op          0 allocs/op
BenchmarkEndToEndGetDelay8ms              200000         10580 ns/op      24.67 MB/s          26 B/op          0 allocs/op
BenchmarkEndToEndGetDelay16ms             100000         16923 ns/op      15.42 MB/s          50 B/op          0 allocs/op
BenchmarkEndToEndGetCompressNone          200000          7899 ns/op      33.04 MB/s          31 B/op          0 allocs/op
BenchmarkEndToEndGetCompressFlate         100000         13257 ns/op      19.69 MB/s         129 B/op          0 allocs/op
BenchmarkEndToEndGetCompressSnappy        200000          8158 ns/op      31.99 MB/s          40 B/op          0 allocs/op
BenchmarkEndToEndGetTLSCompressNone       200000          8692 ns/op      30.02 MB/s          39 B/op          0 allocs/op
BenchmarkEndToEndGetTLSCompressFlate      100000         13710 ns/op      19.04 MB/s         131 B/op          0 allocs/op
BenchmarkEndToEndGetTLSCompressSnappy     200000          8480 ns/op      30.78 MB/s          42 B/op          0 allocs/op
BenchmarkEndToEndGetPipeline1             300000          4673 ns/op      55.85 MB/s           0 B/op          0 allocs/op
BenchmarkEndToEndGetPipeline10            300000          4610 ns/op      56.61 MB/s           3 B/op          0 allocs/op
BenchmarkEndToEndGetPipeline100           300000          4576 ns/op      57.03 MB/s           6 B/op          0 allocs/op
BenchmarkEndToEndGetPipeline1000          300000          4886 ns/op      53.41 MB/s          26 B/op          0 allocs/op