Live data from Hacker News

Google Open Source Load Balancer in Go

github.com

51–60 of 75 posts

Re: Google Open Source Load Balancer in Go

#51

As much as I love Go and use it extensively for various production-grade projects, I'm wondering how suitable it really is for something like a load balancer. My understanding is that Go's TLS performance is dramatically less than other C-based implementations like OpenSSL. I remember reading something about some licensing collisions between the Go project and some TLS stuff such that optimized encryption code couldn…

I have not looked deeply at the implementation, at all, but given that the actual site refers to this as an "algorithm" for LVS, I kinda suspect all the heavy lifting is happening at the kernel level within LVS, and the go code is merely acting as a control program that tells the backend how to behave. Many high performance systems have lower performance scripting languages or similar built in or bolted on, in order…

That's because Erlang's GC is managed on a per-lightweight-process basis, which is possible because of the share-nothing nature of the concurrency model Erlang uses (actor/message-passing).

Garbage collection in Go can't be implemented the same way, because Go allows for shared mutable state.

That said, the work done to the GC in Go v1.5 seems quite phenomenal, but just because the two runtimes share a piece of terminology called "garbage collector", they're very, very different in terms of the semantics and effects exposed.

Re: Google Open Source Load Balancer in Go

#52

Earlier quoted context omitted.

Would it be possible to set this up with Digital Oceans Floating IP[1] and LVS? I know they use HA-Proxy[2,3] as a standard setup here. [1]: https://www.digitalocean.com/community/tutorials/how-to-use-... [2]: https://www.digitalocean.com/community/tutorials/how-to-crea... [3]: https://www.digitalocean.com/community/tutorials/how-to-set-... The reason I ask, I worked with one hosting provider who leveraged LVS for we…

The third link that you posted is for keepalived. keepalived uses LVS as the actual load balancer (which is what seesaw uses as well). So as long as you can setup seesaw to run a few scripts to inform DisitalOcean which droplet currently has the ip, then it should work fine. There is an example for keepalived in the link that you posted.

Awesome! Many thanks for the reply!

Re: Google Open Source Load Balancer in Go

#53
OT: I'm a Go noob and I was wondering if there's something like requirements.txt for Go projects? Or is this usually the way to go?

    go get -u golang.org/x/crypto/ssh
    go get -u github.com/dlintw/goconf
    go get -u github.com/golang/glog
    go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
    go get -u github.com/miekg/dns

Re: Google Open Source Load Balancer in Go

#54

OT: I'm a Go noob and I was wondering if there's something like requirements.txt for Go projects? Or is this usually the way to go? go get -u golang.org/x/crypto/ssh go get -u github.com/dlintw/goconf go get -u github.com/golang/glog go get -u github.com/golang/protobuf/{proto,protoc-gen-go} go get -u github.com/miekg/dns

This is the biggest problem in golang ecosystem. Yes there are many third party solution, but no official one. So different repo use different solution make all solutions invalid.

Re: Google Open Source Load Balancer in Go

#55

As much as I love Go and use it extensively for various production-grade projects, I'm wondering how suitable it really is for something like a load balancer. My understanding is that Go's TLS performance is dramatically less than other C-based implementations like OpenSSL. I remember reading something about some licensing collisions between the Go project and some TLS stuff such that optimized encryption code couldn…

Premature worry (aka FUD). We run Go services that terminate TLS and handle thousands of req/sec per server and it's never been even a slight concern. CPU usage for TLS has not been measurable. GC has also not been an issue, at least wrt net/http.

Go's TLS is slower than C implementations. Even with the improvement that hasn't even shipped yet.

It's not FUD. It's a fact.

Re: Google Open Source Load Balancer in Go

#56

OT: I'm a Go noob and I was wondering if there's something like requirements.txt for Go projects? Or is this usually the way to go? go get -u golang.org/x/crypto/ssh go get -u github.com/dlintw/goconf go get -u github.com/golang/glog go get -u github.com/golang/protobuf/{proto,protoc-gen-go} go get -u github.com/miekg/dns

This looks incredibly brittle. What if one of those dependencies releases a new major version on its master branch that breaks compatibility? It was really surprising to see this done this way. I know go's package management is pretty weak but a serious project like needs reproducible builds. Since all the dependencies are on git they could just use git submodules in a vendor directory or something.

Re: Google Open Source Load Balancer in Go

#58

OT: I'm a Go noob and I was wondering if there's something like requirements.txt for Go projects? Or is this usually the way to go? go get -u golang.org/x/crypto/ssh go get -u github.com/dlintw/goconf go get -u github.com/golang/glog go get -u github.com/golang/protobuf/{proto,protoc-gen-go} go get -u github.com/miekg/dns

[deleted]

Re: Google Open Source Load Balancer in Go

#59

OT: I'm a Go noob and I was wondering if there's something like requirements.txt for Go projects? Or is this usually the way to go? go get -u golang.org/x/crypto/ssh go get -u github.com/dlintw/goconf go get -u github.com/golang/glog go get -u github.com/golang/protobuf/{proto,protoc-gen-go} go get -u github.com/miekg/dns

This looks incredibly brittle. What if one of those dependencies releases a new major version on its master branch that breaks compatibility? It was really surprising to see this done this way. I know go's package management is pretty weak but a serious project like needs reproducible builds. Since all the dependencies are on git they could just use git submodules in a vendor directory or something.

> I know go's package management is pretty simple

fixed.

I like cargo's system for this.

Re: Google Open Source Load Balancer in Go

#60

OT: I'm a Go noob and I was wondering if there's something like requirements.txt for Go projects? Or is this usually the way to go? go get -u golang.org/x/crypto/ssh go get -u github.com/dlintw/goconf go get -u github.com/golang/glog go get -u github.com/golang/protobuf/{proto,protoc-gen-go} go get -u github.com/miekg/dns

This looks incredibly brittle. What if one of those dependencies releases a new major version on its master branch that breaks compatibility? It was really surprising to see this done this way. I know go's package management is pretty weak but a serious project like needs reproducible builds. Since all the dependencies are on git they could just use git submodules in a vendor directory or something.

[deleted]
Post reply on HN