#name-service #service-discovery #name #dns #discovery #service #tokio

ns-dns-tokio

Name service implementation for abstract-ns that uses domain name system (DNS) run in tokio event loop

5 releases (3 breaking)

Uses old Rust 2015

0.4.0 Oct 19, 2017
0.3.1 Apr 24, 2017
0.3.0 Mar 20, 2017
0.2.0 Mar 1, 2017
0.1.0 Oct 15, 2016

#19 in #name-service

Download history 15/week @ 2023-12-18 7/week @ 2023-12-25 25/week @ 2024-01-08 14/week @ 2024-01-15 8/week @ 2024-01-22 9/week @ 2024-02-12 12/week @ 2024-02-19 44/week @ 2024-02-26 23/week @ 2024-03-04 33/week @ 2024-03-11 25/week @ 2024-03-18 62/week @ 2024-04-01

124 downloads per month

MIT/Apache

52KB
911 lines

Abstract Name Service

Status: Beta

Documentation | Github | Crate

This rust crate provides just abstract traits which may be used to build interoperable implementations of name dicovery.

We want abstract_ns to have implementations not only for DNS-based name discovery but also Zookeeper, Eureka, Etcd, Consul, and whatever other thing you might imagine. All of them easily configured and interchangeable.

Features:

  • Defines what is a name and what is a result of service discovery
  • Uses futures-rs for asynchronous stuff
  • Has interface to receive updates (name changes)
  • Allows some kind of name service routing, i.e. has a way to specify different resolvers for different names, for example: serve *.consul from local consul, other names from conventional DNS servers.

This repository also contains the following crates:

  • ns-std-threaded a name resolution implementation that uses stdlib resolver running in a thread pool
  • ns-dns-tokio an pure-rust implementation that uses domain crate to resolve domains asynchronously in tokio-core main loop

Note: abstract-ns v0.2 is very different product than v0.1

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

This crate provides a simple name resolver that based on domain crate

The domain crate is made as a one-stop thing for any DNS. Still abstract-ns provides subscriptions for updates and service discovery based on different services (and mapping between names and resolvers).

Use this crate:

  1. As a more efficient ns-std-threaded (with care!)
  2. For DNS-based name resolution (no SRV yet)

Dependencies

~8MB
~135K SLoC