最近业务需要了解了一下FastDFS。
紧接是基于nginx的FastDFS第三方模块。
FastDFS存非常高效,但是取却不高效。同时nginx拥有高效的直接读取磁盘文件的能力,但是却没有FastDFS的tracker-storage的优势。
故而需要来扩展FastDFS的nginx第三方模块来丰富业务需求。比如任意剪裁图片(ImageMagick的resize)。转换音频(ffmpeg)。
不过值得注意的是,这个操作消耗的是服务器的CPU和存储。
这个过程从6月30号开始搭FastDFS环境,到7月1号下午开会明确上面的需求,到今天7月3号阅读源码尝试着修改。
虽然到现在21:13分没有成功。但是还是有很多收获。
比如安装FastDFS的时候需要配置的storage.conf, tracker.conf, 以及fastdfs-ngx模块的conf,nginx自己的启动配置conf,以上配置文件都需要一个一个地过,加深了理解。
比如ubuntu下安装nginx需要修改objs文件夹下面的Makefile,于'-llua'后面添加'-ldl',还有其他一些问题的解决,让自己面对问题不是无能为力而是明确错误的一个大致范围,逐步来确定问题。
最主要的是从大学毕业之后就很久没碰过的C代码的大量阅读。比如宏定义一些“过程”,
FDFS_SPLIT_GROUP_NAME_AND_FILENAME(file_id)
#define FDFS_SPLIT_GROUP_NAME_AND_FILENAME(file_id) char new_file_id[FDFS_GROUP_NAME_MAX_LEN + 128]; char *group_name; char *filename; char *pSeperator; snprintf(new_file_id, sizeof(new_file_id), "%s", file_id); pSeperator = strchr(new_file_id, FDFS_FILE_ID_SEPERATOR); if (pSeperator == NULL) { return EINVAL; } *pSeperator = '