FastDFS upload 和 download大概流程

FastDFS  upload 和 download大概流程,

流程分析

upload分析

FastDFS upload 和 download大概流程_第1张图片

download分析

FastDFS upload 和 download大概流程_第2张图片

服务器之间的消息头分析

upload消息头

1 upload file
  1.1 相tracker server查询有关storage server的信息
  1.1.1 connect to tracker server

  1.1.2 send message to tracker server
	#define FDFS_PROTO_PKG_LEN_SIZE 8
	#define TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITHOUT_GROUP_ALL 106
      	typedef struct
	{
		char pkg_len[FDFS_PROTO_PKG_LEN_SIZE];  //body length, not including header
		char cmd;    //command code
		char status; //status code for response[return value]
	} TrackerHeader;     //total 10 bytes
	cmd = TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITHOUT_GROUP_ALL
	status = 0 (主要获取返回的状态)

  1.1.3 receive the message of storage from tracker server
	TrackerHeader: 10 bytes
	group_name of storage: 	16 bytes;
	ip of storage: 		15 bytes;
	port of storage:	8 bytes;
	store_path_index:	1 bytes;
	
	total_size == 50 bytes;
  
  1.2 直接跟storage server 通信,上传文件 
  1.2.1 connect to storage server

  1.2.2 send message to storage server
	1.2.2.1 send header message
		TrackerHeader: 10 bytes;
			pkg_len = send_size - sizeof(TrackerHeader)
			cmd = STORAGE_PROTO_CMD_UPLOAD_FILE
			status = 0
		store_path_index: (value receive from tracker server) 1bytes
		file_size: 8 bytes
		file_ext_name: 6 bytes(后缀名)

	1.2.2.2 send file
	
	1.2.2.2 receive the returned message of file
		TrackerHeader: 10bytes
		group_name: 16 bytes
		remote_filename: xx bytes


download 消息头

2 download file
  2.1 向 tracker server 查询 remote_filename 所在的storage server
	2.1.1 connect to tracker server

	2.1.2 send message to tracker server
		TrackerHeader;
			pkg_len = total_send_size - sizeof(TrackerHeader)
			cmd = TRACKER_PROTO_CMD_SERVICE_QUERY_FETCH_ONE
			status = 0
		group_name: 16 bytes
		file_name:(maxsize 256 bytes)

	2.1.3 receive message from tracker server
		TrackerHeader: 	10 bytes
		ip of storage:	15 bytes
		port of storeage:8 bytes

  2.2 直接从storage serever 相应的 group 下载 file
	2.2.1 connect to storage server

	2.2.2 send message to storage server
			TrackerHeader: 10 bytes
				pkg_len = total_send_size - sizeof(TrackerHeader)
				cmd = STORAGE_PROTO_CMD_DOWNLOAD_FILE
				status = 0
			file offset: 8 bytes
			download_bytes: 8 bytes
			group_name: 16 bytes
			filename: remain bytes

	2.2.1 receive message header

	2.2.2 receive file


你可能感兴趣的:(FastDFS)