ЛекториумМедиатека
Личный кабинет

Миллионы котировок в секунду на чистой Java

Написание программного обеспечения, работающего под большими нагрузками и обрабатывающего большие объемы данных, - это искусство, требующее настоящего умения, независимо от выбранного для реализации языка программирования. Большая часть техник и подходов, используемых в современном HighLoad, следует из здравого смысла и глубокого понимания архитектуры современных серверов.

Платформа Java имеет массу особенностей, которые, с одной стороны, делают её идеальным выбором для создания больших и сложных систем, но, с другой стороны, заставляют искать специфические подходы и шаблоны для написания высокопроизводительного кода. Этот доклад посвящён выделению объектов и сборке мусора, структурам данных и особенностям объектной модели Java, преимуществам и недостаткам компиляции машинного кода «на лету» - в общем, всему тому, чего нет в языках низках уровня типа C и C и что необходимо понимать и учитывать при реализации высоконагруженных систем на Java.

Доклад сделан на основе опыта, который был накоплен при создании и поддержки компанией Devexperts сервиса доставки рыночных данных в режиме реального времени под торговой маркой dxFeed. Помимо прочего, dxFeed является поставщиком данных от OPRA , обработка потоков данных которой потребует пропускную способность более 12М сообщений в секунду, при входящем потоке данных более 3Gbps уже к июлю этого года.

В тоже время, сервис dxFeed ориентирован на крупные финансовые компании, большая часть инфраструктуры которых обычно написана на языке Java. Поставщик данных, который на 100% использует технологии Java на всем пути их получения, нормализации, обработки, и доставки конечным клиентам, является наиболее подходящим для таких компаний в технологическом плане, при условии что выполняются все функциональные и нефункциональные требования.

Важной частью любого технологического решения является стоимость его создания и поддержи. Без учета этих факторов просто невозможно осознанно говорить о выборе той или иной технологии, о том или ином подходе, шаблоне и т.п. в рамках выбранной технологии. Безусловно, наибольшую пропускную способность и наименьшие задержки для любой задачи обработки данных можно обеспечить написав весь код в машинных кодах на ассемблере или, еще лучше, разработав специальный чип, решающий поставленную задачу на аппаратном уровне. Такого рода решения не обсуждаются в этом докладе.

Доклад сконцентрирован на тех решениях и подходах, которые, исходя из реального опыта, позволяют достичь разумный компромисс между производительностью и сложностью, что во многом и обуславливает выбор платформы Java. Реальное сравнение с классическими поставщиками данных, имеющих десятилетнюю историю развития и поддержки своего программного обеспечения на языках низкого уровня, показывает что особенности Java не являются препятствием к созданию высокопроизводительных систем обработки данных, а скорее наоборот, позволяют догнать и обогнать конкурентов за счет наличия большего инструментария, увеличения продуктивности работы программистов, и упрощения отладки и поддержки.

Информация о встрече

Лекции курса

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

Онлайн-курсы по программированию

3