

# Lambda 托管实例运行时
<a name="lambda-managed-instances-runtimes"></a>

使用 Lambda 托管实例时，Lambda 处理请求的方式有所不同。与在每个执行环境中依次处理请求不同，Lambda 托管实例会在每个执行环境中同时处理多个请求。执行模型的这一变化意味着使用 Lambda 托管实例的函数需要考虑线程安全、状态管理和上下文隔离等问题，而这些在 Lambda（默认）单并发模式中是不存在的。此外，不同运行时中的多并发实施方式各有不同。

## 支持的语言
<a name="lambda-managed-instances-supported-runtimes"></a>

Lambda 托管实例可以与以下编程语言和运行时一起使用：
+ **Java：**Java 21 及更高版本。
+ **Python：**Python 3.13 及更高版本。
+ **Node.js：**Node.js 22 及更高版本。
+ **.NET：**.NET 8 及更高版本。
+ **Rust：**支持使用仅限操作系统的运行时 `provided.al2023` 及更高版本。

## 服务特定注意事项
<a name="lambda-managed-instances-runtime-considerations"></a>

每种编程语言实现多并发的方式不同。您需要了解如何使用所选编程语言实施多并发，以便应用相应的并发最佳实践。

**Java**

采用单一进程并结合操作系统线程来实现并发。多个线程会同时执行处理程序方法，因此需要对状态和共享资源进行线程安全的处理。

**Python**

使用多个 Python 进程，在这些进程中，每个并发请求都在单独的进程中运行。这能有效避免大多数并发问题，但对于 `/tmp` 目录这类共享资源则仍需要小心处理。

**Node.js**

使用具有异步执行功能的[工作线程](https://nodejs.org/api/worker_threads.html)。并发请求分布在工作线程中，而每个工作线程还可以异步处理并发请求，这就需要对状态和共享资源进行安全的处理。

**.NET**

使用 .NET 任务实现对多个并发请求的异步处理。需要对状态和共享资源进行安全处理。

**Rust**

使用由 [Tokio](https://tokio.rs/) 支持的带有异步任务的单一进程。处理程序必须是 `Clone` \+ `Send`。

## 后续步骤
<a name="lambda-managed-instances-runtime-next-steps"></a>

有关每个运行时的详细信息，请参阅以下主题：
+ [Lambda 托管实例的 Java 运行时](lambda-managed-instances-java-runtime.md)
+ [Lambda 托管实例的 Node.js 运行时](lambda-managed-instances-nodejs-runtime.md)
+ [Lambda 托管实例的 Python 运行时](lambda-managed-instances-python-runtime.md)
+ [Lambda 托管实例的 .NET 运行时](lambda-managed-instances-dotnet-runtime.md)
+ [Rust 对 Lambda 托管实例的支持](lambda-managed-instances-rust.md)