FastDFS FastTracker 分析(version:3.11)
来源:互联网 发布:淘宝hottoys在哪买 编辑:程序博客网 时间:2024/05/16 00:59
FastTracker进程总共有9个线程(默认配置, 根据配置文件可以更改工作线程(work_thread_entrance)数量)在运行:
1:
主进程创建其他进程后主要就是在listen客户端的连接:
tracker_accept_loop: 每当一个连接进来, 就将socket号传递给工作线程work_thread_entrance线程; 传递采用了libevent的peer socket方式传递给工作线程:
write(pThreadData->pipe_fds[1], &incomesock, sizeof(incomesock)) != sizeof(incomesock));
工作线程的选择主要是根据socket号被工作线程数取余的方式选择。因此工作线程是采用线程池的方式工作。
2:
工作线程(work_thread_entrance)将peer socket的另一端pipe_fds[0] 加入到libevent的的事件处理中,处理事件的函数是recv_notify_read;工作线程在libevent提供的处理接口event_base_loop上等待并处理收到 的事件。当收到主进程的accept后的事件后,recv_notify_read就读取accept的socket。获取一个空闲的连接处理任务:fast_task_info; 在socket上设置读和写的事件处理接口client_sock_read和client_sock_write(利用libevent的机制来处理读写)。发送的接口是send_add_event,也是采用事件的方式来发送数据。client_sock_read中处理消息的接口是:tracker_deal_task。
3:
httpd_entrance: 处理http消息的线程,主要由generic_handler来处理http来的事件,也是采用libevent来的事件方式来处理。主要是用于处理http的查询消息。
4:
http_check_entrance :用于定时检查storage server是否正常,主要是建立到storage的连接是否可以建立。
5:
sched_thread_entrance: 主要来处理一些本地全局变量,storage状态写入文件等事件。
log_sync_func: 将日志同步到磁盘;
tracker_mem_check_alive: 找出不活动的 storage server,接下来并更改 storage 的状态
fdfs_stat_file_sync_func: 将统计数据同步到磁盘;
6:
relationship_thread_entrance:主要是用于选择leader和维护leader。
后续几个线程写的比较简单,后续完善
- FastDFS FastTracker 分析(version:3.11)
- FastDFS storage 分析 (version:3.11)
- FastDFS trunk 数据结构 (version:3.11)
- FastDFS storage server IP 更改 (version:3.11)
- FastDFS trunk binlog的A ,D (version:3.11)
- FastDFS Storage的加入和同步 (version:3.11)
- FastDFS下载文件测试 ./fdfs_test %FastDFS%/conf/client.conf download (version:3.11)
- fastdfs函数tracker_query_storage_update1分析
- FastDFS合并存储原理分析
- FastDFS合并存储原理分析
- FastDFS 分布式系统需求分析
- fastDFS网上大体流程分析
- FastDFS 分布式系统需求分析
- FastDFS源码分析之tracker协议分析
- FastDFS源码分析之tracker协议分析
- fastdfs
- fastdfs
- FastDFS
- 图片存储架构学习:独立的图片服务器,给爱一个独立的空间
- FastDFS storage 分析 (version:3.11)
- HDU 4328
- 备份MBR在恢复MBR
- uiwdt,从LOG中找到相应的信息
- FastDFS FastTracker 分析(version:3.11)
- AIX 5L 内存性能优化,第 3 部分
- Runtime.exec的使用好文章
- [English Homework] Presentation about new idea
- Do I need to have 64 bit Processor to use 64 bit data type
- 一级市场和二级市场
- VC在文件中写入换行符和制表符
- AIX 5L 内存性能优化,第 1 部分: AIX Version 5.3 中内存的概述以及内存参数的优化
- WPF数据绑定之4种绑定模式