Vert.x eventbus-based framework
-
Upload
mikhail-bortnyk -
Category
Engineering
-
view
176 -
download
1
Transcript of Vert.x eventbus-based framework
Vertx.ioНужно больше шин!
Eventbus-based polyglot framework
Михаил Бортник• Ruby developer в R&R Music
Михаил Бортник• Ruby developer в R&R Music
• Веду курсы Ruby в Киеве (http://kottans.org)
Михаил Бортник• Ruby developer в R&R Music
• Веду курсы Ruby в Киеве (http://kottans.org)
• github: @vessi
Михаил Бортник• Ruby developer в R&R Music
• Веду курсы Ruby в Киеве (http://kottans.org)
• github: @vessi
• twitter: @mikhailbortnyk
Немного истории• Vert.x создан в 2011 году
Немного истории• Vert.x создан в 2011 году
• Изначально принадлежал VMWare
Немного истории• Vert.x создан в 2011 году
• Изначально принадлежал VMWare
• В 2013 году перешел под крыло Eclipse
Немного истории• Vert.x создан в 2011 году
• Изначально принадлежал VMWare
• В 2013 году перешел под крыло Eclipse
• Базируется на netty
Немного истории• Vert.x создан в 2011 году
• Изначально принадлежал VMWare
• В 2013 году перешел под крыло Eclipse
• Базируется на netty
• В 2014 году получил “Most innovative Java technology”
Влияние• Много заимствований от node.js
Влияние• Много заимствований от node.js
• Подход происходит из Erlang
Влияние• Много заимствований от node.js
• Подход происходит из Erlang
• Конфигурация и организация кода - от Java
Особенности• Полиглотный
Особенности• Полиглотный
• Простая модель многопоточности
Особенности• Полиглотный
• Простая модель многопоточности
• Легкое масштабирование
Особенности• Полиглотный
• Простая модель многопоточности
• Легкое масштабирование
• Распределенная шина сообщений
Особенности• Полиглотный
• Простая модель многопоточности
• Легкое масштабирование
• Распределенная шина сообщений
• Модульная система
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
ПолиглотностьПоддерживает JVM-based языки
…
Многопоточность• Каждый модуль выполняется как single-
threaded в изолированном окружении
Многопоточность• Каждый модуль выполняется как single-
threaded в изолированном окружении
• Модули выполняются в event loops по количеству ядер
Многопоточность• Каждый модуль выполняется как single-
threaded в изолированном окружении
• Модули выполняются в event loops по количеству ядер
• Отдельные потоки для блокирующих задач
Многопоточность• Каждый модуль выполняется в фиксированном event loop
Многопоточность• Каждый модуль выполняется в фиксированном event loop
Масштабируемость• Основан на hazelcast
Масштабируемость• Основан на hazelcast
• Легкое горизонтальное масштабирование
Масштабируемость• Основан на hazelcast
• Легкое горизонтальное масштабирование
• Работает на всех доступных ядрах
Масштабируемость• Основан на hazelcast
• Легкое горизонтальное масштабирование
• Работает на всех доступных ядрах
• Поддерживает сетевую кластеризацию
Шинная архитектура• Одинаковая шина сообщений для клиента и сервера
Шинная архитектура• Одинаковая шина сообщений для клиента и сервера
• Есть гейты в распространенные очереди (RabbitMQ, ZeroMQ, Beanstalk in progress)
Шинная архитектура• Одинаковая шина сообщений для клиента и сервера
• Есть гейты в распространенные очереди (RabbitMQ, ZeroMQ, Beanstalk in progress)
• Типы работы - pub-sub, point-to-point
Модульная система• Есть репозиторий готовых модулей
Модульная система• Есть репозиторий готовых модулей
• Есть три типа кода: verticles, модули, приложение
Модульная система• Есть репозиторий готовых модулей
• Есть три типа кода: verticles, модули, приложение
• Verticles - просто куски кода
Модульная система• Есть репозиторий готовых модулей
• Есть три типа кода: verticles, модули, приложение
• Verticles - просто куски кода
• Модули - набор verticles
Модульная система• Есть репозиторий готовых модулей
• Есть три типа кода: verticles, модули, приложение
• Verticles - просто куски кода
• Модули - набор verticles
• Приложение - набор модулей
Модульная система
Плюсы• JVM
Плюсы• JVM
• мультиязычность
Плюсы• JVM
• мультиязычность
• легкая масштабируемость
Плюсы• JVM
• мультиязычность
• легкая масштабируемость
• шинная архитектура
Плюсы• JVM
• мультиязычность
• легкая масштабируемость
• шинная архитектура
• real time
Минусы• JVM
Минусы• JVM
• что-нибудь серьезное нужно писать на Java
Минусы• JVM
• что-нибудь серьезное нужно писать на Java
• приложение необходимо “прогревать”
Минусы• JVM
• что-нибудь серьезное нужно писать на Java
• приложение необходимо “прогревать”
• callback hell
Минусы• JVM
• что-нибудь серьезное нужно писать на Java
• приложение необходимо “прогревать”
• callback hell
• ломает мозг
Демо
ДемоНу конечно, Hello world
Где почитать?• http://vertx.io/
Где почитать?• http://vertx.io/
• Real-time Web Application Development using Vert.x 2.0
Где почитать?• http://vertx.io/
• Real-time Web Application Development using Vert.x 2.0
• Гугл-группа https://groups.google.com/forum/#!forum/vertx
Где почитать?• http://vertx.io/
• Real-time Web Application Development using Vert.x 2.0
• Гугл-группа https://groups.google.com/forum/#!forum/vertx
• #vertx на freenode.net
Кто использует?• VMWare
Кто использует?• VMWare
• RedHat
Кто использует?• VMWare
• RedHat
• Peer.im
Кто использует?• VMWare
• RedHat
• Peer.im
• остальные пока опасаются
Спасибо!
Вопросы?
Вопросы?Но лучше не надо, я нервничаю :)