elasticsearch为什么先写translog再执行具体操作?

Elasticsearch | 作者 jingkyks | 发布于2015年12月07日 | 阅读数:2918

分布式系统中,比如hbase等,通常在执行具体操作之前先写入log。而在es中这个过程正好相反。源码中看上去是先执行操作再写入translog。
InternalEngine.java中的innerIndex方法: 
先执行了index操作,而translog的操作放在了后边。
----------------
这样做有什么特殊的考量么?
 
已邀请:

jingkyks - 水果铅笔2B橡皮

赞同来自:

再补充一点:
translog写入过程中会抛出异常,对这个异常的处理,外层只是将统计信息更新了一下,并没有看到对已经写入index的索引信息的处理,一直往上抛。
难道这条索引信息要交给客户端去删除?

要回复问题请先登录注册