storage服务功能实现分析之一

本文分析了storage服务的功能实现,从初始化流程入手,详细介绍了包括任务池注册、异常信号处理、状态监控上报、调度线程启动、 dio模块初始化、TCP连接处理及日志同步等功能。强调了控制面在分布式系统中的重要性,并展示了如文件同步创建的处理路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

storage服务功能分析,从初始化流程开始,各个功能单元落地。
1、storage_service_init    注册的g_storage_thread_count个任务池,每个任务一个管道,后续storage_accept_loop会用。work_thread_entrance中通过event_set设置接收处理函数storage_recv_notify_read,获取accept的套接字进行处理。如果出现错误接收处理任务退出时,步骤6的storage_accept_loop会继续接入新的连接继续处理。

2、sigaction(SIGUSR1,SIGHUP,SIGPIPE,SIGINT) 异常信号处理,本人最熟悉的机制,捕获系统异常用的。我们自己的项目做的更完善,淘宝也必然有进一步的分析和定位处理机制。

3、tracker_report_thread_start              下节专门描述,状态监控上报处理。作为一个分布式文件系统的数据服务,架构必然是控制面和业务面分离。控制面就是系统配置信息的上传下达、信息同步、状态监测等多节点整体运作协同的流程处理;业务面就是用户看到的文件具体操作在系统内部的实际处理流程。虽然大部分我们都关注业务面处理,其实对于有经验的设计者来说,控制面(有时也称管理面)才是更值得关注的部分。我的项目经验是无论哪个系统开发,控制面工作量占绝对大多数,一般是6成以上。

4、sched_start             启动sched_thread_entrance线程,调度的对象是ScheduleContext->ScheduleArray->ScheduleEntry记录的TaskFunc。这个机制类似于Linux内核里的event机制,应用触发一个运行事件,在固定的events内核线程中完成。目前只有一个应用场景,就是在本地为trunk server时使用sched_add_entries处理trunk_create_trunk_file_advance,建立一个64M大小的数个trunk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值