Миллионы котировок в секунду на чистой Java
Написание программного обеспечения, работающего под большими нагрузками и обрабатывающего большие объемы данных, - это искусство, требующее настоящего умения, независимо от выбранного для реализации языка программирования. Большая часть техник и подходов, используемых в современном HighLoad, следует из здравого смысла и глубокого понимания архитектуры современных серверов.
Платформа Java имеет массу особенностей, которые, с одной стороны, делают её идеальным выбором для создания больших и сложных систем, но, с другой стороны, заставляют искать специфические подходы и шаблоны для написания высокопроизводительного кода. Этот доклад посвящён выделению объектов и сборке мусора, структурам данных и особенностям объектной модели Java, преимуществам и недостаткам компиляции машинного кода «на лету» - в общем, всему тому, чего нет в языках низках уровня типа C и C и что необходимо понимать и учитывать при реализации высоконагруженных систем на Java.
Доклад сделан на основе опыта, который был накоплен при создании и поддержки компанией Devexperts сервиса доставки рыночных данных в режиме реального времени под торговой маркой dxFeed. Помимо прочего, dxFeed является поставщиком данных от OPRA , обработка потоков данных которой потребует пропускную способность более 12М сообщений в секунду, при входящем потоке данных более 3Gbps уже к июлю этого года.
В тоже время, сервис dxFeed ориентирован на крупные финансовые компании, большая часть инфраструктуры которых обычно написана на языке Java. Поставщик данных, который на 100% использует технологии Java на всем пути их получения, нормализации, обработки, и доставки конечным клиентам, является наиболее подходящим для таких компаний в технологическом плане, при условии что выполняются все функциональные и нефункциональные требования.
Важной частью любого технологического решения является стоимость его создания и поддержи. Без учета этих факторов просто невозможно осознанно говорить о выборе той или иной технологии, о том или ином подходе, шаблоне и т.п. в рамках выбранной технологии. Безусловно, наибольшую пропускную способность и наименьшие задержки для любой задачи обработки данных можно обеспечить написав весь код в машинных кодах на ассемблере или, еще лучше, разработав специальный чип, решающий поставленную задачу на аппаратном уровне. Такого рода решения не обсуждаются в этом докладе.
Доклад сконцентрирован на тех решениях и подходах, которые, исходя из реального опыта, позволяют достичь разумный компромисс между производительностью и сложностью, что во многом и обуславливает выбор платформы Java. Реальное сравнение с классическими поставщиками данных, имеющих десятилетнюю историю развития и поддержки своего программного обеспечения на языках низкого уровня, показывает что особенности Java не являются препятствием к созданию высокопроизводительных систем обработки данных, а скорее наоборот, позволяют догнать и обогнать конкурентов за счет наличия большего инструментария, увеличения продуктивности работы программистов, и упрощения отладки и поддержки.
АвторРоман Елизаров
ОрганизаторСообщество JUG.ru
Лекции курса
22- Introduction to Vaadin 7Sami Ekblad
- Creating reusable web componentsSami Ekblad
- Миллионы котировок в секунду на чистой Java▶ Вы тут
- Чем хорош язык ScalaПавел Фатин
- Язык Scala и поддержка Scala в IntelliJ IDEAАлександр Подхалюзин
- Play Framework 2.0 в IntelliJ IDEAДмитрий Найданов
- Как нам спасти Java? Часть 1Антон Кекс
- Как нам спасти Java? Часть 2Антон Кекс
- Динамическая (JIT) компиляция в JVMВладимир Иванов
- Новинки в java.util.concurrentДмитрий Чуйко
- Java: High-level overviewGeorges Saab
- ForkJoinPool в Java 8Алексей Шипилёв
Показать все 22 лекции
- Проект OpenJDKАртём Ананьев
- Разработка модулярного софта — добро пожаловать в АД!Барух Садогурский
- Bintray: Масштабируемый сервис в облаке с нуляБарух Садогурский
- Power of GradleЕвгений Борисов
- eXtreme Application Platform (XAP)Евгений Борисов
- Excelsior JET: обзор возможностейНикита Липский, Павел Павлов
- Excelsior JET: внутренняя архитектураНикита Липский, Павел Павлов
- Разработка совместимого API: гений без злодействаМихаил Ершов
- Часть 1. Как и зачем эмулировать распределённый кластер в JVMАлексей Рагозин
- Часть 2. Сеть — это большая JVMАлексей Рагозин
Онлайн-курсы по программированию
3
Машинное обучение для анализа текстов
От бизнес-идеи к ее реализации: учимся инновационному предпринимательству с нуля.
С платными опциями

Разработка игры-платформера на Defold: базовый уровень
Создайте свой первый платформер с нуля! За 7 недель вы не просто освоите движок Defold, а пройдете весь путь геймдев-разработчика: от кода и анимаций до дизайна и сюжета.
Бесплатный

Python для начинающих
Курс посвящен основам программирования на языке Python — одном из самых популярных и понятных языков, идеально подходящих для первого знакомства с IT.
Бесплатный
