Знакомство с сервером приложений Wolfram

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2021-05-15 21:57

ИИ проекты

Wolfram Application Server –это новая платформа, разработанная компанией Wolfram Research, позволяющая клиентам развертывать API и веб-страницы на основе языка Wolfram в масштабируемом, высокодоступном корпоративном кластере.

Wolfram Application Server позволяет вам:

  • управляйте обменом данными в ваших развертываниях с помощью надежной платформы внешних служб.
  • создавайте приложения с использованием системы Wolfram Natural Language Understanding (NLU), ключевой технологии семантической интерпретации, лежащей в основе Wolfram|Alpha и Wolfram Language.
  • создавайте контент на основе времени и местоположения, назначайте пользовательские конечные точки и интегрируйте кураторский контент из базы знаний Wolfram.

Мы разработали Wolfram Application Server для клиентов, которые по нормативным соображениям, соображениям безопасности или бизнесу могут не захотеть развертываться в Wolfram Cloud, но предпочитают размещать свои приложения Wolfram Language в кластерах, которые они контролируют.

Представляем Wolfram Application Server

Wolfram Application Server плотно фокусируется на веб-приложениях без состояния , построенных на таких функциях , как APIFunction, FormFunction и HttpResponse, избегая интерактивности онлайн-ноутбуков и управления сеансами пользователей. (Если эти функции важны для вас, то рассмотрите Wolfram Enterprise Private Cloud.) Компоненты сервера приложений Wolfram встроены в контейнеры (Docker) и интегрированы с Kubernetes это самая популярная система управления контейнерами, обеспечивающая максимальную гибкость развертывания в вашем кластере с использованием как собственного оборудования, так и стороннего облачного провайдера. Это делает Wolfram Application Server идеальной платформой для развертывания корпоративных приложений,построенных на языке Wolfram Language и Wolfram technologies.

Как Это Работает

Wolfram Application Server построен на основе микросервисов, которые позволяют легко развертывать и размещать приложения на основе языка Wolfram. Служба Active Web Elements Server (AWES) отвечает за обработку запросов конечных пользователей. Каждый экземпляр AWES управляет пулом двигателей Wolfram это обрабатывает вычисления, необходимые вашим API языка Wolfram. AWES использует те же технологии для доставки контента на языке Wolfram, который поддерживает такие сайты, как Wolfram|Alpha. Ваш кластер Kubernetes может быть сконфигурирован для динамического управления экземплярами AWES для удовлетворения нагрузки пользователей и обеспечения постоянной доступности ваших приложений.

Для поддержки прозрачного развертывания приложений на сервере приложений Wolfram предусмотрена пара дополнительных сервисов: Диспетчер ресурсов и Диспетчер конечных точек. Любой контент, к которому должен получить доступ конечный пользователь, развертывается как ресурс через Диспетчер ресурсов. Менеджер ресурсов хранит загруженный контент в постоянном хранилище и обновляет любые экземпляры AWES информацией о ресурсе, которая может быть извлечена по мере необходимости в ответ на запросы пользователей.

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

Диспетчер конечных точек создает, изменяет и удаляет конечные точки. Отделяя ресурс от конечной точки пользователя, разработчики Wolfram Application Server получают дополнительную гибкость в представлении контента пользователям. Например, использование конечных точек позволяет легко поддерживать и переключаться между версиями приложения для A/B-тестирования или быстро отменять обновление в случае появления ошибки.

Wolfram Application Server также предлагает сервис для развертывания файлов непосредственно в локальной файловой системе всех серверов кластера: Node Files Manager. Как правило, эти файлы узлов представляют собой файлы конфигурации и пакеты для механизма Wolfram Engine для поддержки развернутых ресурсов. Механизм Wolfram обращается к локальной файловой системе для чтения этих типов файлов, поэтому они должны существовать там, в отличие от файлов ресурсов, которые могут быть или не быть кэшированы локально. Другие типы файлов, обычно распространяемые как файлы узлов, могут включать скомпилированные исполняемые файлы и библиотеки, которые могут быть вызваны или загружены механизмом Wolfram Engine. Файлы узлов недоступны конечному пользователю и не могут быть переданы конечной точкой. Они предназначены для внутреннего использования только двигателем Wolfram.

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

Служба хранения обеспечивает сохраняемость и единый источник истинности (SSOT) для всех развернутых ресурсов. Для кластеров, построенных в облаке, хранилище будет либо собственным хранилищем объектов Amazon, либо хранилищем объектов Microsoft. Для кластеров, построенных на вашем собственном оборудовании, предоставляется дополнительное приложение.

Потоковая служба обеспечивает связь между различными экземплярами служб в кластере и необходима для поддержания существующих экземпляров в синхронизации с состоянием кластера (например, существующие ресурсы и конечные точки) и для подготовки новых экземпляров, когда они появляются (например, когда добавляется новый AWES для обработки избыточной нагрузки).

Пример Развертывания

Все службы, рассмотренные в предыдущем разделе, доступны через документированные API передачи репрезентативного состояния (REST), но мы также можем получить доступ к этим службам через язык Wolfram. Мы создали полный набор инструментов, упакованных в паклет Wolfram Application Server для управления развертываниями с помощью нашей сервисной платформы. Установите паклет, оценив:

PacletInstall["WolframApplicationServer"]
&#10005
PacletInstall["WolframApplicationServer"]

Затем загрузите пакет Wolfram Application Server:

Get["WolframApplicationServer`"]
&#10005
Get["WolframApplicationServer`"]

Теперь мы можем подключиться к кластеру серверов приложений Wolfram:

was = ServiceConnect["WolframApplicationServer", "https://test.applicationserver.wolfram.com"]
&#10005
was = ServiceConnect["WolframApplicationServer",    "https://test.applicationserver.wolfram.com"]

Создание развертывания - это простой вопрос использования ServiceDeploy для развертывания ресурса и создания конечной точки. Обратите внимание, что мы используем запись "Содержание", чтобы предоставить языку Wolfram то, что мы хотим оценить (в данном случае APIFunction); запись "Ресурс", чтобы дать путь к ресурсу, который предназначен для внутреннего использования; и запись "Конечная точка", чтобы дать открытый путь к ресурсу:

deployment = ServiceDeploy[ was, <|"Contents" -> APIFunction[{"name"}, StringJoin[{"Hello ", #name, "!"}] &], "Ресурс" -<|"Содержимое" ->> "пример/hello.wl", "Конечная точка" -<|"Содержимое" ->>> "пример/hello"|<|"Содержимое" - >>> > ]
&#10005
deployment =   ServiceDeploy[   was, <|"Contents" ->      APIFunction[{"name"}, StringJoin[{"Hello ", #name, "!"}] &],     "Resource" -> "example/hello.wl", "Endpoint" -> "example/hello"|>]

Вот полная информация о развертывании, которое мы только что создали:

Информация[развертывание]
&#10005
Information[deployment]

Теперь мы можем получить доступ к развернутому веб-приложению:

URLRead[URL[ "https://test.applicationserver.wolfram.com/example/hello?name=world"], {"StatusCode", "Body"}]
&#10005
URLRead[URL[   "https://test.applicationserver.wolfram.com/example/hello?name=world"], {"StatusCode", "Body"}]

Мы можем проверять и управлять частями развертывания с помощью более подробного API, предоставляемого службой Wolfram Application Server. Например, мы можем вернуть содержимое развернутого ресурса:

был ["ResourceContents", <|"Resource" -> "example/hello.wl"|<|"Resource" ->>]
&#10005
was["ResourceContents", <|"Resource" -> "example/hello.wl"|>]

Если мы хотим, чтобы наш ресурс был доступен по альтернативному пути, мы можем развернуть вторую конечную точку, которая указывает на тот же ресурс:

was["DeployEndpoint", <|"Endpoint" -> "example/hi", "Resource" -<|"Endpoint" ->> "example/hello.wl"|<|"Endpoint" ->>>]

&#10005

was["DeployEndpoint", <|"Endpoint" -> "example/hi",    "Resource" -> "example/hello.wl"|>]
URLRead[URL[ "https://test.applicationserver.wolfram.com/example/hi?name=world"], {"StatusCode", "Body"}]
&#10005
URLRead[URL[   "https://test.applicationserver.wolfram.com/example/hi?name=world"],  {"StatusCode", "Body"}]

Мы могли бы предпочесть, чтобы эта версия была немного более неформальной. Для этого мы можем развернуть новый ресурс:

was["DeployResource", <|"Resource" -> "example/hi.wl", "Contents" -<|"Resource" ->> APIFunction[{"name"}, StringJoin[{"Hi ", #name, "!"}] &]|<|"Ресурс" ->>>]
&#10005
was["DeployResource", <|"Resource" -> "example/hi.wl",    "Contents" ->     APIFunction[{"name"}, StringJoin[{"Hi ", #name, "!"}] &]|>]

Затем обновите конечную точку:

was["DeployEndpoint", <|"Endpoint" -> "example/hi", "Resource" -<|"Endpoint" ->> "example/hi.wl"|<|"Endpoint" ->>>]
&#10005
was["DeployEndpoint", <|"Endpoint" -> "example/hi",    "Resource" -> "example/hi.wl"|>]

Теперь попробуем еще раз:

URLRead[URL[ "https://test.applicationserver.wolfram.com/example/hi?name=world"], {"StatusCode", "Body"}]
&#10005
URLRead[URL[   "https://test.applicationserver.wolfram.com/example/hi?name=world"],  {"StatusCode", "Body"}]

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

был["DeleteEndpoint", <|"Endpoint" -> "example/hello"|<|"Endpoint" ->>]; был["DeleteEndpoint", <|"Endpoint" ->><|"Endpoint" - > > "example/hi"|<|"Endpoint" ->>]; был["DeleteResource", <|"Endpoint"- > > <|"Resource" - > > "example/hello.wl"|<|"Resource" ->>]; был["DeleteResource", <|"Resource"- > ><|"Resource" - >"example/hi.wl"|<|"Resource" - > > ]

Источник: blog.wolfram.com

Комментарии: