Dynomite受到Dynamo 白皮书的启发,是一个适用于不同存储引擎和协议的薄型分布式 Dynamo 层。目前这些包括Redis和Memcached。 Dynomite 支持多数据中心复制,专为高可用性而设计。
Dynomite 的最终目标是能够在本身不提供该功能的存储引擎上实现高可用性和跨数据中心复制。该实施高效、不复杂(移动部件很少)并且性能很高。
每个编号为 v0.5.9、v0.5.8 等的分支都是稳定且安全的,可以在生产中使用,除非标记为预发布。 dev分支是开发不稳定分支。随着时间的推移,主分支已经落后并且不再被维护。我们最终将删除它,并且可能会也可能不会重新创建它。
如有问题或贡献,请考虑阅读CONTRIBUTING.md。
要从源代码构建 Dynomite,并启用调试日志并禁用断言:
$ 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
Usage: dynomite [-?hVdDt] [-v verbosity level] [-o output file] [-c conf file] [-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)
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)" tabindex="0" role="button">
Dynomite 可以通过进程启动时 -c 或 --conf-file 命令行参数指定的 YAML 1.1(YAML 1.1 与 JSON 不兼容)文件进行配置。配置文件解析并理解以下键:
- env:指定节点的环境。目前支持 aws 和网络(针对物理数据中心)。
- 数据中心:数据中心的名称。请参考架构文档。
- 机架:机架的名称。请参考架构文档。
- dyn_listen:dynomite 节点用于相互通信和八卦的端口。
- enable_gossip:启用 gossip 而不是静态令牌(默认值: false)。八卦是实验性的。
- gos_interval:八卦回合结束时的睡眠时间(以毫秒为单位)。
- tokens:节点拥有的令牌。目前,我们还不支持 vnode,因此暂时仅适用于一种令牌。
- dyn_seed_provider:种子提供程序实现,用于提供种子节点列表。
- dyn_seeds:种子节点列表,格式为:address:port:rack:dc:tokens(请注意,尚不支持 vnode)
- Listen:此服务器池的侦听地址和端口(名称:端口或 IP:端口)。
- timeout:我们等待建立与服务器的连接或接收来自服务器的响应的超时值(以毫秒为单位)。默认情况下,我们无限期地等待。
- preconnect:一个布尔值,控制 dynomite 是否应在进程启动时预连接到该池中的所有服务器。默认为 false。
- data_store:一个整数值,控制服务器池是否使用 redis (0) 或 memcached (1) 或其他协议。默认为 redis (0)。
- auto_eject_hosts:一个布尔值,控制服务器连续失败 server_failure_limit 次时是否应暂时弹出。有关信息,请参阅活性建议。默认为 false。
- server_retry_timeout:当 auto_eject_host 设置为 true 时,在临时弹出的服务器上重试之前等待的超时值(以毫秒为单位)。默认为 30000 毫秒。
- server_failure_limit:当 auto_eject_host 设置为 true 时,服务器上导致服务器暂时弹出的连续失败次数。默认为 2。
- 服务器:此服务器池的本地服务器地址、端口和权重(名称:端口:权重或 ip:端口:权重)的列表。目前,只有一个。
- secure_server_option:加密通信。必须是“无”、“机架”、“数据中心”或“全部”之一。
datacenter
意味着数据中心之间的所有通信均已加密,但数据中心内的所有通信均未加密。rack
意味着机架和区域之间的所有通信都已加密,但同一机架内的节点之间的通信未加密。all
意味着所有节点之间的所有通信都是加密的。这none
意味着所有通信均未加密。 - stats_listen:REST 端点以及用于访问统计信息的地址和端口号。
- stats_interval:设置统计聚合间隔(以毫秒为单位)(默认值:30000 毫秒)。
- mbuf_size:mbuf 块的大小(以字节为单位)(默认值:16384 字节)。
- max_msgs:要分配的最大消息数(默认值:200000)。
- datastore_connections:本地数据存储的最大连接数。
- local_peer_connections:与本地 DC 对等点的最大连接数。
- Remote_peer_connections:与远程 DC 对等点的最大连接数。
- dyn_port:Dynomite 服务器用于相互通信的端口。
最后,为了更轻松地编写语法正确的配置文件,dynomite 提供了命令行参数 -t 或 --test-conf,可用于测试 YAML 配置文件是否存在任何语法错误。
根据 Apache 许可证 2.0 版获得许可:http://www.apache.org/licenses/LICENSE-2.0