解密Elasticsearch:深入探究这款搜索和分析引擎
💡
原文中文,约5500字,阅读约需13分钟。
📝
内容提要
最近使用Elasticsearch实现画像系统,调研了竞品架构选型,重温了redis原理。Elasticsearch的通讯使用netty,内存分为on heap和off heap,不能回收的部分有node query cache、shard request cache、file data cache、segments cache。持久化分为快照和translog日志。应用方面,使用es解决人群预估、人群包圈选和人包判定问题。优化方面,需要优化mapping,使用线程池和适当的拒绝策略,调整refresh policy等。瓶颈方面,可以使用redis或MongoDB存储人包数据。总结来说,Elasticsearch在实时检索方面表现出色,但实时写会降低检索性能。
🎯
关键要点
- 最近使用Elasticsearch实现画像系统,调研竞品架构选型,重温redis原理。
- Elasticsearch的通讯使用netty,节点间RPC通讯基于Netty4Transport。
- 内存分为on heap和off heap,不能回收的部分包括node query cache、shard request cache等。
- 持久化分为快照和translog日志,类似于redis的RDB+AOF模式。
- Elasticsearch在实时检索方面表现出色,但实时写会降低检索性能。
- 应用方面,使用Elasticsearch解决人群预估、人群包圈选和人包判定问题。
- 人群预估需要秒级返回结果,人群包圈选要求分钟级构建。
- 人包判定接口要求10毫秒返回结果,优化查询性能至关重要。
- 优化方面包括mapping优化、使用线程池、调整refresh policy等。
- 瓶颈方面可以使用redis或MongoDB存储人包数据。
- 总结来说,Elasticsearch在实时场景下表现优异,但实时写入会影响检索性能。
🏷️
标签
➡️