一句话:提出跨语言静态 gRPC 依赖恢复框架 RPCover,并构建首个多语言 gRPC 微服务基准 RPCoverBench。
微服务架构中 RPC 调用广泛,但现有服务调用图构建多依赖动态分析,需要预先部署且只能捕获特定时间窗口内的调用关系;静态方法虽更稳定完整却研究不足。本文提出 RPCover,一个面向多语言项目的 gRPC 依赖恢复框架,通过静态分析跨编程语言的 gRPC 调用实现服务互连。由于缺少多语言 gRPC 微服务基准,作者构建了首个包含复杂 gRPC 调用关系的多语言基准 RPCoverBench。在单语言基准 DeathStarBench 与 RPCoverBench 上评估,RPCover 可恢复 99.33% 的 gRPC 调用用例,开销低于单语言语义依赖分析器的 200%。
The advent of microservice architecture has led to a significant shift in the development of service-oriented software. In particular, the use of Remote Procedure Call (RPC), a mode of Inter-Process Communication (IPC) prevalent in microservices, has noticeably increased. To figure out the relationships between services and obtain a high-level understanding of service-oriented software, a line of recent work focuses on the dynamic construction of service call graphs, which relies on the preliminary deployment of services and only captures the calling relationships within a specific time frame. Meanwhile, static methods avoid the need for pre-deployment and often provide a more stable and complete graph compared to dynamic techniques. However, research and practical applications of static call graph construction remain relatively unexplored. This paper introduces RPCover, a novel gRPC dependency recovery framework that facilitates the interconnection of services across various programming languages using their static gRPC calls. In addition, due to the lack of a multilingual microservice benchmark that uses gRPC, we build the first multilingual benchmark RPCoverBench that contains complex gRPC call relations. RPCover has been evaluated on a single language benchmark (DeathStarBench) and our multilingual benchmark (RPCoverBench). The results show that RPCover effectively recovers 99.33% of the use cases of gRPC calls with less than 200% of the overhead compared with a single-language semantic dependency analyzer.