@enfyra/ 内核
Enfyra内核运行时包.
动态背景
孤立的执行器快照可复制 $ctx 自动键入沙盒。 运行时平台可以在不改变内核的情况下从自己的上下文厂中暴露出新的数据字段,同时保护运行时能力,例如 $helpers, (中文(简体) ), $cache, (中文(简体) ), $repos, (中文(简体) ), $socket, (中文(简体) ), $throw, (中文(简体) ), $trigger, (中文(简体) ), $logs, (中文(简体) ), $req,以及 $res 保持内核管理. $env 当主机应用程序提供时, 沙盒内可读取, 但沙盒变异到 $env 不合并为主机上下文.
使用
import { createEnfyraKernel } from '@enfyra/kernel';
const kernel = createEnfyraKernel({
knexService,
mongoService,
databaseConfigService,
runtimeMetricsCollectorService,
lazyRef,
getPackageCacheService: () => packageCacheService,
getPackageCdnLoaderService: () => packageCdnLoaderService,
});
container.register({
queryBuilderService: asValue(kernel.queryBuilderService),
isolatedExecutorService: asValue(kernel.isolatedExecutorService),
executorEngineService: asValue(kernel.executorEngineService),
});
执行者能力
每个运行程序执行多个独立任务拥有 ivm.Isolate
实例,最多 isolatesPerWorker。每次执行都会形成自己的孤立
上下文直接显示在发送时,没有闲置的隔离储备池。 完成
或取消只处理此任务的隔离; 其他
任务在工人持续运行。 一批的钩子和处理器 分享该批的
隔离 没有共享道或多任务堆积.
使用有效的 CPU 和容器选择最多两个运行程序 记忆。 接纳能力和隔离堆积的限制是独立的政策. 招生使用25%的内存规划预算,40–128 MiB规划单元,CPU 基线/灵活单位计数,每个单位6个独立执行档. 这是能力算术,不是共享隔离或通道:每个被认可的任务 仍然拥有它的隔离。 2个基B以下,每名跑者使用一个单元 剖面图为每跑者128个单元。 14个 CPU / 36 GiB 简介 允许 每名工人有216个任务隔离,或总共432个.
每个隔离点的原生堆积极限是有效内存除以32,并有一个 40 MiB 最低且没有固定的 MB 上限. 限制不是预先分配的内存,而且 它们的总和可能超过物理记忆。 父母采用RSS后压; 运行, packet- child, IPC 和主机内存仍然处于隔离堆积限制之外. 大型同时进行的任务仍然可以耗尽真实的内存,因此基准 目标硬件的预期有效载荷和货币.
computeEngineTuning({ logicalCpuCount, totalMemoryBytes, maxIsolatesPerWorker })
能够降低每个工人拥有主机配置的能力。 自定义执行器
tuning 包含 maxConcurrentWorkers, (中文(简体) ), isolatesPerWorker,以及
isolateMemoryLimitMb。排队任务仅在前期任务解除后开始
隔离能力. $body 和准确的 $req.rawBody 继续提供.
运行 yarn test:executor-isolates 能力与故障控制。 从不
在模糊隔离或跑道丢失后自动重放任务.