This work-in-progress report presents both the design and partial evaluation of distributed execution indexing, a technique for microservice applications that precisely identifies dynamic instances of inter-service remote procedure calls (RPCs). Such an indexing scheme is critical for request-level fault injection techniques, which aim to automatically find failure-handling bugs in microservice applications.Distributed execution indexes enable granular specification of request-level faults, while also establishing a correspondence between inter-service RPCs across multiple executions, as is required to perform a systematic search of the fault space.In this paper, we formally define the general concept of a distributed execution index, which can be parameterized on different ways of identifying an RPC in a single service. We identify an instantiation that maintains precision in the presence of a variety of program structure complexities such as loops, function indirection, and concurrency with scheduling nondeterminism. We demonstrate that this particular instantiation addresses gaps in the state-of-the-art in request-level fault injection and show that they are all special cases of distributed execution indexing. We discuss the implementation challenges and provide an implementation of distributed execution indexing as an extension of \Filibuster{}, a resilience testing tool for microservice applications for the Java programming language, which supports fault injection for gRPC and HTTP.
翻译:这份在建工作报告介绍了对分布式执行指数的设计和部分评价,这是一种用于微观服务应用的技术,精确地查明服务间远程程序呼叫(RPC)的动态实例。这种指数化办法对于请求级过失注射技术至关重要,目的是自动发现微观服务应用程序中的故障处理错误。 分布式执行指数有助于对请求级过失进行颗粒性说明,同时根据对请求级错误的系统搜索的要求,在多个处决中建立服务性区域控制中心之间的对应关系。 在本文件中,我们正式界定了分布式执行指数的一般概念,该指标可以以在单一服务中确定一个RPC的不同方式作为参数。我们确定了一种即时性,在存在诸如循环、功能间接和与不确定性时间安排等各种方案结构复杂性的情况下,这种即时性能够保持精确性。我们表明,这种特定即时化能够解决请求级错误注入中的最新技术方面的差距,并表明它们都是分布式执行指数的特例。我们讨论了实施挑战,并且提供了在单一服务中进行分配式执行指数化的系统化工具的应用。