在准备用MogileFS来替代公司现有文件系统时,一直困扰于文件的显示,因为像图片这样的静态文件,如果在显示时也要用Http Response来输出,那是一件非常杯具的事情。

     经过一番查找,发现Nginx有一个MogileFS的Module,使用本模块,可以直接对MogileFS的文件进行定位。

     由于本人现在对Nginx十分着迷,拿到这样一个东西简直如获至宝,于是立即着手测试。

     我的Nginx版本是0.8.35,下载的MogileFS模块版本是1.0.2,最开始部署时,十分不顺,因为在将模块编译安装进Nginx后,启动Nginx老是报一个“Segmentation Fault”的错误,这个错误是因为程序中使用了一个空指针引起的,看来是模块版本和Nginx版本不兼容了。但是按照模块的帮助文件中的描述,使用Nginx的0.7系列,依然无法正常启动Nginx....

     最后下载了MogileFS模块的1.0.3版本,终于成功搞定,以下是本人针对自己的需求配置的文件服务器的配置:

 

代码

#user  nobody;
worker_processes  
4;

error_log  logs
/error.log  notice;

worker_rlimit_nofile 
10240;

events {
    
use epoll;
    worker_connections  
10240;
}


http {
    include       mime
.types;
    default_type  application
/octet-stream;

    server_names_hash_bucket_size 
128;
    client_header_buffer_size 32k
;
    large_client_header_buffers 
4 32k;

    client_max_body_size 8m
;
    client_body_buffer_size 128k
;

    proxy_connect_timeout 
600;
    proxy_read_timeout 
600;
    proxy_send_timeout 
600;
    proxy_buffer_size 16k
;
    proxy_buffers 
4 32k;
    proxy_busy_buffers_size 64k
;
    proxy_temp_file_write_size 64k
;

    log_format  main  '
$remote_addr - $remote_user [$time_local] "$request" '
                      '
$status $body_bytes_sent "$http_referer" '
                      '
"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs
/access.log  main;

    sendfile        
on;
    
#tcp_nopush     on;

    
#keepalive_timeout  0;
    keepalive_timeout  
65;

    gzip 
on;
    gzip_min_length 1k
;
    gzip_buffers 
4 16k;
    gzip_http_version 
1.1;
    gzip_comp_level 
2;
    gzip_types text
/plain application/x-javascript text/css application/xml image/jpg image/jpeg image/gif image/png image/x-xbitmap image/pjpeg application/vnd.ms-excel application/vnd.ms-powerpoint application/msword application/x-shockwave-flash application/octet-stream;
    gzip_vary 
on;

    tcp_nodelay 
on;

    server {
        listen       
80;
        server_name  yourdomain
.com;

        location 
/ {
        mogilefs_tracker 
192.168.33.2:6001;
        mogilefs_domain test
;
        mogilefs_methods get
;
    
        mogilefs_pass {
        proxy_pass 
$mogilefs_path;
        proxy_hide_header Content-
Type;
        proxy_buffering 
off;
        }
        expires 1h
;
        }

        error_page   
500 502 503 504  /50x.html;
        location 
= /50x.html {
            root   html
;
        }


    }



}

 

     值得注意的是,在实际使用时,要注意根据情况调整default_type,默认的值在FireFox下,会把图片当成无法打开的文件进行下载。

posted @ 2010-04-11 09:29 阿蒙 阅读(361) 评论(0) 编辑
        昨日的新闻,真是相当杯具的事情,多名国家大员同时殒命,想象一下这种事情发生在中国会是什么样子......
posted @ 2010-04-11 09:06 阿蒙 阅读(18) 评论(0) 编辑

       大概数周之前,因为公司招人,想在网上找点面试题“借用借用”,于是无意中找到这样一道数据库题:

索引有那两种形式?分别有什么优缺点?

       文章作者给出的答案是:

聚集索引:表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较大。
   非聚集索引:不影响表中数据的存储顺序,检索效率比聚集索引低,但对数据更新影响较小。

       非聚集索引真的比聚集索引慢吗?就本人对数据库的理解,并不是这样的。

       以SQL SERVER为例,数据记录是分布在以8KB为单位的数据页上的。聚集索引就是数据本身,而非聚集索引保存的是索引键和对应的聚集索引键值。

       因此绝大多数情况,一单位聚集索引的大小都大于一单位非聚集索引的大小,换句话说,一个数据页上能够容纳非聚集索引的条数是多余聚集索引的。

       而SQL SERVER是以页为单位来扫描数据的,因此扫描相同页数量的数据页,能够覆盖的非聚集索引数量会更多,如果合理的利用SQL SERVER 2005的包含列的话,非聚集索引的查询效率是高于聚集索引的。

posted @ 2010-04-11 08:59 阿蒙 阅读(101) 评论(0) 编辑

最近公司改造文件系统,由于以前的工作经验,选择了MogileFS来做。

在网上找到两个版本的客户端API,但是阅读代码后,发现都没有连接池的支持,于是自己动手在原API的基础上封装了一个支持连接池的API。

由于是基于ADO.NET的机制写的,因此在编写接口时,也要求提供一个类似数据库连接字符串的东东,格式如下:

 

代码
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    
<connectionStrings>
        
<!--一个完整的MogileFS连接字符串-->
        
<add
            name
="MogileFS" 
            connectionString
="host=192.168.33.2;port=6001;pooling=true;connection timeout=100;Connection Lifetime=150;domain=test;"/>
    
</connectionStrings>
</configuration>

 

“MogileFS”是默认使用的配置节点名称。

配置中,除host和domain是必须项外,其它都是可选项。

 

源码:Maocos.IO.rar (该代码可自由传播、修改,但请保留版权申明)

posted @ 2010-04-11 08:29 阿蒙 阅读(187) 评论(1) 编辑