Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Nacos | 26,472 | 118 | 56 | 2 days ago | 53 | August 08, 2022 | 231 | apache-2.0 | Java | |
an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. | ||||||||||
Linkerd | 5,372 | 63 | 3 months ago | 40 | May 27, 2022 | 146 | apache-2.0 | Scala | ||
Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x. | ||||||||||
Lastbackend | 1,437 | 3 years ago | 1 | September 25, 2019 | 5 | apache-2.0 | Go | |||
System for containerized apps management. From build to scaling. | ||||||||||
Skydock | 1,060 | 6 years ago | May 24, 2021 | 40 | mit | Go | ||||
Service discovery via DNS for docker | ||||||||||
Sample Spring Microservices New | 923 | 2 days ago | 1 | Java | ||||||
Demo for Spring Boot 3(`master` branch)/2(other branches) and Spring Cloud microservices with distributed configuration (Spring Cloud Config), service discovery (Eureka), API gateway (Spring Cloud Gateway, Zuul), Swagger/OpenAPI documentation (Springdoc), logs correlation using Spring Cloud Sleuth/Micrometer OTEL and many more | ||||||||||
Avahi | 915 | a month ago | 2 | September 02, 2021 | 215 | lgpl-2.1 | C | |||
Avahi - Service Discovery for Linux using mDNS/DNS-SD -- compatible with Bonjour | ||||||||||
Mysql_utils | 875 | 4 years ago | 1 | gpl-2.0 | Python | |||||
Pinterest MySQL Management Tools | ||||||||||
Steeltoe | 871 | 11 | 11 days ago | 15 | May 26, 2022 | 171 | apache-2.0 | C# | ||
Steeltoe .NET Core Components: CircuitBreaker, Configuration, Connectors, Discovery, Logging, Management, and Security | ||||||||||
Nacos Spring Project | 717 | 5 | 2 | 2 days ago | 13 | July 14, 2021 | 46 | apache-2.0 | Java | |
Nacos ECO Project for Spring Framework | ||||||||||
Tseer | 645 | 4 years ago | 13 | other | C++ | |||||
A high available service discovery & registration & fault-tolerance framework |
ZeroConf is a pure Golang library that employs Multicast DNS-SD for
in the local network.
It basically implements aspects of the standards RFC 6762 (mDNS) and RFC 6763 (DNS-SD). Though it does not support all requirements yet, the aim is to provide a compliant solution in the long-term with the community.
By now, it should be compatible to Avahi (tested) and Apple's Bonjour (untested). Target environments: private LAN/Wifi, small or isolated networks.
Nothing is as easy as that:
$ go get -u github.com/grandcat/zeroconf
This package requires Go 1.7 (context in std lib) or later.
// Discover all services on the network (e.g. _workstation._tcp)
resolver, err := zeroconf.NewResolver(nil)
if err != nil {
log.Fatalln("Failed to initialize resolver:", err.Error())
}
entries := make(chan *zeroconf.ServiceEntry)
go func(results <-chan *zeroconf.ServiceEntry) {
for entry := range results {
log.Println(entry)
}
log.Println("No more entries.")
}(entries)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*15)
defer cancel()
err = resolver.Browse(ctx, "_workstation._tcp", "local.", entries)
if err != nil {
log.Fatalln("Failed to browse:", err.Error())
}
<-ctx.Done()
A subtype may added to service name to narrow the set of results. E.g. to browse _workstation._tcp
with subtype _windows
, use_workstation._tcp,_windows
.
See https://github.com/grandcat/zeroconf/blob/master/examples/resolv/client.go.
// Example filled soon.
server, err := zeroconf.Register("GoZeroconf", "_workstation._tcp", "local.", 42424, []string{"txtv=0", "lo=1", "la=2"}, nil)
if err != nil {
panic(err)
}
defer server.Shutdown()
// Clean exit.
sig := make(chan os.Signal, 1)
signal.Notify(sig, os.Interrupt, syscall.SIGTERM)
select {
case <-sig:
// Exit by user
case <-time.After(time.Second * 120):
// Exit by timeout
}
log.Println("Shutting down.")
Multiple subtypes may be added to service name, separated by commas. E.g _workstation._tcp,_windows
has subtype _windows
.
See https://github.com/grandcat/zeroconf/blob/master/examples/register/server.go.
This list gives a quick impression about the state of this library. See what needs to be done and submit a pull request :)
Notes:
(*) The denoted features might not be perfectly standards compliant, but shouldn't cause any problems. Some tests showed improvements in overall robustness and performance with the features enabled.
Great thanks to hashicorp and to oleksandr and all contributing authors for the code this projects bases upon. Large parts of the code are still the same.
However, there are several reasons why I decided to create a fork of the original project: The previous project seems to be unmaintained. There are several useful pull requests waiting. I merged most of them in this project. Still, the implementation has some bugs and lacks some other features that make it quite unreliable in real LAN environments when running continously. Last but not least, the aim for this project is to build a solution that targets standard conformance in the long term with the support of the community. Though, resiliency should remain a top goal.