不同的开发语言适合不同的领域,例如Python适合做数据分析,C++适合做系统的底层开发,假如它们需要用到相同功能的基础组件,组件使用多种语言分别开发的话,不仅增加了开发和维护成本,而且不能确保多种语言间在处理效果上是一致的。本文以美团搜索实际场景下的案例,讲述在Linux系统下跨语言调用的实践,即开发一次C++语言的组件,其他语言通过跨语言调用技术调用C++组件。
-
1 背景介绍
-
2 方案概述
-
3 实现详情
-
3.1 功能代码
-
3.2 打包发布
-
3.3 业务使用
-
3.4 易用性优化
-
-
4. 原理介绍
-
4.1 为什么需要一个c_wrapper
-
4.2 跨语言调用如何实现参数传递
-
4.3 扩展阅读(JNA直接映射)
-
4.4 性能分析
-
-
5 应用案例
-
5.1 离线任务中的应用
-
5.2 在线服务中的应用
-
-
6 总结
1 背景
查询理解(QU, Query Understanding)是美团搜索的核心模块,主要职责是理解用户查询,生成查询意图、成分、改写等基础信号,应用于搜索的召回、排序、展示等多个环节,对搜索基础体验至关重要。该服务的线上主体程序基于C++语言开发,服务中会加载大量的词表数