#dns #ns #env-logger #env-var #subscription #reduce-boilerplate #abstract-ns

ns-env-config

基于抽象-ns的,灵感来源于env_logger的名称解析一站式配置。减少冗余,通过RUST_NS环境变量提供配置DNS的标准方式。

1个不稳定版本

使用旧的Rust 2015

0.1.0 2017年12月5日

#17 in #reduce-boilerplate


2 crate中使用

MIT/Apache

12KB
180

NS Env Config

API文档 | 用法 | Github | crate

基于抽象-ns的,灵感来源于env_logger的名称解析一站式配置。

目标

  1. 使小型到中型应用的自举过程更容易
  2. 为Rust生态系统中的名称解析提供一种标准方式

特性

  1. 默认使用基于libc的标准名称解析(使用线程)
  2. [待办] 特性门控其他解析器(异步、consul等)
  3. 如果编译在内,解析器将通过RUST_NS=resolver_name启用
  4. 解析器的合理默认值
  5. 默认启用订阅(如果不可用则使用轮询)
  6. 一些选项从环境变量配置(RUST_NS=resolver_name:option=value
  7. [待办] 基于后缀的解析(《RUST_NS=std,consul=consul-resolver

非目标

  1. 涵盖所有其他名称解析方式
  2. 涵盖每个解析器的所有设置

用法

标准解析器

$ RUST_NS=std ./your-app

由于标准库解析器不是异步的,我们将在线程池中运行解析器。

参数

  • poll_ivl -- 订阅的轮询间隔(秒),默认 1
  • threads -- 名称解析的线程数,默认 4

最大的声明类似于以下内容

$ RUST_NS=std:poll_ivl=10:threads=16 ./your-app

许可证

根据以下任一许可证授权

贡献

除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应按上述方式双许可,不附加任何额外条款或条件。

依赖项

~6.5MB
~105K SLoC