Dynomite受Dynamo白皮书的启发,是一种用于不同存储引擎和协议的轻量级的分布式的Dynamo层。 目前包括Redis和Memcached。 Dynomite支持多数据中心复制,旨在实现高可用性。

Dynomite的最终目标是能够在提供不同功能的多种存储引擎上实现高可用性和跨数据中心复制。 其部署是高效的,不复杂(很少的移动部件),并且性能高。

Workflow

Dynamite的稳定版本是主分支。 https://github.com/Netflix/dynomite/tree/master

对于问题或贡献,请考虑阅读https://github.com/Netflix/dynomite/blob/dev/CONTRIBUTING.md

Build

从源代码构建Dynomite并启用调试日志,禁用assertions

$ git clone git@github.com:Netflix/dynomite.git
$ cd dynomite
$ autoreconf -fvi
$ ./configure --enable-debug=yes
$ make
$ src/dynomite -h


调试模式构建Dynomite
$ git clone git@github.com:Netflix/dynomite.git
$ cd dynomite
$ autoreconf -fvi
$ CFLAGS="-ggdb3 -O0" ./configure --enable-debug=full
$ make
$ sudo make install

Help

Usage: dynomite [-?hVdDt] [-v verbosity level] [-o output file]
                  [-c conf file] [-s stats port] [-a stats addr]
                  [-i stats interval] [-p pid file] 

Options:
  -h, --help              : this help
  -V, --version           : show version and exit
  -t, --test-conf         : test configuration for syntax errors and exit
  -g, --gossip            : enable gossip (default: disabled)
  -d, --daemonize         : run as a daemon
  -D, --describe-stats    : print stats description and exit
  -v, --verbosity=N       : set logging level (default: 5, min: 0, max: 11)
  -o, --output=S          : set logging file (default: stderr)
  -c, --conf-file=S       : set configuration file (default: conf/dynomite.yml)
  -p, --pid-file=S        : set pid file (default: off)
  -x, --admin-operation=N : set size of admin operation (default: 0)

Configuration

可以通过在进程启动时由-c或--conf-file命令行参数指定的YAML文件配置Dynomite。

  • env: 指定节点的环境变量。目前支持aws和网络(用于物理数据中心)。
  • datacenter: 数据中心的名称。请参考 architecture document.
  • rack: rack的名称。请参考 architecture document.
  • dyn_listen: dynomite节点用于进行内部通信和gossip的端口。
  • enable_gossip: 启用gossip而不是静态tokens(默认值:false)。gossip是实验性的。
  • gos_interval: 在gossip round结束时的睡眠时间(以毫秒为单位)。
  • tokens: 节点拥有的令牌。目前,我们不支持vnode,所以现在只能使用一个令牌。
  • dyn_seed_provider: A seed provider implementation to provide a list of seed nodes.
  • dyn_seeds: seed节点列表,格式如下:address:port:rack:dc:tokens(目前不支持vnode的节点)
  • listen: 该服务器池的监听地址和端口(名称:port或ip:port)
  • timeout: 我们等待与服务器建立连接或从服务器接收响应的以msec为单位的超时值。默认情况下,我们无限期地等待。
  • preconnect: 一个布尔值,用于控制dynomite是否应在进程启动时预先连接到此池中的所有服务器。默认为false。
  • data_store: 一个整数值,用于控制服务器池是否使用redis(0)或memcached(1)或其他协议。默认为redis(0)。
  • auto_eject_hosts: 一个布尔值,用于控制在连续失败server_failure_limit次时是否应暂时弹出服务器。默认为false。 See liveness recommendations for information.
  • server_retry_timeout: The timeout value in msec to wait for before retrying on a temporarily ejected server, when auto_eject_host is set to true. Defaults to 30000 msec.
  • server_failure_limit: 服务器上连续发生故障的次数,当auto_eject_host设置为true时,达到该次数会导致临时弹出。默认为2。
  • servers: 服务器池的本地服务地址,端口和权重的列表(名称:port:weight或ip:port:weight)。目前只有一个。
  • secure_server_option: 加密通信。必须是 'none', 'rack', 'datacenter', or 'all'.
  • stats_listen: REST端点的地址和端口号以及访问统计信息。
  • stats_interval: 以msec为单位设置统计间隔(默认值:30000毫秒)。
  • mbuf_size: mbuf块的大小(以字节为单位)(默认值:16384字节)。
  • max_msgs: 要分配的最大消息数(默认值:200000)。