Первый взгляд: wasmCloud и Cosmonic

автор red


Как вы, вероятно, уже знаете, WebAssembly, или wasm, — это эффективный, кросс-платформенный и кросс-языковой способ запуска кода практически в любом месте, в том числе в браузере и на сервере — даже в базе данных. Cosmonic — это коммерческая платформа как услуга (PaaS) для модулей wasm. Он основан на wasmCloud с открытым исходным кодом. Эта предварительная версия технологии начинается с краткого обзора wasm, затем мы настроим wasmCloud и Cosmonic и посмотрим, что мы можем с ними сделать.

Что такое васм?

WebAssembly (wasm) — это «двоичный формат инструкций для виртуальной машины на основе стека». Это переносимая цель компиляции для языков программирования, включая C, C++, C#, Rust, Go, Java, PHP, Ruby, Swift, Python, Kotlin, Haskell и Lua; Rust часто является предпочтительным языком для wasm. Существует три языка, специфичных для wasm: AssemblyScript, Grain и Motoko. Целями Wasm являются браузеры (в настоящее время Chrome, Firefox, Safari и Edge), Node.js, Deno, Wasmtime, Wasmer и wasm2c.

Wasm пытается работать на исходной скорости в небольшом объеме памяти. Он работает в безопасной для памяти изолированной среде выполнения даже в Интернете.

Системный интерфейс WebAssembly (WASI) — это модульный системный интерфейс для WebAssembly. У Wasm есть компонентная модель со спецификацией, предложенной W3C. WebAssembly Gateway Interface (Wagi) — это предлагаемая реализация CGI для wasm и WASI. Spin — это многоязычный фреймворк для wasm-приложений.

Что такое wasmCloud?

wasmCloud — это принадлежащая CNCF программная платформа с открытым исходным кодом, которая использует wasm и NATS для создания распределенных приложений, состоящих из переносимых единиц бизнес-логики WebAssembly, называемых актеры. wasmCloud поддерживает TinyGo и Rust для разработки акторов. Он также поддерживает строительство платформы, которые являются поставщиками возможностей. wasmCloud включает в себя решетка, самоформирующаяся, самовосстанавливающаяся ячеистая сеть, использующая NATS, которая обеспечивает унифицированную, плоскую топологию. wasmCloud работает практически везде: в облаке, на периферии, в браузере, на небольших устройствах и так далее. Среда выполнения хоста wasmCloud использует Elixir/OTP и Rust.

Многие коммиттеры и сопровождающие wasmCloud работают на Cosmonic (компанию). Кроме того, wasmCloud wash облачная оболочка работает с Cosmonic (продукт).

Что такое Космоник?

Cosmonic — это и компания, и продукт. Продукт представляет собой платформу WebAssembly как услугу (PaaS), основанную на wasmCloud и использующую участников wasm. Cosmonic предлагает графический облачный пользовательский интерфейс для разработки приложений и собственную оболочку, cosmoчто дополняет wash и графический интерфейс wasmCloud. Предположительно, все, что вы создаете и работает в обычном wasmCloud, должно автоматически работать в Cosmonic.

А хозяин — это распределенный процесс времени выполнения wasmCloud, который управляет субъектами и поставщиками возможностей. Ан актер — это модуль WebAssembly, который может обрабатывать сообщения и вызывать функции поставщиков возможностей. А способность является абстракцией или представлением некоторых функций, требуемых вашим приложением, которые не считаются частью основной бизнес-логики. А поставщик возможностей является реализацией представления, описанного контрактом возможностей. Для каждой возможности может быть несколько поставщиков с разными характеристиками.

А связь — это определяемое во время выполнения соединение между субъектом и поставщиком возможностей. Ссылки могут быть изменены без необходимости повторного развертывания или повторной компиляции.

А созвездие представляет собой управляемое изолированное сетевое пространство, которое позволяет вашим участникам и поставщикам безопасно общаться друг с другом независимо от физического или логического местоположения; по сути, решетка wasmCloud, управляемая Cosmonic. А супер созвездие представляет собой более крупное созвездие, образованное путем надежного соединения нескольких сред через Cosmonic.

А червоточина является точкой входа в ваше созвездие. Ан Распределение ОСИ — это стандарт хранения, извлечения и распространения артефактов, реализуемый (например) Реестром контейнеров Azure и реестром артефактов GitHub.

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

Установка и тестирование wasmCloud

Установка wasmCloud зависит от вашей системы. я использовал brew на моем M1 MacBook Pro; он установил больше, чем я хотел, из-за зависимостей, в частности, компилятора Rust и диспетчера грузовых пакетов, которые я предпочитаю устанавливать с веб-сайта языка Rust, используя rustup. К счастью, простой brew uninstall rust расчистил путь для стандарта rustup монтаж. Пока я устанавливал языки, я также установил TinyGo, другой язык, поддерживаемый для разработки акторов wasmCloud.

После установки я спросил wash shell, чтобы рассказать мне о его возможностях:


martinheller@Martins-M1-MBP ~ % wash --help
_________________________________________________________________________________
                               _____ _                 _    _____ _          _ _
                              / ____| |               | |  / ____| |        | | |
 __      ____ _ ___ _ __ ___ | |    | | ___  _   _  __| | | (___ | |__   ___| | |
 \ \ /\ / / _` / __| '_ ` _ \| |    | |/ _ \| | | |/ _` |  \___ \| '_ \ / _ \ | |
  \ V  V / (_| \__ \ | | | | | |____| | (_) | |_| | (_| |  ____) | | | |  __/ | |
   \_/\_/ \__,_|___/_| |_| |_|\_____|_|\___/ \__,_|\__,_| |_____/|_| |_|\___|_|_|
_________________________________________________________________________________

A single CLI to handle all of your wasmCloud tooling needs


Usage: wash [OPTIONS] <COMMAND>

Commands:
  app       Manage declarative applications and deployments (wadm) (experimental)
  build     Build (and sign) a wasmCloud actor, provider, or interface
  call      Invoke a wasmCloud actor
  claims    Generate and manage JWTs for wasmCloud actors
  ctl       Interact with a wasmCloud control interface
  ctx       Manage wasmCloud host configuration contexts
  down      Tear down a wasmCloud environment launched with wash up
  drain     Manage contents of local wasmCloud caches
  gen       Generate code from smithy IDL files
  keys      Utilities for generating and managing keys
  lint      Perform lint checks on smithy models
  new       Create a new project from template
  par       Create, inspect, and modify capability provider archive files
  reg       Interact with OCI compliant registries
  up        Bootstrap a wasmCloud environment
  validate  Perform validation checks on smithy models
  help      Print this message or the help of the given subcommand(s)

Options:
  -o, --output <OUTPUT>  Specify output format (text or json) [default: text]
  -h, --help             Print help information
  -V, --version          Print version information

Затем я убедился, что могу вызвать wasmCloud:


martinheller@Martins-M1-MBP ~ % wash up
🏃 Running in interactive mode, your host is running at http://localhost:4000
🚪 Press `CTRL+c` at any time to exit
17:00:20.343 [info] Wrote configuration file host_config.json
17:00:20.344 [info] Wrote configuration file /Users/martinheller/.wash/host_config.json
17:00:20.344 [info] Connecting to control interface NATS without authentication
17:00:20.344 [info] Connecting to lattice rpc NATS without authentication
17:00:20.346 [info] Host NCZVXJWZAKMJVVBLGHTPEOVZFV4AW5VOKXMD7GWZ5OSF5YF2ECRZGXXH (gray-dawn-8348) started.
17:00:20.346 [info] Host issuer public key: CCXQKGKOAAVXUQ7MT2TQ57J4DBH67RURBKT6KEZVOHHZYPJKU6EOC3VZ
17:00:20.346 [info] Valid cluster signers: CCXQKGKOAAVXUQ7MT2TQ57J4DBH67RURBKT6KEZVOHHZYPJKU6EOC3VZ
17:00:20.351 [info] Started wasmCloud OTP Host Runtime
17:00:20.356 [info] Running WasmcloudHostWeb.Endpoint with cowboy 2.9.0 at 0.0.0.0:4000 (http)
17:00:20.357 [info] Access WasmcloudHostWeb.Endpoint at http://localhost:4000
17:00:20.453 [info] Lattice cache stream created or verified as existing (0 consumers).
17:00:20.453 [info] Attempting to create ephemeral consumer (cache loader)
17:00:20.455 [info] Created ephemeral consumer for lattice cache loader

Пока у меня был запущен wasmCloud, я просматривал веб-сайт через порт 4000 на своей локальной машине:

локальная панель управления wasmCloud IDG

Рисунок 1. Локальная панель управления wasmCloud на порту 4000 после запуска wash up. Здесь нет актеров, провайдеров или ссылок.

Затем я остановил wasmCloud:


martinheller@Martins-M1-MBP ~ % wash down

✅ wasmCloud host stopped successfully
✅ NATS server stopped successfully
🛁 wash down completed successfully

Related Posts

Оставить комментарий