欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    TFS Nginx模块实现.ppt

    • 资源ID:70105306       资源大小:359.71KB        全文页数:29页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    TFS Nginx模块实现.ppt

    Nginx-tfs实现2012.8.10明俨1AgendaThe Big PictureThe Big Picture配置和使用配置和使用内部实现内部实现2The Big Picture3/26CLIENTPOSTGETPUTDELETEHEADNginxtenginengx_mod_tfsngx_mod_tairTFSrc servername serverdata serverroot servermeta serverUpStreamDownStream配置和使用4配置文件http#http 配置块tfs_upstream 10.232.36.203:6100;#rc_server 地址tfs_rc_zone size=128M;#rc所使用共享内存大小tfs_block_cache_zone size=256M;#本地block cache所使用共享内存大小tfs_poll_rcs lock_file=/home/xxx/nginx/logs/lk.file interval=10s timeout=3s enable=1;#rc keep-alive 使用的锁文件,时间间隔,超时时间,启用否tfs_send_timeout 3s;#向tfs server发送数据超时时间tfs_connect_timeout 3s;#连接tfs server超时时间tfs_read_timeout 3s;#从tfs server读数据超时时间tair_timeout 1s;#tair超时时间(连接/发送/接收数据)server#server 配置块tfs_keepalive max_cached=100 bucket_count=10;#连接池大小tfs_tackle_log“pipe:/usr/sbin/cronolog-p 30min /home/mingyan.zc/ngx_bin/logs/cronolog/%Y/%m/%Y-%m-%d-%H-%M-tfs_access.log;#配置tfs访问日志 tfs_net_device bond0;#配置使用的网卡(获取本地地址用于rc登录)location/#根location配置块tfs_pass enable=1;#是否启用tfs模块5编译运行6/26编译./configure-add-module=/home/path/to/mod_tair/tair_2/-add-module=/home/path/to/mod_tfs-prefix=/home/path/to/ngx_bin/-with-debugmakemake install运行./nginx停止./nginx-s stop重载配置文件./nginx-s reload内部实现7ngx_tfs模块框架8/26通用模块部分RESTful解析连接池rc keep-alive模块本地block cacheTFS交互模块JSON输出模块排重通用模块部分配置文件指令解析3个配置数据结构main_confsrv_confloc_conf生命周期和nginx进程周期相同设置Handler(请求入口)ngx_http_tfs_handler初始化timer(用于rc-keep-alive)9/26Handler分配关键数据结构ngx_http_tfs_t从请求的pool中分配的生命周期和请求的生命周期相同RESTful解析解析URI解析操作对请求进行处理特殊请求:写文件请求(带body)10/26RESTful解析URI解析协议版本v1:原生TFSv2:自定义文件名appkey关键词和文件名操作解析方法:GET/POST/PUT/DELETE/HEAD参数举例curl-data-binary file_to_up 10.232.35.41:3900/v1/tfscom11/26TFS交互模块状态机连接的读写事件ngx_http_tfs_read_handlerngx_http_tfs_send_handler内存管理pool中分配,无需显式释放发送/接收buf12/26状态机13/26读原生TFS文件自定义文件名目录操作STARTGET_META_TABLEGET_BLK_INFOREAD_DATADONESTARTGET_META_TABLEPROCESSDONE状态处理流程14/26CREATE_REQUESTINPUT_FILTER(可选)PROCESS_REQUEST_BODYFINALIZE_REQUEST(可选)RETRY_HANDLER(可选)typedef ngx_int_t(*tfs_peer_handler_pt)(ngx_http_tfs_t*t);连接读写事件写事件连接tfs server(ngx_event_connect_peer)发送tfs请求读事件接收tfs应答15/26内存管理配置数据结构main_conf/srv_conf/loc_conf生命周期:nginx进程从pool中分配生命周期:请求共享内存生命周期:nginx进程16/26接收bufHeader buffer(共用)每个连接有各自的body buffer处理buf overflow情况17/26recv_chainheader_buffertfs_peerngx_http_tfs_tbufnextngx_chain_tbufnextngx_chain_tpeerbody_bufferpoolngx_http_tfs_peer_connection_t连接池模块维护到tfs的server之间的长连接根据ip地址计算hash两个hash链表cachefree保存在main_conf结构中放入连接池中时挂上读事件以便处理server端关闭18/26共享内存在ngx_tfs_mod中的使用每个appkey的rc节点block cache在所有worker process中共享需要互斥访问19/26共享内存(cont)解析配置文件指令时就建立好固定大小数据结构红黑树内存分配/释放ngx_slab_alloc/ngx_slab_free_locked我们需要实现选择红黑树的key查找/插入/淘汰20/26原生大文件重用小文件的各个过程区分:大文件标记参数显式指定(写)数据超过指定大小(15MB)(写)文件名(L)(读/删/stat)BatchGetBlockInfo21/26原生大文件(cont)22/26数据分片:根据数据长度计算好分片个数元分片:数据全部写成功之后生成元分片:读到内存一个临时的buf中数据分片:根据offset和size找到需要的分片写元分片:读到内存一个临时的buf中数据分片:和元分片一块删除读使用readV2协议将元分片的头读出来删Stat自定义文件名重用原生文件的各个过程区分:URI中的协议版本号(v2)增加目录操作的过程Meta table保存在配置文件的loc_conf结构中更新:首次/root server更改/操作返回版本错误时23/26自定义文件名文件24/26重用大文件的过程每写成功一批分片,保存元数据到meta server重用大文件的过程(反复从ms读分片信息)空洞:将一个zero_buf反复挂到输出链写重用大文件的过程(反复从ms读分片信息)挨个删除分片,再删除ms上的元数据读删自定义文件名其他25/26使用json输出模块ls_dir要处理buf overflow无法使用递归利用ngx_str_t结构的特性,使用一个长度数组ls_dir/ls_file自动创建父目录排重使用ngx_tair模块动态创建tair实例在main_conf中使用一个固定大小的数组,保存tair实例指针tair地址的哈希每个逻辑集群有自己的tair实例只初始化一次tair地址改变或进程退出时销毁tair实例所有的tair操作(PUT/GET/DELETE)也都是异步的26/26rc keep-alive利用nginx的定时事件module初始化时创建一个在worker process之间互斥的变量worker process初始化时添加定时事件在事件超时时模拟请求处理过程遍历共享内存中的rc节点记录当前keep-alive的节点在队列中的位置处理完毕再添加一个定时事件27/26JSON输出模块依赖yajl库ngx_http_tfs_json_initngx_http_tfs_json_xxx对要返回的内容进行json封装返回一个ngx_chain_t结构指针(会被链在ngx_http_tfs_t的out_bufs的末尾)返回json格式的应答指定content_type =application/json“28/26Thank You!29

    注意事项

    本文(TFS Nginx模块实现.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开