Как стать автором
Обновить

Vert.x — асинхронный, event-driven фреймворк, созданный под влиянием node.js. Часть 1

Время на прочтение2 мин
Количество просмотров35K
Всем привет!
На данный момент очень трендово использовать node.js. Однако не всем он нравится. В данном обзоре, я бы хотел рассказать немного о конкуренте, который был написан под влиянием node.js
Vert.x это асинхронный, event-driven фреймворк, цели которого пересекаются с популярным node.js. Высокая производительность, простая асинхронность и конфигурирование — это все по vert.x.
Первая версия фрейворка, была выпущена в 2012 году, в то время как node.js был выпущен в 2009. Однако, уже поддерживается VMware и может запускаться на CloudFoundry.
Основные характеристики продукта под катом:

  • Мульти-язычный. Вы можете использовать JavaScript, Ruby, Groovy, Java,Python. Практически готова поддержка Scala and Closure
  • opensource. лицензия ASL 2.0
  • настоящий параллелизм, и высокая производительность
  • написан на java, и использует все прелести JVM, масштабируясь легко между ядрами, без необходимости заботиться об межпроцессорном взаимодействии
  • Использует Hazelcast — In-Memory Data Grid систему. Прозрачно для пользователя, естественно
  • Использует Netty
  • Супер простая модель параллелизма. Никаких synchronized or volatile, или явных блокировок
  • Никакой лапши xml конфигов. Все предельно просто
  • Модульная система, с общедоступным репозиторием
  • Распределенная шина сообщений, которая охватывает и сервер и клиент.
  • Доступна встраиваемая версия
  • По различным тестам, едва ли не самый производительный фреймворк, в своем классе
  • Требует JDK 1.7
  • WebSockets,SockJS поддержка

Интересно? Пример rest helloworld на scala:

class SampleResticle extends Resticle
{
override def handles =
{ GET("/hello")      :>  OK( _ => "world ") }
}


или же более простой пример сервера, обслуживающий webroot директорию. Пример на Groovy:
vertx.createHttpServer().requestHandler { req ->
    def file = req.uri == "/" ? "index.html" : req.uri
    req.response.sendFile "webroot/$file"
}.listen(8080)

Для того что бы запустить к примеру последний хеловорлд, вам необходимо выполнить:
vertx run Server.groovy -instances 32

Как видите все предельно просто и ясно.

Посмотрев примеры кода, и почитав принципы, я естественно решил проверить заявление авторов о супер производительности.Искал сравнения с node.js.
Первый график показывает результаты теста когда отдается только 200/ОК респонс

Второй тест отдает 72-байтную html страницу:

тесты взяты отсюда. Данные тесты проводились относительно давно. У меня готовы материалы более детального тестирования. Расскажу о нем в третьей части.
К сожалению данные тесты не содержат scala-тесты. Как известно, scala во многих случаях, оказывается быстрее java.
Пожалуй, для пятничного поста, этого достаточно. В следующей части расскажу об основных принципах и патернах используемых в vert.x.
Cайт проекта. По ссылке отличная документация.
Теги:
Хабы:
Всего голосов 36: ↑26 и ↓10+16
Комментарии25

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн