Curve核心组件之Client - 网易数帆MDS:只有主MDS才会监听端口 ChunkServer:通过raft维护复制组内的主-从关系CLIENT IO流程 用户下发一个写请求 off: 8M len: 16M 请求落在两个逻辑chunk上,所以 请求会被拆分成两个子请求: ChunkIdx 1, off: 8M len 8M ChunkIdx 2, off: 0 len 8MCLIENT IO流程 子请求由哪个chunkserver处理,依赖以 chunkserver心跳定期上报给MDS 通过MDSClient向MDS获取 复制组的leader信息 复制组之间通过raft维护 通过CliClient向Chunkserver获取 这两种信息client也会进行缓存 上报心跳CLIENT IO流程 子请求处理步骤: 1. 从MDS获取逻辑chunk与物理chunk的 对应关系(包含逻辑池以及复制组信息) 2. 从MDS获取复制组所在的机器列表 调用异步请求回调,返回用户CLIENT IO请求重试 IO分发线程将拆分后的子请求通过RPC请求发往指定的Chunkserver上,RPC有可能会失败,一般情况下 处理逻辑是sleep一个较短时间后重试,但是存在两种特殊的场景: Chunkserver Overload: 这种情况下,对应的RPC Response中返回的错误码是OVERLOAD,说明底层Chunkserver正在处理的 请求数量过多。按0 码力 | 27 页 | 1.57 MB | 6 月前3
共 1 条
- 1













