Как построить свой собственный faas?

Node.js

источник

В последнее время много статей про serverless и faas, и все крупные облачные вендоры их продвигают.Видя что народ чешется, а развитие бизнеса не использует облачные сервисы, а использует внутренние кластеры k8s. Поэтому я решил построить faas самостоятельно. Проще сказать, чем сделать!

На самом деле я уже начал внутренне, мне всегда хотелось писать статьи, беспомощный бизнес слишком занят, я, наконец, закурил.

одно предложение

Как любую функцию сделать интерфейсом

анализировать

Или то ли это функция интерфейса принципиально разобралась, там输入а также输出. Запрос интерфейса используется как ввод функции, а вывод функции используется как возвращаемое значение интерфейса, отлично!

запуск функции

Как работает функция?

К счастью, сам nodejs реализовал свою собственную виртуальную машину, и я очень рад оставить код для запуска виртуальной машины, отлично!

Останавливаться! Как вы думаете, это решает проблему?

Официальный представитель узла четко указал, пожалуйста, не используйтеVMЗапускайте ненадежный код, можно ли доверять коду ваших коллег? Вопрос от шефа.

Я искал в Интернете и нашел эту строку кода, и ваш сервис зависает Как такое возможно?

new vm.Script('this.constructor.constructor("return process")().exit()')

Вера в силу сообщества велика и снова убедиласьVM2, такой же ценный, как и его официальный лозунг

vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules. Securely!

Босс подбежал и спросил, вы верите, что он в безопасности, если он в безопасности? Наткнулся на вопрос глянуть, а потом попробовал.К счастью, сервис в этот раз не завис, но вроде无响应охватывать

const {VM} = require('vm2');
new VM({timeout:1}).run(`
	function main(){
	while(1){}
}

Ведь флаг поставлен, хочешь食盐Все же? Больно от него избавляться.

Безопасность песочницы

В конечном счете песочница небезопасна.Даже ВМ2 не может быть уверена,что она безопасна.Как ее сломать?

Браузер IE часто вылетает, но в Chrome намного лучше, почему? Да, верно, многопроцессорная модель.

Например: процесс как дом, нить как комната, дом горит, а дома нет, а мультипроцесс как дом, если один разрушить, то еще есть где жить.

Наше окончательное решение состоит в том, чтобы поместить пользователя不安全的代码Изолирован в дочернем процессе.

vmboxЭто Process Pool, который самостоятельно реализуется функцией управления, поддерживающими функции, чтобы позвонить друг другу, и идеально решить проблему мертвого велосипеда.

vmboxОткрытый исходный код, вы можете просмотретьследующий пост.

упражняться

Функции, которые в настоящее время реализованы внутри компании