ݺߣ

ݺߣShare a Scribd company logo
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
• остальные пока опасаются
Спасибо!
Вопросы?
Вопросы?
Но лучше не надо, я нервничаю :)

More Related Content

«Нужно больше шин! Eventbus based framework vertx.io»