3 ms·
What Go really needs for microservices is a library equivalent to Finagle[0]. GRPC is getting there, but we need some community standards for RPC, circuit break
by jzelinskie 11y ago
What Go really needs for microservices is a library equivalent to Finagle[0]. GRPC is getting there, but we need some community standards for RPC, circuit breaking, exponential backoff, zipkin-like debugging etc...
[0]: https://github.com/twitter/finagle https://github.com/twitter/finagle
- ane 11y agoHashiCorp is working on something like this: https://github.com/hashicorp/go-plugin https://github.com/hashicorp/go-plugin
- AYBABTME 11y agoNot really, that package is to build plugins in CLI apps, not really meant for RPC in a distributed context.
- m_sahaf 11y agoI think this is heading towards what you're looking for: https://github.com/go-kit/kit https://github.com/go-kit/kit
- meddlepal 11y agoWe do not have a Go implementation yet, but at Datawire.io we are working on a IDL that compiles into a number of target languages and generates client and server code with all those features. Go is on our TODO list after we add Ruby support. Check us out! [0]: https://github.com/datawire/datawire-connect https://github.com/datawire/datawire-connect [1]: https://github.com/datawire/quark https://github.com/datawire/quark
- sagichmal 11y agoAn IDL + target language compilers is a necessary precondition for, but totally orthogonal to, something like Finagle. All of the transport and mechanical stuff happens above the IDL's domain.
- meddlepal 11y ago"IDL" is perhaps the wrong technical term for this because it's not really an IDL in the traditional sense. Quark is turing-complete and can be used to compile the protocol semantics, for example, backoffs, retries, circuit breaking, tracing etc right into the generated code. We're working on some cloud services to handle stuff like seamless service discovery and log/tracing information collection.
- chuhnk 11y agoWorking on it https://github.com/micro/micro https://github.com/micro/micro
- sagichmal 11y agoMicro is a platform, not a library. Right?
- chuhnk 11y agoIt's made up of a number of components. Each of which can be used on their own or in combination to run a platform. - go-micro - A pluggable RPC library for microservices - micro - API, Web UI, CLI and Sidecar - go-platform - A pluggable platform library - platform - A microservice platform; auth, monitoring, distributing tracing, etc