2014-05-29 4 views
22

В течение последних нескольких дней я читал документы vert.x. Я знаю, что vert.x - это полиглот, однопоточный, неблокирующий IO, модульная архитектура, высокая масштабируемость.Tomcat vs Vert.x

Существуют ли другие основные отличия между tomcat и vert.x?

Также, когда мы должны использовать tomcat и когда использовать vert.x?

ответ

29

Tomcat - это контейнер сервлетов, поэтому он предлагает платформу, которая поможет вам разрабатывать и развертывать приложения на основе HTTP, такие как веб-сайты или веб-службы.

Vert.x вместо этого помогает вам разрабатывать и развертывать любые асинхронные приложения. Это правда, что современные версии Tomcat поддерживает асинхронные сервлеты, но Vert.x поставляется с гораздо большим количеством удобных для пользователя асинхронных API, плюс другой благости:

  • Полный Filesystem асинхронный API
  • TCP (сервер и клиент)
  • UDP (сервер и клиент)
  • HTTP (S) (сервер и клиент)
  • Общая услуга передачи данных (доля объектов между модулями разноязычных)
  • HA и кластеризация
  • Кластера сообщений (цикл событий)
  • Event шинный мост (продление цикла событий для браузеров через SockJS)
  • Растущий экосистема модулей Vert.x
  • Возможность встроить Vert.x в наследство КОДИРУЙТЕ
  • Используя существующую богатую и твердую экосистему Java библиотек (Vert.x работает на JVM, в отличие от Node.js)

Лично я думаю, что обучение Vert.x очень полезно. На работе я снова использовал те же знания с большим успехом, чтобы реализовать три совершенно разных продукта: сверхбыстрый Redis-прокси с нулевой копией, API REST с поддержкой JPA и реактивное одностраничное веб-приложение.

Взгляните на example code, это довольно прямолинейно, а шаблонный шаблон близок к нулю.

Еще одна вещь: где вы читали Vert.x однопоточное? Неправда! Vert.x имеет очень neat concurrency model, который гарантирует, что все ядра одинаково используются (опять же, в отличие от Node.js).

Наслаждайтесь!

+0

Re "_where, где вы читали Vert.x, однопоточно? _", Wikipedia (https://en.wikipedia.org/wiki/Vert.x) гласит, что этот код "_All является однопоточным, освобождая от хлопот многопоточного программирования ». Возможно, я что-то пропустил, но это не похоже на то, что вы сказали в своем ответе, или с описанием шаблона Multi-Reactor Vert.x, с которым вы связались. Википедия неверна, или их описание относится к чему-то еще целиком? – skomisa

+0

«весь код однопоточный» означает, что одновременно не выполняется никакая вертикаль.Но у вас много вершин в одном приложении, и много потоков в Vert.x. Модель параллелизма не очень далека от шаблона Actor, который вы найдете в Akka и Erlang. – sscarduzio