高性能通用检索系统设计实现
2017-10-25 21:52
323 查看
问题背景
这里介绍的是一种高性能检索系统内部核心的索引实现原理,该检索系统承载我们业务场景中非常核心的商品检索功能,在少于100检索条件下可以做到30ms以内的实时响应,这里,我们主要详解介绍其中的内部技术实现,这些技术实现在一些其他场景下也具备一定的通用性,这篇文章会仅仅从技术的角度出发分析问题的背景和解决方案,希望为大家在后续的工作中为解决类似的问题提供一种成熟稳定的解决方案的参考。我们面对的问题场景是有数千万的商品id,有数十万种检索条件,满足不同检索条件有不同的一批商品id,各种检索条件可以混合检索,线上业务通常条件下会有数十种检索条件,要求在30ms以内获得检索结果。
设计实现
针对上述的问题场景,不考虑业务逻辑,单从技术层面分析,我们的解决方案是对所有商品id构建一个全量的vector列表,然后对每种检索条件构建一个位图索引bitmap,bitmap的每一个bit与商品全量vector的下标进行映射。每种检索条件的检索结果都是预先构建好的,对不同的检索条件进行运算后得到一个对应最终检索结果的bitmap,从该bitmap可以映射得到对应实际检索结果的商品id列表。如下图所示:
上面的方案还存在一个比较严重的问题,由于bitmap构建时的base vector是全量商品id列表,这个列表元素个数是数千万级别,而bitmap有数十万根,每一根bitmap如果按原样存储,则仅bitmap的内存占用就至少需要100G+,对内存的需求太大,这里的bitmap是非常稀疏的,我们完全可以对bitmap进行压缩存储。
bitmap压缩的设计实现如下:
相关文章推荐
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
- 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
- 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现高性能的ASP.NET管理页面自动生成
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
- 通用权限系统框架功能实现设计
- 通用权限系统设计实现
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
- 基于视频处理的DSP系统通用设计模式及其实现
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现高性能的ASP.NET管理页面自动生成
- 通用权限系统框架功能实现设计
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现高性能的ASP.NET管理页面自动生成
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
- 狼厂项目实践:通用检索框架准实时流的设计与实现
- 用户权限设计 ASP.NET系统用户权限设计与实现、用户认证管理设计方案、通用数据权限管理系统设计
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
- 基于PHP的统一检索系统的设计与实现
- 通用后勤综合管理系统设计和实现【后台】
- 基于WIFI的室内定位系统设计与实现