Skip to content
/ Jimg Public

分布式文件(图片)服务器,参考zimg,去掉twemproxy,直接管理ssdb集群,修改配置不用重启,可以直接上线离线ssdb

License

Notifications You must be signed in to change notification settings

ewsq/Jimg

Folders and files

NameName
Last commit message
Last commit date
Feb 24, 2022
Feb 9, 2020
Feb 24, 2022
Feb 24, 2022
Feb 24, 2022
Apr 20, 2022
Dec 15, 2019
Dec 15, 2019
Apr 20, 2022

Repository files navigation

Jimg

Jimg使用框架:

Jimg使用框架

Jimg是受zimg启发开发的,zimg非常好,但发现几个问题没有弄明白,所以直接自已写了个。

zimg使用框架:

zimg没有明白的地方:

1、使用twemproxy,如果一个ssbd上的磁盘满了,或者压力过大,它是怎么不向这一台服务器上写的?

2、zimg这个程序似乎很容易挂掉,试过,如果关闭twemproxy,zimg这个程序就挂掉了。

3、怎么实现的如果某个master挂掉了,去slaver上取数据的?

4、修改配置能否不重启直接按新的配置提供服务?

鉴于以上问题,开发了Jimg,解决了以上问题,但现在只支持后端SSDB存储,后面考虑支持直接存入hadoop或其它支持分布式存储的db中。

程序功能:

1、SSDB集群管理,yaml文件动态加载,修改配置文件不需要重启服务,方便添加节点或者设置集群是否可写,SSDB集群如果有一台挂掉后不影响访问,集群的Master节点出问题后,自动写到其它集群,读取可以从Slaver节点读取,Master恢复后自动重新加回提供写入服务,如果一个集群挂掉会影响对本集群的读操作,但不影响数据的写入,数据会自动写入其它集群,如果一个SSDB占用的磁盘空间满后可以将此集群设置为只读集群,这样就不会再向此集群写入信息了,这样就保证了原来写入集群中的文件任然可以读取,而不需要做数据迁移或者扩容,只需要添加其它节点就可以了; 2、图片或文件或key值类数据上传和分发服务; 3、自身实现了集群管理,不再需要使有twemproxy,当然你也可以使用twemproxy做二级代理使用。

安装:

一、安装JDK(如果已有JDK则跳过此节,但是JDK是必须的,此版是基于JDK8开发的)

查看JDK信息:

[root@localhost ~]# rpm -qa | grep java

javapackages-tools-3.4.1-6.el7_0.noarch

tzdata-java-2014i-1.el7.noarch

java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64

java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64

python-javapackages-3.4.1-6.el7_0.noarch

卸载OpenJDK,执行以下操作:

[root@localhost ~]# rpm -e --nodeps tzdata-java-2014i-1.el7.noarch

[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64

[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64

rpm -e --nodeps tzdata-java*

rpm -e --nodeps java-1*

下载:

jdk-8u231-linux-x64.tar.gz

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

解压:

tar zxvf jdk-8u231-linux-x64.tar.gz

cd jdk-8u231-linux-x64

修改系统环境变量文件

vi /etc/profile

向文件里面追加以下内容:

JAVA_HOME=/u01/jdk1.8.0_231

JRE_HOME=$JAVA_HOME/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export JAVA_HOME JRE_HOME PATH CLASSPATH

使修改生效

[root@localhost ~]# source /etc/profile //使修改立即生效

[root@localhost ~]# echo $PATH //查看PATH值

二、安装cronolog

wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 

tar xf cronolog-1.6.2.tar.gz 

cd cronolog-1.6.2 

./configure 

make && make install 

which cronolog

二、安装ssdb

1、安装

mkdir /u01

cd /u01

wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip unzip master cd ssdb-master make

2、修改配置文件 vi /u01/ssdb-master/ssdb.conf 把server下的IP改为:0.0.0.0

vi /u01/ssdb-master/ssdb_slave.conf

修改replication中的host,指向Master的服务器地址。

3、设置SSDB为服务和开机启动

vi /etc/rc.d/init.d/ssdb

# /bin/sh 
# 
# chkconfig:345 98 98 
# description: SSDB is a fast NoSQL database for storing big list of billions of elements 
# processname:ssdb

case "$1" in 
  'start') 
    /u01/ssdb-master/ssdb-server -d /u01/ssdb-master/ssdb.conf 
    echo "ssdb started." 
    ;; 
  'stop') 
    kill `cat /u01/ssdb-master/var/ssdb.pid` 
    echo "ssdb stopped." 
    ;; 
  'restart') 
    kill `cat /u01/ssdb-master/var/ssdb.pid` 
    echo "ssdb stopped." 
    sleep 0.5 
    /u01/ssdb-master/ssdb-server -d /u01/ssdb-master/ssdb.conf 
    echo "ssdb started." 
    ;; 
  *) 
    echo "Usage: $0 {start|stop|restart}" 
    exit 1 
  ;; 
esac

exit 0

保存退出,然后设置权限 chmod 777 /etc/rc.d/init.d/ssdb #赋予文件执行权限 chkconfig ssdb on #设置开机启动 service ssdb start

三、安装jimg

将这几个文件和文件夹拷到/u01/Jimg目录,然后执行:


cd /u01/Jimg
chmod 777 Jimg

修改配置文件:

alpha:
  listen: 65511
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  protocol: ssdb  #可以取值redis,memcache,ssdb
  preconnect: true
  server_retry_timeout: 5000
  server_failure_limit: 1
  servers:
    - 0 192.168.10.211:8888:4500 192.168.10.211:8889:4500 192.168.10.211:8889:4501
    - 1 192.168.10.212:8888:4500 192.168.10.212:8889:4500 192.168.10.212:8889:4501
    - 1 192.168.10.213:8888:4500 192.168.10.213:8889:4500 192.168.10.213:8889:4501
    - 1 192.168.10.214:8888:4500 192.168.10.214:8889:4500 192.168.10.214:8889:4501

启动:
./Jimg start
重启:
./Jimg restart
停止:
./Jimg stop

如何上传文件请参考:

JimgClient.java

About

分布式文件(图片)服务器,参考zimg,去掉twemproxy,直接管理ssdb集群,修改配置不用重启,可以直接上线离线ssdb

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published