前言
在典型的基于DBMS的管理系统中,业务上的请求操作最终会转化为CRUD操作被apply到后台的数据库里。从客户端数据请求的发起再到最终结果的apply,在设计上整个过程往往是同步的方式,因为客户端要知道最终结果是否已经成功更新到数据库里了。类似在其它不是基于DMBS的存储系统中,这种同步处理的方式也是非常常见的。不过,笔者今天要探讨一种对此更为高效的改良设计,来提高数据请求处理的效率,客户端能够得到更快的响应。
传统同步模式的数据处理过程
在传统的软件系统中,数据请求处理返回整个一系列过程是同步的进行的,中间的任何一个环节出错都将宣告此次数据操作的失败。以下是其中的处理过程图:
上图对应步骤操作如下:
1)客户端发起数据操作请求
2)中心Manager服务端进行相关条件判断
3)如果条件判断通过,则进行后台DB数据更新,否则Manager返回失败结果给客户端。
上述的过程步骤其实并不多,但是决定整个请求处理过程的快慢经常会发生于最后的DB数据更新这一步。因为DB数据更新涉及到和外界服务进行交互,如果DB服务反应慢了,整个过程的时间也就变长了。试想一下,假设我们把比较重的数据落DB的操作从这个环节中剥离出去,独立地执行,那就可以提高不少的处理速度了。
我们姑且定义上面的过程为数据的延迟处理操作。在最近Hadoop Ozone的OzoneManager的代码实现中,就实现了这么一套延迟处理逻辑。下