欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dynomite上手指南

程序员文章站 2022-03-30 16:38:00
...

dynomite使用netflix开源的一个开源将非分布式的缓存系统改造成分布式的缓存系统,根据亚马逊的Dynamo进行设计,是一个高可用,高性能,支持跨数据中副本的分布式存储代理层。
根据Dynomite的拓扑图,我们创建一个单DC单Rack三个服务节点的dynomite存储层。

安装redis

wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar zxf redis-3.2.3.tar.gz
cd redis-3.2.3
make install

安装dynomite

$ yum install -y git autoconf automake libtool openssl-devel net-tools
$ git clone [email protected]:Netflix/dynomite.git
$ git checkout master
$ cd dynomite
$ autoreconf -fvi
$ ./configure --enable-debug=log
$ make
$ src/dynomite -h

创建工作目录

$ mkdir -p /apps/dynomite/bin
$ mkdir -p /apps/dynomite/conf
$ cp src/dynomite /app/dynomite/bin/
$ git clone https://github.com/richieyan/IntroDynomitedb.git

复制IntroDynomitedb中conf下的3个配置到/apps/dynomite/conf
修改配置的IP地址

创建3个redis配置文件

复制redis下的配置,修改端口,bind地址和daemonize
redis1.conf : port 6379
redis2.conf : port 6389
redis3.conf : port 6399
启动这三个redis服务

redis-server redis1.conf
redis-server redis2.conf
redis-server redis3.conf

启动dynomite服务(单DC单Rack的普通集群)

-s 是stats的监听端口 -d 表示后台运行

$ bin/dynomite -c conf/node1.yml -s 22221 -d --output=node1.log
$ bin/dynomite -c conf/node2.yml -s 22222 -d --output=node2.log
$ bin/dynomite -c conf/node3.yml -s 22223 -d --output=node3.log

3个节点构成一个普通集群,无副本复制,但是通过dynomite的端口可以获得任意节点的数据。

使用redis-cli测试

redis-cli -h 10.130.138.47 -p 8102
> set ca California
> get ca
> "California"

通过dynomite的端口进行操作,dynomite会计算key的hash,按照Node的token计算出实际操作的Node,并将请求转发给次节点。
使用Dyno客户端,可以同步节点的token信息,从而使Dyno客户端在java层计算出其实际存储的节点token,可以避免dynomite的二次计算。