随着电商行业迅猛发展,阿里巴巴旗下闲鱼的二手交易搜索系统在优化用户体验和拓展业务中居关键地位。面对多任务并行处理的挑战,强化闲鱼搜索架构的层次结构变得尤为急迫。本研究旨在分析闲鱼当前的搜索状况,并探讨采用多引擎并行查询和业务解耦策略,以保证搜索系统的安全性、适应性及高效性能。
一、闲鱼搜索现状与挑战
闲鱼搜索引擎,作为用户与商品连接的关键纽带,承载着庞大的访问流量和多元化业务需求。目前,系统主要依赖单一引擎的单向召回机制,导致角色、业务和节点间高度紧密依赖。这种架构制约了系统的扩展潜力,提升了维护的复杂性。在闲鱼业务不断扩张的态势下,确保系统能够安全、灵活且高效地适应多样化的业务接入和执行业务混合排序,是亟需突破的核心挑战。
二、Blender与uniq_session:探讨搜索流程的核心构成要素
Blender作为闲鱼搜索系统的SP服务核心节点,负责用户查询处理、分页搜索及数据完善等关键职能,构成了搜索流程的“神经中枢”。uniq_session扮演搜索枢纽角色,协调引擎运转、实现分页及URFRank处理,与Blender共同构建用户所见的商品列表。二者协同运行,确保搜索系统的高效稳定。
三、集团搜索中台能力与HA3引擎
闲鱼搜索系统深度融合集团搜索平台技术,有效整合高级技术和资源。系统包括数据聚合(离线数据备份)、索引编制(全量/增量/实时)、在线服务等多重功能模块,经过多维度优化,以提供用户稳定、高效的搜索体验。依托suez框架的HA3全文检索系统,凭借其全面的信息检索、筛选、排序及汇总能力,以及用户自定义排序插件,形成闲鱼搜索系统核心组件。
四、多引擎并发召回架构的设计
针对多元业务整合带来的挑战,闲鱼搜索系统已升级架构,由单引擎单路由查询优化为多引擎多路径并行查询。整合多搜索引擎能力,此改动有效支撑了多样化业务场景的个性化查询需求,并通过并发处理技术增强了查询效果。流控模块于配置中心接收引擎定制配置,进行查询重写,构建HA3请求序列。系统依据查询中的多引擎标识,并行向各引擎在线服务发送查询请求数据,综合处理结果后,统一切换至精确排序处理。
五、业务解耦与引擎隔离
在多引擎并行架构中,业务模块以引擎标识为分割点,实现有效解耦。该方案既满足了定制化要求,又降低了闲鱼主搜服务的干预。系统通过智能查询改写机制,具备对多种业务场景的适应能力,从而提升搜索准确性和效率。同时,通过集成Diamond配置中心的流量控制模块,实现了对查询搜索能力的动态调控,为新兴业务发展筑牢了稳固的架构基石。
六、性能优化与效率提升
多引擎并行架构的引入显著增强了搜索系统的弹性和扩展力,极大提高了性能水平。以闲鱼无忧购为例,独立引擎的应用使得大量数据处理时间从原先的14小时缩短至5小时,极大提升了处理效率。同时,通过查询改写的隔离与多引擎的集成,将平台责任转移至业务端,增强了主链路的稳定性,并加速了业务更新迭代。
七、未来展望与持续优化
-- 构建请求的biz列表
function get_search_biz_type_list(query, param)
-- 搜索biz配置列表
local search_biz_type_list = {}
if query.bizType then
if type(query.bizType) == "string" then
table.insert(search_biz_type_list, query.bizType)
else
search_biz_type_list = query.bizType
end
end
if search_biz_type_list == nil or #search_biz_type_list < 1 then
table.insert(search_biz_type_list, param.default_biz_type)
end
local search_list = {}
if not query._enable_multiplexed then
table.insert(search_list, {biz = param.default_biz_type, biz_type = search_biz_type_list})
return search_list
end
for _, type in ipairs(search_biz_type_list) do
table.insert(search_list, {biz = type, biz_type=type})
end
return search_list
end
闲鱼业务持续延伸,其搜索功能遭遇了一系列新挑战与机会。展望未来,闲鱼搜索团队计划深入采用多引擎并行技术,致力于创新技术和策略研发,以优化搜索效率、适应性和用户满意度。此外,团队还将积极促进集团内部多部门间的合作与沟通,共同推动搜索技术的不断演进。
闲鱼搜索系统的演化标志着技术与应用紧密结合的突出实例。借助多引擎联动检索与业务层级的解耦,闲鱼成功攻克了现有挑战,并为未来发展筑牢了坚实基础。在电商环境持续演进的背景下,我们对闲鱼搜索系统引领创新的能力充满期待。热切期盼各界同仁在评论区分享见解,共同智绘未来。
function parse_diamond_config(query, param)
query._cluster_info = {}
-- 多引擎配置
local cluster_info_str = param.cluster_info
local cluster_info = setup.split(cluster_info_str, ";")
if not cluster_info then
return
end
for _, info in ipairs(cluster_info) do
local single_cluster_info = setup.split(info, ":")
if single_cluster_info and #single_cluster_info > 1 then
query._cluster_info[single_cluster_info[1]] = single_cluster_info[2]
end
end
end