vert.x eventbus-based framework

Post on 16-Jul-2015

169 Views

Category:

Engineering

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

• остальные пока опасаются

Спасибо!

Вопросы?

Вопросы?Но лучше не надо, я нервничаю :)

top related