最近在公司search engine的优化

其实有很多可以写,公司在search engine上做的东西也远不止一下这些。不过下面所列各点很重要,也非常通用。更多的东西,以后再整理了。

1. Search engine的优化

a. 对于query latency是优化的GC策略,优化设置各代heap的尺寸

b. 消除没有必要的匿名类

c. 对search engine里的每个queue进行控制和监控

d. 针对lucene的mark deleted机制,做delay deletion,特别针对自己的扩展

e. 基于profile的统一的归一化的sorting

f. 定期的index重建,以及相应的更新策略

g. 对每个重要的metric要暴露出来,并进行监控


2. Search feeder的优化

a. 需要识别各个源表,并创建统一的search DB

b. 创建event table,并为每一种更新源表的事件类型分配event id。每次更新事件发生,就在event table插入一条纪录,该纪录索引基于creation_time,并能关联到源表的相应的纪录,能进行join

c. 保证event_table能覆盖任何的search数据更新

d. 确保event_table的数据插入,其creation_time必定是单调递增,以确保在做batch处理时没有数据丢失

e. 确保对每个event的处理是幂等操作,保证messaging能以at least once的方式deliver

f. 每个event_table都是有状态的,即处理过的最后一条event的creation_time,状态需要persist



你可能感兴趣的:(search,search,优化,table,lucene,delay,query)