
Ceph
文章平均质量分 93
ProgrammAffen
这个作者很懒,什么都没留下…
展开
-
Ceph IO读写流程详解(一)——RADOSGW
代码中的RGWOp_ZoneGroupMap_Get就是图中提到的Op,其他的S3请求,swift请求都与之类似,都有对应的manager,handler和执行的Op。从今天起,我将开启一个专题,讲述一个对象是如何从上传rgw到最终落盘的整个过程,期间也会有一些扩展内容,包括一些c++、网络等基础知识,权当作为一个复习吧。下一章节,我们将介绍最重磅的函数rgw_process_authenticated,这是处理Op最重要的函数。本文是以luminous版本进行讲解,虽然经过了迭代,但大体的思路是不变的。原创 2025-04-29 15:01:24 · 873 阅读 · 0 评论 -
Ceph中的线程池
ceph中线程池的整体实现有许多的类协作完成,也有不同的实现方案,本文将以其中一种为例进行讲解。首先我们来看在multisite中用到的一处使用线程池的请求。不了解multisite运行机制的同学不必担心,这里只是通过multisite的例子引入线程池!multisite是ceph进行多集群同步的机制,保证一个主集群和一个或多个备集群有完全相同的对象,整个机制是由上面提到的协程实现的,其基础类是RGWCoroutine。原创 2024-09-29 17:11:40 · 901 阅读 · 0 评论 -
【RGW】Ceph中的异步回调机制——AioCompletionImpl
在Ceph中,有许多地方有异步回调机制的应用,用于异步获取执行结果,本篇文章介绍在rgw处的异步回调。以RGWRados::Bucket::UpdateIndex::complete()函数为例,complete这个函数是在_do_write_meta中调用的的index_op->complete()。原创 2024-11-05 11:34:59 · 915 阅读 · 0 评论 -
Ceph中的消息通信——Messenger、Message和Connection详解
综合以上的分析可以发现,在消息传递的过程中,Messenger像是一个管理统筹的角色,负责相关模块的初始化和运行,Connection是真正负责发送,Message则是传递消息的格式,EventCenter则是负责调度,实现异步IO的关键。最后用一个函数调用栈,阐述一个来自radosgw层的操作如何传递到OSD层(以setxattr为例)。我们以complete multipart函数中的setxattr为例,将所有涉及的函数的调用关系呈现一遍。原创 2024-08-29 16:05:47 · 905 阅读 · 1 评论