fastDFS扩容

###添加tracker

tracker非常容易扩展,直接增加tracker机器即可.集群中的tracker都是对等的,所有的tracker都接受stroage心跳信息.每个tracker是对等的.由客户端来选择使用哪个tracker.

如果新增加一台tracker server,storage server连接该tracker server,发现该tracker server返回的本组storage server列表比本机记录的要少,就会将该tracker server上没有的storage server同步给该tracker server。

###添加group

文件上传时,tracker会分配一个group给client.group直接配置好后启动group中的storage即可.而添加group也是集群扩容的方式.

配置好group后,启动新的group,tracker接受新的stroage心跳信息,来完成添加.

###group添加storage

fastDFS同group内的storage数据是同步的.storage中由专门的线程根据binlog进行文件同步.

当新添加一台storage,会由已有的一台storage将所有数据同步给新的服务器.

新加入的storage server主动连接tracker server,tracker server发现有新的storage server加入,就会将该组内所有的storage server返回给新加入的storage server,并重新将该组的storage server列表返回给该组内的其他storage server;

storage server有7个状态,如下:

  • FDFS_STORAGE_STATUS_INIT :初始化,尚未得到同步已有数据的源服务器
  • FDFS_STORAGE_STATUS_WAIT_SYNC :等待同步,已得到同步已有数据的源服务器
  • FDFS_STORAGE_STATUS_SYNCING :同步中
  • FDFS_STORAGE_STATUS_DELETED :已删除,该服务器从本组中摘除(注:本状态的功能尚未实现)
  • FDFS_STORAGE_STATUS_OFFLINE :离线
  • FDFS_STORAGE_STATUS_ONLINE :在线,尚不能提供服务
  • FDFS_STORAGE_STATUS_ACTIVE :在线,可以提供服务

###storage添加空间

在storage添加硬盘,然后添加store_path,一个group中各台storage的store_path的数量和配置必须一致.添加完成后重启服务,会自动在新添加的目录创建文件夹.

###数据迁移

如果新旧IP地址一一对应,而且是一样的,那非常简单,直接将data目录拷贝过去即可。

IP不一样的话,会比较麻烦一些。
如果使用了V4的自定义server ID特性,那么比较容易,直接将tracker上的IP和ID映射文件storage_ids.conf修改好即可。storage_ids文件可以再源码目录的conf里面找到示例.

如果是用IP地址作为服务器标识,那么需要修改tracker和storage的data目录下的几个数据文件,将旧IP调整为新IP。
注意storage的data目录下有一个.打头的隐藏文件也需要修改。
另外,需要将后缀为mark的IP地址和端口命名的同步位置记录文件名改名。
文件全部调整完成后才能启动集群服务。

tracker server上需要调整的文件列表:
data/storage_groups_new.dat
data/storage_servers_new.dat
data/storage_sync_timestamp.dat

storage server需要调整的文件列表:
data/.data_init_flag
data/sync/${ip_addr}_${port}.mark:此类文件,需要将文件名中的IP地址调整过来

fastDFS架构

####FastDFS是什么

FastDFS是开源的轻量级分布式文件系统,解决海量存储的问题,适合中小文件存储.由三部分组成

  • tracker server (跟踪服务器)
  • storage server (存储服务器)
  • client (客户端)
阅读更多

solr中数据导入中多值处理

在数据索引的时候会碰到一个field有多个值的情况,在field的属性中提供了一个multiValued="true"的属性.可以做多值索引.

做多值索引可以使用copyField或者是直接使用dataimport.这两种情况可以解决遇到的大多数多值索引的需求.

阅读更多

thrift基础以及在c#中的使用

###thrift是什么
Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架.它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中,如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk 等创建高效的、无缝的服务,其传输数据采用二进制格式,相对 XML 和 JSON 体积更小,对于高并发、大数据量和多语言的环境更有优势.

阅读更多

搜狗词库转换为txt文件

在solr分词的时候需要一些词库,在搜狗细胞词库可以下载到.scel的词库.但是需要转成成我所需要的.在网络找到一份python的处理代码.可以将词库提取出来.稍微修改了一下main里读取目录文件的部分和输出格式.就得到了我所需要的词库文件.代码如下:

阅读更多

ci配置smarty手记

需要用ci来写一个后台配置smarty,在网络上能够找到一些相关的文章.但是都是比较旧的内容,大部分是smary2.*的配置方法.按照这个配置后会出现一些错误.其实配置看smary官方会比较简单.

阅读更多

solr多核配置

假设已经配置好了一个单core的solr服务器.

###solr.xml配置文件
单核和多核主要在solr.xml配置不同.在solr/example中已经有一个名称为multicore的文件夹里面给我们配置好了一个两个核心的配置,分别是core1core2.但是我只是想在我已经配置好的solr服务器上添加一个核心.所以需要拷贝solr.xml配置到tomcat/solr文件夹

阅读更多

使用magick.net将pdf转换为图片

现在手上有个需求是要将pdf转换为一页一页的image.最开始找到的是pdfbox来处理pdf的.在pdfbox.apache.org的官网首页写了一句’convert you pdfs to image files’.所以最开始就使用pdfbox来作为转换库.但是在后面却发现出现了一个问题.由于暂时解决不了,发现了magick这个东西.可以用来处理100多种图片格式,并且提供了各种语言的api.

阅读更多